File: /home/sescorpcl/public_html/wp-content/themes/onepress/assets/frontend/theme.js
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./src/frontend/inc/theme.js"
/*!***********************************!*\
!*** ./src/frontend/inc/theme.js ***!
\***********************************/
() {
var onepressIsMobile = {
Android: function () {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function () {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function () {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function () {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function () {
return navigator.userAgent.match(/IEMobile/i);
},
any: function () {
return onepressIsMobile.Android() || onepressIsMobile.BlackBerry() || onepressIsMobile.iOS() || onepressIsMobile.Opera() || onepressIsMobile.Windows();
}
};
function preload_images(images, complete_callback) {
if (onepress_js_settings.hero_disable_preload) {
if (complete_callback) {
complete_callback();
}
} else {
var id = "_img_loading_" + new Date().getTime();
jQuery("body").append('<div id="' + id + '"></div>');
jQuery.each(images, function (index, src) {
var img = jQuery("<img>");
img.attr("alt", "");
img.attr("class", "image__preload");
img.css("display", "none");
img.attr("src", src);
jQuery("#" + id).append(img);
});
jQuery("#" + id).imagesLoaded(function () {
if (complete_callback) {
complete_callback();
}
setTimeout(function () {
jQuery("#" + id).remove();
}, 5000);
});
}
}
function _to_number(string) {
if (typeof string === "number") {
return string;
}
var n = string.match(/\d+$/);
if (n) {
return parseFloat(n[0]);
} else {
return 0;
}
}
function _to_bool(v) {
if (typeof v === "boolean") {
return v;
}
if (typeof v === "number") {
return v === 0 ? false : true;
}
if (typeof v === "string") {
if (v === "true" || v === "1") {
return true;
} else {
return false;
}
}
return false;
}
/**
* skip-link-focus-fix.js
*
* Helps with accessibility for keyboard only users.
*
* Learn more: https://github.com/Automattic/OnePress/pull/136
*/
(function () {
var is_webkit = navigator.userAgent.toLowerCase().indexOf("webkit") > -1,
is_opera = navigator.userAgent.toLowerCase().indexOf("opera") > -1,
is_ie = navigator.userAgent.toLowerCase().indexOf("msie") > -1;
if ((is_webkit || is_opera || is_ie) && document.getElementById && window.addEventListener) {
window.addEventListener("hashchange", function () {
var id = location.hash.substring(1),
element;
if (!/^[A-z0-9_-]+$/.test(id)) {
return;
}
element = document.getElementById(id);
if (element) {
if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {
element.tabIndex = -1;
}
element.focus();
}
}, false);
}
})();
(function () {
if (onepressIsMobile.any()) {
/**
* https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
*/
// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
let vh = window.innerHeight * 0.01;
let vw = window.innerWidth * 0.01;
// Then we set the value in the --vh, --vw custom property to the root of the document
document.documentElement.style.setProperty("--vh", vh + "px");
document.documentElement.style.setProperty("--vw", vw + "px");
window.addEventListener("resize", function () {
let vh = window.innerHeight * 0.01;
let vw = window.innerWidth * 0.01;
document.documentElement.style.setProperty("--vh", vh + "px");
document.documentElement.style.setProperty("--vw", vw + "px");
});
}
})();
function isElementInViewport(el) {
// Special bonus for those using jQuery
if (typeof jQuery === "function" && el instanceof jQuery) {
el = el[0];
}
var rect = el.getBoundingClientRect();
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) /* or $(window).height() */ && rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */;
}
/**
* Sticky header when scroll.
*/
jQuery(function ($) {
var $window = $(window);
var $document = $(document);
$(document).on("mouseenter resize", ".sub-menu .menu-item-has-children", function () {
var submenuEl = $(this).find(".sub-menu");
if (submenuEl.length > 0 && !isElementInViewport(submenuEl)) {
submenuEl.css({
right: "100%",
left: "auto"
});
}
});
var getAdminBarHeight = function () {
var h = 0;
if ($("#wpadminbar").length) {
if ($("#wpadminbar").css("position") === "fixed") {
h = $("#wpadminbar").height();
}
}
return h;
};
var stickyHeaders = function () {
var $stickies;
var lastScrollTop = 0;
var setData = function (stickies, addWrap) {
var top = 0;
if (typeof addWrap === "undefined") {
addWrap = true;
}
$stickies = stickies.each(function () {
var $thisSticky = $(this);
var p = $thisSticky.parent();
if (!p.hasClass("followWrap")) {
if (addWrap) {
$thisSticky.wrap('<div class="followWrap" />');
}
}
$thisSticky.parent().removeAttr("style");
$thisSticky.parent().height($thisSticky.height());
});
};
var load = function (stickies) {
if (typeof stickies === "object" && stickies instanceof jQuery && stickies.length > 0) {
setData(stickies);
$window.on("scroll", function () {
_whenScrolling();
});
$window.on("resize", function () {
setData(stickies, false);
stickies.each(function () {
$(this).removeClass("fixed").removeAttr("style");
});
_whenScrolling();
});
$document.on("hero_ready", function () {
$(".followWrap").removeAttr("style");
setTimeout(function () {
$(".followWrap").removeAttr("style");
setData(stickies, false);
_whenScrolling();
}, 500);
});
}
};
var _whenScrolling = function () {
var top = 0;
top = getAdminBarHeight();
var scrollTop = $window.scrollTop();
$stickies.each(function (i) {
var $thisSticky = $(this),
$stickyPosition = $thisSticky.parent().offset().top;
if (scrollTop === 0) {
$thisSticky.addClass("no-scroll");
}
if ($stickyPosition - top <= scrollTop) {
if (scrollTop > 0) {
$thisSticky.removeClass("no-scroll");
}
$thisSticky.addClass("header-fixed");
$thisSticky.css("top", top);
} else {
$thisSticky.removeClass("header-fixed").removeAttr("style").addClass("no-scroll");
}
});
};
return {
load: load
};
}();
stickyHeaders.load($("#masthead.is-sticky"));
// When Header Panel rendered by customizer
$document.on("header_view_changed", function () {
stickyHeaders.load($("#masthead.is-sticky"));
});
/*
* Nav Menu & element actions
*
* Smooth scroll for navigation and other elements
*/
var mobile_max_width = 1140; // Media max width for mobile
var main_navigation = jQuery(".main-navigation .onepress-menu");
var header = document.getElementById("masthead");
if (header) {
var noSticky = header.classList.contains("no-sticky");
}
var setNavTop = function () {
var offset = header.getBoundingClientRect();
var top = offset.x + offset.height - 1;
main_navigation.css({
top: top
});
};
/**
* Get mobile navigation height.
*
* @return number
*/
var getNavHeight = function (fitWindow) {
if (typeof fitWindow === "undefined") {
fitWindow = true;
}
if (fitWindow) {
var offset = header.getBoundingClientRect();
var h = $(window).height() - (offset.x + offset.height) + 1;
return h;
} else {
main_navigation.css("height", "auto");
var navOffset = main_navigation[0].getBoundingClientRect();
main_navigation.css("height", 0);
return navOffset.height;
}
};
/**
* Initialise Menu Toggle
*
* @since 0.0.1
* @since 2.2.1
*/
$document.on("click", "#nav-toggle", function (event) {
event.preventDefault();
jQuery("#nav-toggle").toggleClass("nav-is-visible");
jQuery(".header-widget").toggleClass("header-widget-mobile");
main_navigation.stop();
// Open menu mobile.
if (!main_navigation.hasClass("onepress-menu-mobile")) {
main_navigation.addClass("onepress-menu-mobile");
$("body").addClass("onepress-menu-mobile-opening");
setNavTop();
var h = getNavHeight(!noSticky);
if (isNaN(h)) {
// when IE 11 & Edge return h is NaN.
h = $(window).height();
}
main_navigation.animate({
height: h
}, 300, function () {
// Animation complete.
if (noSticky) {
main_navigation.css({
"min-height": h,
height: "auto"
});
}
});
} else {
main_navigation.css({
height: main_navigation.height(),
"min-height": 0,
overflow: "hidden"
});
setTimeout(function () {
main_navigation.animate({
height: 0
}, 300, function () {
main_navigation.removeAttr("style");
main_navigation.removeClass("onepress-menu-mobile");
$("body").removeClass("onepress-menu-mobile-opening");
});
}, 40);
}
});
/**
* Fix nav height when touch move on mobile.
*
* @since 2.2.1
*/
if (!noSticky && onepressIsMobile.any()) {
$(document).on("scroll", function () {
if (main_navigation.hasClass("onepress-menu-mobile")) {
var newViewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
var offset = header.getBoundingClientRect();
var top = offset.x + offset.height - 1;
var h = newViewportHeight - top + 1;
main_navigation.css({
height: h,
top: top
});
}
});
}
function autoMenuAlign() {
const ww = $(window).width();
const isMobile = ww <= mobile_max_width;
const header = $("#masthead > .container");
const headerRect = header.length ? header[0].getBoundingClientRect() : {};
$("#site-navigation .onepress-menu > li").each(function () {
const li = $(this);
const sub = $("> .sub-menu", li);
if (isMobile) {
sub.removeAttr("style");
return;
}
if (sub.length) {
const liRect = li[0].getBoundingClientRect();
const subRect = sub[0].getBoundingClientRect();
if (headerRect.right < liRect.left + subRect.width) {
li.addClass("sub-li-r");
sub.addClass("sub-ul-r");
const diff = headerRect.right - (liRect.left + liRect.width);
sub.css("right", `-${diff}px`);
}
}
});
}
autoMenuAlign();
let timeOutResize = false;
$(window).on('resize', function () {
if (timeOutResize) {
clearTimeout(timeOutResize);
}
timeOutResize = setTimeout(() => {
if (main_navigation.hasClass("onepress-menu-mobile") && $(window).width() <= mobile_max_width) {
if (!noSticky) {
main_navigation.css({
height: getNavHeight(),
overflow: "auto"
});
}
} else {
main_navigation.removeAttr("style");
main_navigation.removeClass("onepress-menu-mobile");
jQuery("#nav-toggle").removeClass("nav-is-visible");
}
autoMenuAlign();
}, 500);
});
jQuery(".onepress-menu li.menu-item-has-children, .onepress-menu li.page_item_has_children").each(function () {
jQuery(this).prepend('<div class="nav-toggle-subarrow"><i class="fa fa-angle-down"></i></div>');
});
$document.on("click", ".nav-toggle-subarrow, .nav-toggle-subarrow .nav-toggle-subarrow", function () {
const el = jQuery(this);
const p = el.parent();
p.removeAttr("style");
p.toggleClass("nav-toggle-dropdown");
});
// Get the header height and wpadminbar height if enable.
var h;
window.current_nav_item = false;
if (onepress_js_settings.onepress_disable_sticky_header !== "1") {
h = jQuery("#wpadminbar").height() + jQuery(".site-header").height();
} else {
h = jQuery("#wpadminbar").height();
}
/**
* Navigation click to section.
* @updated 2.3.0
*/
jQuery('#site-navigation li a[href*="#"]').on("click", function (event) {
let url = new URL(this.href);
if (url.origin + url.pathname === window.location.origin + window.location.pathname) {
let $el = jQuery(this.hash);
// if in mobile mod.
if (jQuery(".onepress-menu").hasClass("onepress-menu-mobile")) {
jQuery("#nav-toggle").trigger("click");
}
if ($el.length) {
event.preventDefault();
window.history.pushState({}, null, url.href);
smoothScroll($el);
}
}
});
function setNavActive(currentNode) {
if (currentNode) {
currentNode = currentNode.replace("#", "");
if (currentNode) jQuery("#site-navigation li").removeClass("onepress-current-item");
if (currentNode) {
jQuery("#site-navigation li").find('a[href$="#' + currentNode + '"]').parent().addClass("onepress-current-item");
}
}
}
function inViewPort($element, offset_top) {
if (!offset_top) {
offset_top = 0;
}
var view_port_top = jQuery(window).scrollTop();
if ($("#wpadminbar").length > 0) {
view_port_top -= $("#wpadminbar").outerHeight() - 1;
offset_top += $("#wpadminbar").outerHeight() - 1;
}
var view_port_h = $("body").outerHeight();
var el_top = $element.offset().top;
var eh_h = $element.height();
var el_bot = el_top + eh_h;
var view_port_bot = view_port_top + view_port_h;
var all_height = $("body")[0].scrollHeight;
var max_top = all_height - view_port_h;
var in_view_port = false;
// If scroll maximum
if (view_port_top >= max_top) {
if (el_top < view_port_top && el_top > view_port_bot || el_top > view_port_top && el_bot < view_port_top) {
in_view_port = true;
}
} else {
if (el_top <= view_port_top + offset_top) {
//if ( eh_bot > view_port_top && eh_bot < view_port_bot ) {
if (el_bot > view_port_top) {
in_view_port = true;
}
}
}
return in_view_port;
}
// Add active class to menu when scroll to active section.
var _scroll_top = $window.scrollTop();
jQuery(window).on('scroll', function () {
var currentNode = null;
if (!window.current_nav_item) {
var current_top = $window.scrollTop();
var adminBarHeight = jQuery("#wpadminbar").length > 0 ? jQuery("#wpadminbar").height() : 0;
if (onepress_js_settings.onepress_disable_sticky_header !== "1") {
h = adminBarHeight + jQuery(".site-header").height();
} else {
h = adminBarHeight;
}
if (_scroll_top < current_top) {
jQuery("section").each(function (index) {
var section = jQuery(this);
var currentId = section.attr("id") || "";
var in_vp = inViewPort(section, h + 10);
if (in_vp) {
currentNode = currentId;
}
});
} else {
var ns = jQuery("section").length;
for (var i = ns - 1; i >= 0; i--) {
var section = jQuery("section").eq(i);
var currentId = section.attr("id") || "";
var in_vp = inViewPort(section, h + 10);
if (in_vp) {
currentNode = currentId;
}
}
}
_scroll_top = current_top;
} else {
currentNode = window.current_nav_item.replace("#", "");
}
setNavActive(currentNode);
});
// Move to the right section on page load.
jQuery(window).on("load", function () {
var urlCurrent = location.hash;
if (jQuery(urlCurrent).length > 0) {
smoothScroll(urlCurrent);
}
});
// Other scroll to elements
jQuery('.hero-slideshow-wrapper a[href*="#"]:not([href="#"]), .parallax-content a[href*="#"]:not([href="#"]), .back-to-top').on("click", function (event) {
event.preventDefault();
smoothScroll(jQuery(this.hash));
});
// Smooth scroll animation
function smoothScroll(element) {
if (element.length <= 0) {
return false;
}
jQuery("html, body").animate({
scrollTop: jQuery(element).offset().top - h + "px"
}, {
duration: 800,
easing: "swing",
complete: function () {
window.current_nav_item = false;
}
});
}
if (onepress_js_settings.is_home) {
// custom-logo-link
jQuery(".site-branding .site-brand-inner").on("click", function (e) {
e.preventDefault();
jQuery("html, body").animate({
scrollTop: "0px"
}, {
duration: 300,
easing: "swing"
});
});
}
if (onepressIsMobile.any()) {
jQuery("body").addClass("body-mobile").removeClass("body-desktop");
} else {
jQuery("body").addClass("body-desktop").removeClass("body-mobile");
}
/**
* Reveal Animations When Scrolling
*/
if (onepress_js_settings.onepress_disable_animation !== "1") {
var wow = new WOW({
offset: 50,
mobile: false,
live: false
});
wow.init();
}
var text_rotator = function () {
/**
* Text rotator
*/
jQuery(".js-rotating").Morphext({
// The [in] animation type. Refer to Animate.css for a list of available animations.
animation: onepress_js_settings.hero_animation,
// An array of phrases to rotate are created based on this separator. Change it if you wish to separate the phrases differently (e.g. So Simple | Very Doge | Much Wow | Such Cool).
separator: "|",
// The delay between the changing of each phrase in milliseconds.
speed: parseInt(onepress_js_settings.hero_speed, 10),
complete: function () {
// Called after the entrance animation is executed.
}
});
};
text_rotator();
$document.on("header_view_changed", function () {
text_rotator();
});
/**
* Responsive Videos
*/
jQuery(".site-content").fitVids({
ignore: ".wp-block-embed iframe, .wp-block-embed object"
});
/**
* Video lightbox (YouTube/Vimeo via href; self-hosted files via data-html + lg-html5 — see section-videolightbox.php)
*/
if ($.fn.lightGallery) {
$(".videolightbox-popup").lightGallery({
selector: "a"
});
}
// Counter Up
$(".counter").counterUp({
delay: 10,
time: 1000
});
/**
* Center vertical align for navigation.
*/
if (onepress_js_settings.onepress_vertical_align_menu === "1") {
var header_height = jQuery(".site-header").height();
jQuery(".site-header .onepress-menu").css("line-height", header_height + "px");
}
/**
* Section: Hero Full Screen Slideshow
*/
function hero_full_screen(no_trigger) {
if ($(".hero-slideshow-fullscreen").length > 0) {
var wh = $window.height();
var top = getAdminBarHeight();
var $header = jQuery("#masthead");
var is_transparent = $header.hasClass("is-t");
var headerH;
if (is_transparent) {
headerH = 0;
} else {
headerH = $header.height();
}
headerH += top;
jQuery(".hero-slideshow-fullscreen").css("height", wh - headerH + 1 + "px");
if (typeof no_trigger === "undefined" || !no_trigger) {
$document.trigger("hero_ready");
}
}
}
$window.on("resize", function () {
hero_full_screen();
});
hero_full_screen();
$document.on("header_view_changed", function () {
hero_full_screen();
});
$document.on("hero_ready", function () {
hero_full_screen(true);
});
/**
* Hero sliders
*/
var heroSliders = function () {
if ($("#parallax-hero").length <= 0) {
jQuery(".hero-slideshow-wrapper").each(function () {
var hero = $(this);
if (hero.hasClass("video-hero")) {
return;
}
var images = hero.data("images") || false;
if (typeof images === "string") {
images = JSON.parse(images);
}
if (images) {
preload_images(images, function () {
hero.backstretch(images, {
fade: _to_number(onepress_js_settings.hero_fade),
duration: _to_number(onepress_js_settings.hero_duration)
});
//
hero.addClass("loaded");
hero.removeClass("loading");
setTimeout(function () {
hero.find(".slider-spinner").remove();
}, 600);
});
} else {
hero.addClass("loaded");
hero.removeClass("loading");
hero.find(".slider-spinner").remove();
}
});
}
};
heroSliders();
$document.on("header_view_changed", function () {
heroSliders();
});
// Parallax hero
$(".parallax-hero").each(function () {
var hero = $(this);
hero.addClass("loading");
var bg = true;
if (hero.find("img").length > 0) {
bg = false;
}
$(".parallax-bg", hero).imagesLoaded({
background: bg
}, function () {
hero.find(".hero-slideshow-wrapper").addClass("loaded");
hero.removeClass("loading");
setTimeout(function () {
hero.find(".hero-slideshow-wrapper").find(".slider-spinner").remove();
}, 600);
}).fail(function (instance) {
hero.removeClass("loading");
hero.find(".hero-slideshow-wrapper").addClass("loaded");
hero.find(".hero-slideshow-wrapper").find(".slider-spinner").remove();
});
});
$(".section-parallax").each(function () {
var hero = $(this);
var bg = true;
if (hero.find("img").length > 0) {
bg = false;
}
$(".parallax-bg", hero).imagesLoaded({
background: bg
}, function () {}).fail(function (instance) {});
});
// Trigger when site load
setTimeout(function () {
$(window).trigger("scroll");
}, 500);
/**
* Gallery
*/
function onepress_gallery_init($context) {
// justified
if ($.fn.justifiedGallery) {
$(".gallery-justified", $context).imagesLoaded(function () {
$(".gallery-justified", $context).each(function () {
var margin = $(this).attr("data-spacing") || 20;
var row_height = $(this).attr("data-row-height") || 120;
margin = _to_number(margin);
row_height = _to_number(row_height);
$(this).justifiedGallery({
rowHeight: row_height,
margins: margin,
selector: "a, div:not(.spinner), .inner"
});
});
});
}
var is_rtl = onepress_js_settings.is_rtl;
// Slider
if ($.fn.owlCarousel) {
$(".gallery-slider", $context).owlCarousel({
items: 1,
smartSpeed: 200,
autoplay: true,
autoplayTimeout: 4000,
autoplayHoverPause: true,
nav: true,
navText: ["<i class='lg-icon'></i>", "<i class='lg-icon'></i>"],
autoHeight: true,
rtl: Number(is_rtl) !== 0,
dots: false
});
$(".gallery-carousel", $context).each(function () {
var n = $(this).attr("data-col") || 5;
n = _to_number(n);
if (n <= 0) {
n = 5;
}
$(this).owlCarousel({
items: n,
responsive: {
0: {
items: 2
},
768: {
items: n > 2 ? 2 : n
},
979: {
items: n > 3 ? 3 : n
},
1199: {
items: n
}
},
rtl: Number(is_rtl) !== 0,
navSpeed: 800,
autoplaySpeed: 4000,
autoplayHoverPause: true,
nav: true,
navText: ["<i class='lg-icon'></i>", "<i class='lg-icon'></i>"],
dots: false
});
});
}
function isotope_init() {
if ($.fn.isotope) {
$(".gallery-masonry", $context).each(function () {
var m = $(this);
var gutter = m.attr("data-gutter") || 10;
var columns = m.attr("data-col") || 5;
gutter = _to_number(gutter);
columns = _to_number(columns);
var w = $(window).width();
if (w <= 940) {
columns = columns > 2 ? columns - 1 : columns;
}
if (w <= 720) {
columns = columns > 3 ? 3 : columns;
}
if (w <= 576) {
columns = columns > 2 ? 2 : columns;
}
//gutter = gutter / 2;
// m.parent().css({'margin-left': -gutter, 'margin-right': -gutter});
m.find(".g-item").css({
width: 100 / columns + "%",
float: "left",
padding: 0
});
// m.find('.g-item .inner').css({'padding': gutter / 2});
m.isotope({
// options
itemSelector: ".g-item",
percentPosition: true,
masonry: {
columnWidth: ".inner"
}
});
});
}
}
$(".gallery-masonry", $context).imagesLoaded(function () {
isotope_init();
});
$(window).on("resize", function () {
isotope_init();
});
if ($.fn.lightGallery) {
var wrap_tag = $(".enable-lightbox", $context).find(".g-item").first();
var tag_selector = "a";
if (wrap_tag.is("div")) {
tag_selector = "div";
}
$(".enable-lightbox", $context).lightGallery({
mode: "lg-fade",
selector: tag_selector
//cssEasing : 'cubic-bezier(0.25, 0, 0.25, 1)'
});
}
}
onepress_gallery_init($(".gallery-content"));
if ($.fn.jarallax) {
jQuery(".jarallax").each(function () {
var $this = jQuery(this);
var speed = $this.attr("data-speed") || 0.5;
var speed = parseFloat(speed);
if (speed > 0) {
$this.jarallax({
speed: speed
});
}
});
}
if ("undefined" !== typeof wp && wp.customize && wp.customize.selectiveRefresh) {
wp.customize.selectiveRefresh.bind("partial-content-rendered", function (placement) {
if (placement.partial.id === "section-gallery") {
onepress_gallery_init(placement.container.find(".gallery-content"));
// Trigger resize to make other sections work.
$(window).trigger("resize");
}
});
}
});
/***/ },
/***/ "./src/frontend/libs/FitVids.js"
/*!**************************************!*\
!*** ./src/frontend/libs/FitVids.js ***!
\**************************************/
() {
/*jshint browser:true */
/*!
* FitVids 1.1
*
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
*
*/
(function ($) {
"use strict";
$.fn.fitVids = function (options) {
var settings = {
customSelector: null,
ignore: null
};
if (!document.getElementById("fit-vids-style")) {
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
var head = document.head || document.getElementsByTagName("head")[0];
var css = ".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}";
var div = document.createElement("div");
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + "</style>";
head.appendChild(div.childNodes[1]);
}
if (options) {
$.extend(settings, options);
}
return this.each(function () {
var selectors = ['iframe[src*="player.vimeo.com"]', 'iframe[src*="youtube.com"]', 'iframe[src*="youtube-nocookie.com"]', 'iframe[src*="kickstarter.com"][src*="video.html"]', "object", "embed"];
if (settings.customSelector) {
selectors.push(settings.customSelector);
}
var ignoreList = ".fitvidsignore";
if (settings.ignore) {
ignoreList = ignoreList + ", " + settings.ignore;
}
var $allVideos = $(this).find(selectors.join(","));
$allVideos = $allVideos.not("object object"); // SwfObj conflict patch
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
$allVideos.each(function () {
var $this = $(this);
if ($this.parents(ignoreList).length > 0) {
return; // Disable FitVids on this video.
}
if (this.tagName.toLowerCase() === "embed" && $this.parent("object").length || $this.parent(".fluid-width-video-wrapper").length) {
return;
}
if (!$this.css("height") && !$this.css("width") && (isNaN($this.attr("height")) || isNaN($this.attr("width")))) {
$this.attr("height", 9);
$this.attr("width", 16);
}
var height = this.tagName.toLowerCase() === "object" || $this.attr("height") && !isNaN(parseInt($this.attr("height"), 10)) ? parseInt($this.attr("height"), 10) : $this.height(),
width = !isNaN(parseInt($this.attr("width"), 10)) ? parseInt($this.attr("width"), 10) : $this.width(),
aspectRatio = height / width;
if (!$this.attr("name")) {
var videoName = "fitvid" + $.fn.fitVids._count;
$this.attr("name", videoName);
$.fn.fitVids._count++;
}
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top", aspectRatio * 100 + "%");
$this.removeAttr("height").removeAttr("width");
});
});
};
// Internal counter for unique video names.
$.fn.fitVids._count = 0;
// Works with either jQuery or Zepto
})(window.jQuery || window.Zepto);
/***/ },
/***/ "./src/frontend/libs/Morphext/morphext.js"
/*!************************************************!*\
!*** ./src/frontend/libs/Morphext/morphext.js ***!
\************************************************/
() {
/*!
* Morphext - Text Rotating Plugin for jQuery
* https://github.com/MrSaints/Morphext
*
* Built on jQuery Boilerplate
* http://jqueryboilerplate.com/
*
* Copyright 2014 Ian Lai and other contributors
* Released under the MIT license
* http://ian.mit-license.org/
*/
/*eslint-env browser */
/*global jQuery:false */
/*eslint-disable no-underscore-dangle */
(function ($) {
"use strict";
var pluginName = "Morphext",
defaults = {
animation: "bounceIn",
separator: ",",
speed: 2000,
complete: $.noop
};
function Plugin(element, options) {
this.element = $(element);
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._init();
}
Plugin.prototype = {
_init: function () {
var $that = this;
this.phrases = [];
this.element.addClass("morphext");
// OnePress 2.4.1: read via `.html()` instead of `.text()` so HTML
// tags inside the rotating block (e.g. `<strong>`, `<em>`, `<a>`)
// are preserved as phrase content. The animate() step below already
// writes back via `innerHTML`, so the markup round-trips cleanly.
// Sanitisation is the caller's responsibility — for OnePress the
// hero text field runs through `wp_kses_post` server-side.
$.each(this.element.html().split(this.settings.separator), function (key, value) {
$that.phrases.push($.trim(value));
});
this.index = -1;
this.animate();
this.start();
},
animate: function () {
this.index = ++this.index % this.phrases.length;
this.element[0].innerHTML = "<span class=\"animated " + this.settings.animation + "\">" + this.phrases[this.index] + "</span>";
if ($.isFunction(this.settings.complete)) {
this.settings.complete.call(this);
}
},
start: function () {
var $that = this;
this._interval = setInterval(function () {
$that.animate();
}, this.settings.speed);
},
stop: function () {
this._interval = clearInterval(this._interval);
}
};
$.fn[pluginName] = function (options) {
return this.each(function () {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
}
});
};
})(jQuery);
/***/ },
/***/ "./src/frontend/libs/bootstrap/bootstrap.min.js"
/*!******************************************************!*\
!*** ./src/frontend/libs/bootstrap/bootstrap.min.js ***!
\******************************************************/
() {
/*!
* Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
+function (t) {
var e = t.fn.jquery.split(" ")[0].split(".");
if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0");
}(jQuery), +function () {
function t(t, e) {
if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return !e || "object" != typeof e && "function" != typeof e ? t : e;
}
function e(t, e) {
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
t.prototype = Object.create(e && e.prototype, {
constructor: {
value: t,
enumerable: !1,
writable: !0,
configurable: !0
}
}), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e);
}
function n(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
}
var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
return typeof t;
} : function (t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t;
},
o = function () {
function t(t, e) {
for (var n = 0; n < e.length; n++) {
var i = e[n];
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i);
}
}
return function (e, n, i) {
return n && t(e.prototype, n), i && t(e, i), e;
};
}(),
r = function (t) {
function e(t) {
return {}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
function n(t) {
return (t[0] || t).nodeType;
}
function i() {
return {
bindType: a.end,
delegateType: a.end,
handle: function (e) {
if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments);
}
};
}
function o() {
if (window.QUnit) return !1;
var t = document.createElement("bootstrap");
for (var e in h) if (void 0 !== t.style[e]) return {
end: h[e]
};
return !1;
}
function r(e) {
var n = this,
i = !1;
return t(this).one(c.TRANSITION_END, function () {
i = !0;
}), setTimeout(function () {
i || c.triggerTransitionEnd(n);
}, e), this;
}
function s() {
a = o(), t.fn.emulateTransitionEnd = r, c.supportsTransitionEnd() && (t.event.special[c.TRANSITION_END] = i());
}
var a = !1,
l = 1e6,
h = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
},
c = {
TRANSITION_END: "bsTransitionEnd",
getUID: function (t) {
do t += ~~(Math.random() * l); while (document.getElementById(t));
return t;
},
getSelectorFromElement: function (t) {
var e = t.getAttribute("data-target");
return e || (e = t.getAttribute("href") || "", e = /^#[a-z]/i.test(e) ? e : null), e;
},
reflow: function (t) {
return t.offsetHeight;
},
triggerTransitionEnd: function (e) {
t(e).trigger(a.end);
},
supportsTransitionEnd: function () {
return Boolean(a);
},
typeCheckConfig: function (t, i, o) {
for (var r in o) if (o.hasOwnProperty(r)) {
var s = o[r],
a = i[r],
l = a && n(a) ? "element" : e(a);
if (!new RegExp(s).test(l)) throw new Error(t.toUpperCase() + ": " + ('Option "' + r + '" provided type "' + l + '" ') + ('but expected type "' + s + '".'));
}
}
};
return s(), c;
}(jQuery),
s = (function (t) {
var e = "alert",
i = "4.0.0-alpha.6",
s = "bs.alert",
a = "." + s,
l = ".data-api",
h = t.fn[e],
c = 150,
u = {
DISMISS: '[data-dismiss="alert"]'
},
d = {
CLOSE: "close" + a,
CLOSED: "closed" + a,
CLICK_DATA_API: "click" + a + l
},
f = {
ALERT: "alert",
FADE: "fade",
SHOW: "show"
},
_ = function () {
function e(t) {
n(this, e), this._element = t;
}
return e.prototype.close = function (t) {
t = t || this._element;
var e = this._getRootElement(t),
n = this._triggerCloseEvent(e);
n.isDefaultPrevented() || this._removeElement(e);
}, e.prototype.dispose = function () {
t.removeData(this._element, s), this._element = null;
}, e.prototype._getRootElement = function (e) {
var n = r.getSelectorFromElement(e),
i = !1;
return n && (i = t(n)[0]), i || (i = t(e).closest("." + f.ALERT)[0]), i;
}, e.prototype._triggerCloseEvent = function (e) {
var n = t.Event(d.CLOSE);
return t(e).trigger(n), n;
}, e.prototype._removeElement = function (e) {
var n = this;
return t(e).removeClass(f.SHOW), r.supportsTransitionEnd() && t(e).hasClass(f.FADE) ? void t(e).one(r.TRANSITION_END, function (t) {
return n._destroyElement(e, t);
}).emulateTransitionEnd(c) : void this._destroyElement(e);
}, e.prototype._destroyElement = function (e) {
t(e).detach().trigger(d.CLOSED).remove();
}, e._jQueryInterface = function (n) {
return this.each(function () {
var i = t(this),
o = i.data(s);
o || (o = new e(this), i.data(s, o)), "close" === n && o[n](this);
});
}, e._handleDismiss = function (t) {
return function (e) {
e && e.preventDefault(), t.close(this);
};
}, o(e, null, [{
key: "VERSION",
get: function () {
return i;
}
}]), e;
}();
return t(document).on(d.CLICK_DATA_API, u.DISMISS, _._handleDismiss(new _())), t.fn[e] = _._jQueryInterface, t.fn[e].Constructor = _, t.fn[e].noConflict = function () {
return t.fn[e] = h, _._jQueryInterface;
}, _;
}(jQuery), function (t) {
var e = "button",
i = "4.0.0-alpha.6",
r = "bs.button",
s = "." + r,
a = ".data-api",
l = t.fn[e],
h = {
ACTIVE: "active",
BUTTON: "btn",
FOCUS: "focus"
},
c = {
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
DATA_TOGGLE: '[data-toggle="buttons"]',
INPUT: "input",
ACTIVE: ".active",
BUTTON: ".btn"
},
u = {
CLICK_DATA_API: "click" + s + a,
FOCUS_BLUR_DATA_API: "focus" + s + a + " " + ("blur" + s + a)
},
d = function () {
function e(t) {
n(this, e), this._element = t;
}
return e.prototype.toggle = function () {
var e = !0,
n = t(this._element).closest(c.DATA_TOGGLE)[0];
if (n) {
var i = t(this._element).find(c.INPUT)[0];
if (i) {
if ("radio" === i.type) if (i.checked && t(this._element).hasClass(h.ACTIVE)) e = !1;else {
var o = t(n).find(c.ACTIVE)[0];
o && t(o).removeClass(h.ACTIVE);
}
e && (i.checked = !t(this._element).hasClass(h.ACTIVE), t(i).trigger("change")), i.focus();
}
}
this._element.setAttribute("aria-pressed", !t(this._element).hasClass(h.ACTIVE)), e && t(this._element).toggleClass(h.ACTIVE);
}, e.prototype.dispose = function () {
t.removeData(this._element, r), this._element = null;
}, e._jQueryInterface = function (n) {
return this.each(function () {
var i = t(this).data(r);
i || (i = new e(this), t(this).data(r, i)), "toggle" === n && i[n]();
});
}, o(e, null, [{
key: "VERSION",
get: function () {
return i;
}
}]), e;
}();
return t(document).on(u.CLICK_DATA_API, c.DATA_TOGGLE_CARROT, function (e) {
e.preventDefault();
var n = e.target;
t(n).hasClass(h.BUTTON) || (n = t(n).closest(c.BUTTON)), d._jQueryInterface.call(t(n), "toggle");
}).on(u.FOCUS_BLUR_DATA_API, c.DATA_TOGGLE_CARROT, function (e) {
var n = t(e.target).closest(c.BUTTON)[0];
t(n).toggleClass(h.FOCUS, /^focus(in)?$/.test(e.type));
}), t.fn[e] = d._jQueryInterface, t.fn[e].Constructor = d, t.fn[e].noConflict = function () {
return t.fn[e] = l, d._jQueryInterface;
}, d;
}(jQuery), function (t) {
var e = "carousel",
s = "4.0.0-alpha.6",
a = "bs.carousel",
l = "." + a,
h = ".data-api",
c = t.fn[e],
u = 600,
d = 37,
f = 39,
_ = {
interval: 5e3,
keyboard: !0,
slide: !1,
pause: "hover",
wrap: !0
},
g = {
interval: "(number|boolean)",
keyboard: "boolean",
slide: "(boolean|string)",
pause: "(string|boolean)",
wrap: "boolean"
},
p = {
NEXT: "next",
PREV: "prev",
LEFT: "left",
RIGHT: "right"
},
m = {
SLIDE: "slide" + l,
SLID: "slid" + l,
KEYDOWN: "keydown" + l,
MOUSEENTER: "mouseenter" + l,
MOUSELEAVE: "mouseleave" + l,
LOAD_DATA_API: "load" + l + h,
CLICK_DATA_API: "click" + l + h
},
E = {
CAROUSEL: "carousel",
ACTIVE: "active",
SLIDE: "slide",
RIGHT: "carousel-item-right",
LEFT: "carousel-item-left",
NEXT: "carousel-item-next",
PREV: "carousel-item-prev",
ITEM: "carousel-item"
},
v = {
ACTIVE: ".active",
ACTIVE_ITEM: ".active.carousel-item",
ITEM: ".carousel-item",
NEXT_PREV: ".carousel-item-next, .carousel-item-prev",
INDICATORS: ".carousel-indicators",
DATA_SLIDE: "[data-slide], [data-slide-to]",
DATA_RIDE: '[data-ride="carousel"]'
},
T = function () {
function h(e, i) {
n(this, h), this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this._config = this._getConfig(i), this._element = t(e)[0], this._indicatorsElement = t(this._element).find(v.INDICATORS)[0], this._addEventListeners();
}
return h.prototype.next = function () {
if (this._isSliding) throw new Error("Carousel is sliding");
this._slide(p.NEXT);
}, h.prototype.nextWhenVisible = function () {
document.hidden || this.next();
}, h.prototype.prev = function () {
if (this._isSliding) throw new Error("Carousel is sliding");
this._slide(p.PREVIOUS);
}, h.prototype.pause = function (e) {
e || (this._isPaused = !0), t(this._element).find(v.NEXT_PREV)[0] && r.supportsTransitionEnd() && (r.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null;
}, h.prototype.cycle = function (t) {
t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval));
}, h.prototype.to = function (e) {
var n = this;
this._activeElement = t(this._element).find(v.ACTIVE_ITEM)[0];
var i = this._getItemIndex(this._activeElement);
if (!(e > this._items.length - 1 || e < 0)) {
if (this._isSliding) return void t(this._element).one(m.SLID, function () {
return n.to(e);
});
if (i === e) return this.pause(), void this.cycle();
var o = e > i ? p.NEXT : p.PREVIOUS;
this._slide(o, this._items[e]);
}
}, h.prototype.dispose = function () {
t(this._element).off(l), t.removeData(this._element, a), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null;
}, h.prototype._getConfig = function (n) {
return n = t.extend({}, _, n), r.typeCheckConfig(e, n, g), n;
}, h.prototype._addEventListeners = function () {
var e = this;
this._config.keyboard && t(this._element).on(m.KEYDOWN, function (t) {
return e._keydown(t);
}), "hover" !== this._config.pause || "ontouchstart" in document.documentElement || t(this._element).on(m.MOUSEENTER, function (t) {
return e.pause(t);
}).on(m.MOUSELEAVE, function (t) {
return e.cycle(t);
});
}, h.prototype._keydown = function (t) {
if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) {
case d:
t.preventDefault(), this.prev();
break;
case f:
t.preventDefault(), this.next();
break;
default:
return;
}
}, h.prototype._getItemIndex = function (e) {
return this._items = t.makeArray(t(e).parent().find(v.ITEM)), this._items.indexOf(e);
}, h.prototype._getItemByDirection = function (t, e) {
var n = t === p.NEXT,
i = t === p.PREVIOUS,
o = this._getItemIndex(e),
r = this._items.length - 1,
s = i && 0 === o || n && o === r;
if (s && !this._config.wrap) return e;
var a = t === p.PREVIOUS ? -1 : 1,
l = (o + a) % this._items.length;
return l === -1 ? this._items[this._items.length - 1] : this._items[l];
}, h.prototype._triggerSlideEvent = function (e, n) {
var i = t.Event(m.SLIDE, {
relatedTarget: e,
direction: n
});
return t(this._element).trigger(i), i;
}, h.prototype._setActiveIndicatorElement = function (e) {
if (this._indicatorsElement) {
t(this._indicatorsElement).find(v.ACTIVE).removeClass(E.ACTIVE);
var n = this._indicatorsElement.children[this._getItemIndex(e)];
n && t(n).addClass(E.ACTIVE);
}
}, h.prototype._slide = function (e, n) {
var i = this,
o = t(this._element).find(v.ACTIVE_ITEM)[0],
s = n || o && this._getItemByDirection(e, o),
a = Boolean(this._interval),
l = void 0,
h = void 0,
c = void 0;
if (e === p.NEXT ? (l = E.LEFT, h = E.NEXT, c = p.LEFT) : (l = E.RIGHT, h = E.PREV, c = p.RIGHT), s && t(s).hasClass(E.ACTIVE)) return void (this._isSliding = !1);
var d = this._triggerSlideEvent(s, c);
if (!d.isDefaultPrevented() && o && s) {
this._isSliding = !0, a && this.pause(), this._setActiveIndicatorElement(s);
var f = t.Event(m.SLID, {
relatedTarget: s,
direction: c
});
r.supportsTransitionEnd() && t(this._element).hasClass(E.SLIDE) ? (t(s).addClass(h), r.reflow(s), t(o).addClass(l), t(s).addClass(l), t(o).one(r.TRANSITION_END, function () {
t(s).removeClass(l + " " + h).addClass(E.ACTIVE), t(o).removeClass(E.ACTIVE + " " + h + " " + l), i._isSliding = !1, setTimeout(function () {
return t(i._element).trigger(f);
}, 0);
}).emulateTransitionEnd(u)) : (t(o).removeClass(E.ACTIVE), t(s).addClass(E.ACTIVE), this._isSliding = !1, t(this._element).trigger(f)), a && this.cycle();
}
}, h._jQueryInterface = function (e) {
return this.each(function () {
var n = t(this).data(a),
o = t.extend({}, _, t(this).data());
"object" === ("undefined" == typeof e ? "undefined" : i(e)) && t.extend(o, e);
var r = "string" == typeof e ? e : o.slide;
if (n || (n = new h(this, o), t(this).data(a, n)), "number" == typeof e) n.to(e);else if ("string" == typeof r) {
if (void 0 === n[r]) throw new Error('No method named "' + r + '"');
n[r]();
} else o.interval && (n.pause(), n.cycle());
});
}, h._dataApiClickHandler = function (e) {
var n = r.getSelectorFromElement(this);
if (n) {
var i = t(n)[0];
if (i && t(i).hasClass(E.CAROUSEL)) {
var o = t.extend({}, t(i).data(), t(this).data()),
s = this.getAttribute("data-slide-to");
s && (o.interval = !1), h._jQueryInterface.call(t(i), o), s && t(i).data(a).to(s), e.preventDefault();
}
}
}, o(h, null, [{
key: "VERSION",
get: function () {
return s;
}
}, {
key: "Default",
get: function () {
return _;
}
}]), h;
}();
return t(document).on(m.CLICK_DATA_API, v.DATA_SLIDE, T._dataApiClickHandler), t(window).on(m.LOAD_DATA_API, function () {
t(v.DATA_RIDE).each(function () {
var e = t(this);
T._jQueryInterface.call(e, e.data());
});
}), t.fn[e] = T._jQueryInterface, t.fn[e].Constructor = T, t.fn[e].noConflict = function () {
return t.fn[e] = c, T._jQueryInterface;
}, T;
}(jQuery), function (t) {
var e = "collapse",
s = "4.0.0-alpha.6",
a = "bs.collapse",
l = "." + a,
h = ".data-api",
c = t.fn[e],
u = 600,
d = {
toggle: !0,
parent: ""
},
f = {
toggle: "boolean",
parent: "string"
},
_ = {
SHOW: "show" + l,
SHOWN: "shown" + l,
HIDE: "hide" + l,
HIDDEN: "hidden" + l,
CLICK_DATA_API: "click" + l + h
},
g = {
SHOW: "show",
COLLAPSE: "collapse",
COLLAPSING: "collapsing",
COLLAPSED: "collapsed"
},
p = {
WIDTH: "width",
HEIGHT: "height"
},
m = {
ACTIVES: ".card > .show, .card > .collapsing",
DATA_TOGGLE: '[data-toggle="collapse"]'
},
E = function () {
function l(e, i) {
n(this, l), this._isTransitioning = !1, this._element = e, this._config = this._getConfig(i), this._triggerArray = t.makeArray(t('[data-toggle="collapse"][href="#' + e.id + '"],' + ('[data-toggle="collapse"][data-target="#' + e.id + '"]'))), this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle();
}
return l.prototype.toggle = function () {
t(this._element).hasClass(g.SHOW) ? this.hide() : this.show();
}, l.prototype.show = function () {
var e = this;
if (this._isTransitioning) throw new Error("Collapse is transitioning");
if (!t(this._element).hasClass(g.SHOW)) {
var n = void 0,
i = void 0;
if (this._parent && (n = t.makeArray(t(this._parent).find(m.ACTIVES)), n.length || (n = null)), !(n && (i = t(n).data(a), i && i._isTransitioning))) {
var o = t.Event(_.SHOW);
if (t(this._element).trigger(o), !o.isDefaultPrevented()) {
n && (l._jQueryInterface.call(t(n), "hide"), i || t(n).data(a, null));
var s = this._getDimension();
t(this._element).removeClass(g.COLLAPSE).addClass(g.COLLAPSING), this._element.style[s] = 0, this._element.setAttribute("aria-expanded", !0), this._triggerArray.length && t(this._triggerArray).removeClass(g.COLLAPSED).attr("aria-expanded", !0), this.setTransitioning(!0);
var h = function () {
t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).addClass(g.SHOW), e._element.style[s] = "", e.setTransitioning(!1), t(e._element).trigger(_.SHOWN);
};
if (!r.supportsTransitionEnd()) return void h();
var c = s[0].toUpperCase() + s.slice(1),
d = "scroll" + c;
t(this._element).one(r.TRANSITION_END, h).emulateTransitionEnd(u), this._element.style[s] = this._element[d] + "px";
}
}
}
}, l.prototype.hide = function () {
var e = this;
if (this._isTransitioning) throw new Error("Collapse is transitioning");
if (t(this._element).hasClass(g.SHOW)) {
var n = t.Event(_.HIDE);
if (t(this._element).trigger(n), !n.isDefaultPrevented()) {
var i = this._getDimension(),
o = i === p.WIDTH ? "offsetWidth" : "offsetHeight";
this._element.style[i] = this._element[o] + "px", r.reflow(this._element), t(this._element).addClass(g.COLLAPSING).removeClass(g.COLLAPSE).removeClass(g.SHOW), this._element.setAttribute("aria-expanded", !1), this._triggerArray.length && t(this._triggerArray).addClass(g.COLLAPSED).attr("aria-expanded", !1), this.setTransitioning(!0);
var s = function () {
e.setTransitioning(!1), t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).trigger(_.HIDDEN);
};
return this._element.style[i] = "", r.supportsTransitionEnd() ? void t(this._element).one(r.TRANSITION_END, s).emulateTransitionEnd(u) : void s();
}
}
}, l.prototype.setTransitioning = function (t) {
this._isTransitioning = t;
}, l.prototype.dispose = function () {
t.removeData(this._element, a), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null;
}, l.prototype._getConfig = function (n) {
return n = t.extend({}, d, n), n.toggle = Boolean(n.toggle), r.typeCheckConfig(e, n, f), n;
}, l.prototype._getDimension = function () {
var e = t(this._element).hasClass(p.WIDTH);
return e ? p.WIDTH : p.HEIGHT;
}, l.prototype._getParent = function () {
var e = this,
n = t(this._config.parent)[0],
i = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
return t(n).find(i).each(function (t, n) {
e._addAriaAndCollapsedClass(l._getTargetFromElement(n), [n]);
}), n;
}, l.prototype._addAriaAndCollapsedClass = function (e, n) {
if (e) {
var i = t(e).hasClass(g.SHOW);
e.setAttribute("aria-expanded", i), n.length && t(n).toggleClass(g.COLLAPSED, !i).attr("aria-expanded", i);
}
}, l._getTargetFromElement = function (e) {
var n = r.getSelectorFromElement(e);
return n ? t(n)[0] : null;
}, l._jQueryInterface = function (e) {
return this.each(function () {
var n = t(this),
o = n.data(a),
r = t.extend({}, d, n.data(), "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e);
if (!o && r.toggle && /show|hide/.test(e) && (r.toggle = !1), o || (o = new l(this, r), n.data(a, o)), "string" == typeof e) {
if (void 0 === o[e]) throw new Error('No method named "' + e + '"');
o[e]();
}
});
}, o(l, null, [{
key: "VERSION",
get: function () {
return s;
}
}, {
key: "Default",
get: function () {
return d;
}
}]), l;
}();
return t(document).on(_.CLICK_DATA_API, m.DATA_TOGGLE, function (e) {
e.preventDefault();
var n = E._getTargetFromElement(this),
i = t(n).data(a),
o = i ? "toggle" : t(this).data();
E._jQueryInterface.call(t(n), o);
}), t.fn[e] = E._jQueryInterface, t.fn[e].Constructor = E, t.fn[e].noConflict = function () {
return t.fn[e] = c, E._jQueryInterface;
}, E;
}(jQuery), function (t) {
var e = "dropdown",
i = "4.0.0-alpha.6",
s = "bs.dropdown",
a = "." + s,
l = ".data-api",
h = t.fn[e],
c = 27,
u = 38,
d = 40,
f = 3,
_ = {
HIDE: "hide" + a,
HIDDEN: "hidden" + a,
SHOW: "show" + a,
SHOWN: "shown" + a,
CLICK: "click" + a,
CLICK_DATA_API: "click" + a + l,
FOCUSIN_DATA_API: "focusin" + a + l,
KEYDOWN_DATA_API: "keydown" + a + l
},
g = {
BACKDROP: "dropdown-backdrop",
DISABLED: "disabled",
SHOW: "show"
},
p = {
BACKDROP: ".dropdown-backdrop",
DATA_TOGGLE: '[data-toggle="dropdown"]',
FORM_CHILD: ".dropdown form",
ROLE_MENU: '[role="menu"]',
ROLE_LISTBOX: '[role="listbox"]',
NAVBAR_NAV: ".navbar-nav",
VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'
},
m = function () {
function e(t) {
n(this, e), this._element = t, this._addEventListeners();
}
return e.prototype.toggle = function () {
if (this.disabled || t(this).hasClass(g.DISABLED)) return !1;
var n = e._getParentFromElement(this),
i = t(n).hasClass(g.SHOW);
if (e._clearMenus(), i) return !1;
if ("ontouchstart" in document.documentElement && !t(n).closest(p.NAVBAR_NAV).length) {
var o = document.createElement("div");
o.className = g.BACKDROP, t(o).insertBefore(this), t(o).on("click", e._clearMenus);
}
var r = {
relatedTarget: this
},
s = t.Event(_.SHOW, r);
return t(n).trigger(s), !s.isDefaultPrevented() && (this.focus(), this.setAttribute("aria-expanded", !0), t(n).toggleClass(g.SHOW), t(n).trigger(t.Event(_.SHOWN, r)), !1);
}, e.prototype.dispose = function () {
t.removeData(this._element, s), t(this._element).off(a), this._element = null;
}, e.prototype._addEventListeners = function () {
t(this._element).on(_.CLICK, this.toggle);
}, e._jQueryInterface = function (n) {
return this.each(function () {
var i = t(this).data(s);
if (i || (i = new e(this), t(this).data(s, i)), "string" == typeof n) {
if (void 0 === i[n]) throw new Error('No method named "' + n + '"');
i[n].call(this);
}
});
}, e._clearMenus = function (n) {
if (!n || n.which !== f) {
var i = t(p.BACKDROP)[0];
i && i.parentNode.removeChild(i);
for (var o = t.makeArray(t(p.DATA_TOGGLE)), r = 0; r < o.length; r++) {
var s = e._getParentFromElement(o[r]),
a = {
relatedTarget: o[r]
};
if (t(s).hasClass(g.SHOW) && !(n && ("click" === n.type && /input|textarea/i.test(n.target.tagName) || "focusin" === n.type) && t.contains(s, n.target))) {
var l = t.Event(_.HIDE, a);
t(s).trigger(l), l.isDefaultPrevented() || (o[r].setAttribute("aria-expanded", "false"), t(s).removeClass(g.SHOW).trigger(t.Event(_.HIDDEN, a)));
}
}
}
}, e._getParentFromElement = function (e) {
var n = void 0,
i = r.getSelectorFromElement(e);
return i && (n = t(i)[0]), n || e.parentNode;
}, e._dataApiKeydownHandler = function (n) {
if (/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagName) && (n.preventDefault(), n.stopPropagation(), !this.disabled && !t(this).hasClass(g.DISABLED))) {
var i = e._getParentFromElement(this),
o = t(i).hasClass(g.SHOW);
if (!o && n.which !== c || o && n.which === c) {
if (n.which === c) {
var r = t(i).find(p.DATA_TOGGLE)[0];
t(r).trigger("focus");
}
return void t(this).trigger("click");
}
var s = t(i).find(p.VISIBLE_ITEMS).get();
if (s.length) {
var a = s.indexOf(n.target);
n.which === u && a > 0 && a--, n.which === d && a < s.length - 1 && a++, a < 0 && (a = 0), s[a].focus();
}
}
}, o(e, null, [{
key: "VERSION",
get: function () {
return i;
}
}]), e;
}();
return t(document).on(_.KEYDOWN_DATA_API, p.DATA_TOGGLE, m._dataApiKeydownHandler).on(_.KEYDOWN_DATA_API, p.ROLE_MENU, m._dataApiKeydownHandler).on(_.KEYDOWN_DATA_API, p.ROLE_LISTBOX, m._dataApiKeydownHandler).on(_.CLICK_DATA_API + " " + _.FOCUSIN_DATA_API, m._clearMenus).on(_.CLICK_DATA_API, p.DATA_TOGGLE, m.prototype.toggle).on(_.CLICK_DATA_API, p.FORM_CHILD, function (t) {
t.stopPropagation();
}), t.fn[e] = m._jQueryInterface, t.fn[e].Constructor = m, t.fn[e].noConflict = function () {
return t.fn[e] = h, m._jQueryInterface;
}, m;
}(jQuery), function (t) {
var e = "modal",
s = "4.0.0-alpha.6",
a = "bs.modal",
l = "." + a,
h = ".data-api",
c = t.fn[e],
u = 300,
d = 150,
f = 27,
_ = {
backdrop: !0,
keyboard: !0,
focus: !0,
show: !0
},
g = {
backdrop: "(boolean|string)",
keyboard: "boolean",
focus: "boolean",
show: "boolean"
},
p = {
HIDE: "hide" + l,
HIDDEN: "hidden" + l,
SHOW: "show" + l,
SHOWN: "shown" + l,
FOCUSIN: "focusin" + l,
RESIZE: "resize" + l,
CLICK_DISMISS: "click.dismiss" + l,
KEYDOWN_DISMISS: "keydown.dismiss" + l,
MOUSEUP_DISMISS: "mouseup.dismiss" + l,
MOUSEDOWN_DISMISS: "mousedown.dismiss" + l,
CLICK_DATA_API: "click" + l + h
},
m = {
SCROLLBAR_MEASURER: "modal-scrollbar-measure",
BACKDROP: "modal-backdrop",
OPEN: "modal-open",
FADE: "fade",
SHOW: "show"
},
E = {
DIALOG: ".modal-dialog",
DATA_TOGGLE: '[data-toggle="modal"]',
DATA_DISMISS: '[data-dismiss="modal"]',
FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"
},
v = function () {
function h(e, i) {
n(this, h), this._config = this._getConfig(i), this._element = e, this._dialog = t(e).find(E.DIALOG)[0], this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._originalBodyPadding = 0, this._scrollbarWidth = 0;
}
return h.prototype.toggle = function (t) {
return this._isShown ? this.hide() : this.show(t);
}, h.prototype.show = function (e) {
var n = this;
if (this._isTransitioning) throw new Error("Modal is transitioning");
r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE) && (this._isTransitioning = !0);
var i = t.Event(p.SHOW, {
relatedTarget: e
});
t(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), t(document.body).addClass(m.OPEN), this._setEscapeEvent(), this._setResizeEvent(), t(this._element).on(p.CLICK_DISMISS, E.DATA_DISMISS, function (t) {
return n.hide(t);
}), t(this._dialog).on(p.MOUSEDOWN_DISMISS, function () {
t(n._element).one(p.MOUSEUP_DISMISS, function (e) {
t(e.target).is(n._element) && (n._ignoreBackdropClick = !0);
});
}), this._showBackdrop(function () {
return n._showElement(e);
}));
}, h.prototype.hide = function (e) {
var n = this;
if (e && e.preventDefault(), this._isTransitioning) throw new Error("Modal is transitioning");
var i = r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE);
i && (this._isTransitioning = !0);
var o = t.Event(p.HIDE);
t(this._element).trigger(o), this._isShown && !o.isDefaultPrevented() && (this._isShown = !1, this._setEscapeEvent(), this._setResizeEvent(), t(document).off(p.FOCUSIN), t(this._element).removeClass(m.SHOW), t(this._element).off(p.CLICK_DISMISS), t(this._dialog).off(p.MOUSEDOWN_DISMISS), i ? t(this._element).one(r.TRANSITION_END, function (t) {
return n._hideModal(t);
}).emulateTransitionEnd(u) : this._hideModal());
}, h.prototype.dispose = function () {
t.removeData(this._element, a), t(window, document, this._element, this._backdrop).off(l), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._originalBodyPadding = null, this._scrollbarWidth = null;
}, h.prototype._getConfig = function (n) {
return n = t.extend({}, _, n), r.typeCheckConfig(e, n, g), n;
}, h.prototype._showElement = function (e) {
var n = this,
i = r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE);
this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.scrollTop = 0, i && r.reflow(this._element), t(this._element).addClass(m.SHOW), this._config.focus && this._enforceFocus();
var o = t.Event(p.SHOWN, {
relatedTarget: e
}),
s = function () {
n._config.focus && n._element.focus(), n._isTransitioning = !1, t(n._element).trigger(o);
};
i ? t(this._dialog).one(r.TRANSITION_END, s).emulateTransitionEnd(u) : s();
}, h.prototype._enforceFocus = function () {
var e = this;
t(document).off(p.FOCUSIN).on(p.FOCUSIN, function (n) {
document === n.target || e._element === n.target || t(e._element).has(n.target).length || e._element.focus();
});
}, h.prototype._setEscapeEvent = function () {
var e = this;
this._isShown && this._config.keyboard ? t(this._element).on(p.KEYDOWN_DISMISS, function (t) {
t.which === f && e.hide();
}) : this._isShown || t(this._element).off(p.KEYDOWN_DISMISS);
}, h.prototype._setResizeEvent = function () {
var e = this;
this._isShown ? t(window).on(p.RESIZE, function (t) {
return e._handleUpdate(t);
}) : t(window).off(p.RESIZE);
}, h.prototype._hideModal = function () {
var e = this;
this._element.style.display = "none", this._element.setAttribute("aria-hidden", "true"), this._isTransitioning = !1, this._showBackdrop(function () {
t(document.body).removeClass(m.OPEN), e._resetAdjustments(), e._resetScrollbar(), t(e._element).trigger(p.HIDDEN);
});
}, h.prototype._removeBackdrop = function () {
this._backdrop && (t(this._backdrop).remove(), this._backdrop = null);
}, h.prototype._showBackdrop = function (e) {
var n = this,
i = t(this._element).hasClass(m.FADE) ? m.FADE : "";
if (this._isShown && this._config.backdrop) {
var o = r.supportsTransitionEnd() && i;
if (this._backdrop = document.createElement("div"), this._backdrop.className = m.BACKDROP, i && t(this._backdrop).addClass(i), t(this._backdrop).appendTo(document.body), t(this._element).on(p.CLICK_DISMISS, function (t) {
return n._ignoreBackdropClick ? void (n._ignoreBackdropClick = !1) : void (t.target === t.currentTarget && ("static" === n._config.backdrop ? n._element.focus() : n.hide()));
}), o && r.reflow(this._backdrop), t(this._backdrop).addClass(m.SHOW), !e) return;
if (!o) return void e();
t(this._backdrop).one(r.TRANSITION_END, e).emulateTransitionEnd(d);
} else if (!this._isShown && this._backdrop) {
t(this._backdrop).removeClass(m.SHOW);
var s = function () {
n._removeBackdrop(), e && e();
};
r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE) ? t(this._backdrop).one(r.TRANSITION_END, s).emulateTransitionEnd(d) : s();
} else e && e();
}, h.prototype._handleUpdate = function () {
this._adjustDialog();
}, h.prototype._adjustDialog = function () {
var t = this._element.scrollHeight > document.documentElement.clientHeight;
!this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px");
}, h.prototype._resetAdjustments = function () {
this._element.style.paddingLeft = "", this._element.style.paddingRight = "";
}, h.prototype._checkScrollbar = function () {
this._isBodyOverflowing = document.body.clientWidth < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth();
}, h.prototype._setScrollbar = function () {
var e = parseInt(t(E.FIXED_CONTENT).css("padding-right") || 0, 10);
this._originalBodyPadding = document.body.style.paddingRight || "", this._isBodyOverflowing && (document.body.style.paddingRight = e + this._scrollbarWidth + "px");
}, h.prototype._resetScrollbar = function () {
document.body.style.paddingRight = this._originalBodyPadding;
}, h.prototype._getScrollbarWidth = function () {
var t = document.createElement("div");
t.className = m.SCROLLBAR_MEASURER, document.body.appendChild(t);
var e = t.offsetWidth - t.clientWidth;
return document.body.removeChild(t), e;
}, h._jQueryInterface = function (e, n) {
return this.each(function () {
var o = t(this).data(a),
r = t.extend({}, h.Default, t(this).data(), "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e);
if (o || (o = new h(this, r), t(this).data(a, o)), "string" == typeof e) {
if (void 0 === o[e]) throw new Error('No method named "' + e + '"');
o[e](n);
} else r.show && o.show(n);
});
}, o(h, null, [{
key: "VERSION",
get: function () {
return s;
}
}, {
key: "Default",
get: function () {
return _;
}
}]), h;
}();
return t(document).on(p.CLICK_DATA_API, E.DATA_TOGGLE, function (e) {
var n = this,
i = void 0,
o = r.getSelectorFromElement(this);
o && (i = t(o)[0]);
var s = t(i).data(a) ? "toggle" : t.extend({}, t(i).data(), t(this).data());
"A" !== this.tagName && "AREA" !== this.tagName || e.preventDefault();
var l = t(i).one(p.SHOW, function (e) {
e.isDefaultPrevented() || l.one(p.HIDDEN, function () {
t(n).is(":visible") && n.focus();
});
});
v._jQueryInterface.call(t(i), s, this);
}), t.fn[e] = v._jQueryInterface, t.fn[e].Constructor = v, t.fn[e].noConflict = function () {
return t.fn[e] = c, v._jQueryInterface;
}, v;
}(jQuery), function (t) {
var e = "scrollspy",
s = "4.0.0-alpha.6",
a = "bs.scrollspy",
l = "." + a,
h = ".data-api",
c = t.fn[e],
u = {
offset: 10,
method: "auto",
target: ""
},
d = {
offset: "number",
method: "string",
target: "(string|element)"
},
f = {
ACTIVATE: "activate" + l,
SCROLL: "scroll" + l,
LOAD_DATA_API: "load" + l + h
},
_ = {
DROPDOWN_ITEM: "dropdown-item",
DROPDOWN_MENU: "dropdown-menu",
NAV_LINK: "nav-link",
NAV: "nav",
ACTIVE: "active"
},
g = {
DATA_SPY: '[data-spy="scroll"]',
ACTIVE: ".active",
LIST_ITEM: ".list-item",
LI: "li",
LI_DROPDOWN: "li.dropdown",
NAV_LINKS: ".nav-link",
DROPDOWN: ".dropdown",
DROPDOWN_ITEMS: ".dropdown-item",
DROPDOWN_TOGGLE: ".dropdown-toggle"
},
p = {
OFFSET: "offset",
POSITION: "position"
},
m = function () {
function h(e, i) {
var o = this;
n(this, h), this._element = e, this._scrollElement = "BODY" === e.tagName ? window : e, this._config = this._getConfig(i), this._selector = this._config.target + " " + g.NAV_LINKS + "," + (this._config.target + " " + g.DROPDOWN_ITEMS), this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, t(this._scrollElement).on(f.SCROLL, function (t) {
return o._process(t);
}), this.refresh(), this._process();
}
return h.prototype.refresh = function () {
var e = this,
n = this._scrollElement !== this._scrollElement.window ? p.POSITION : p.OFFSET,
i = "auto" === this._config.method ? n : this._config.method,
o = i === p.POSITION ? this._getScrollTop() : 0;
this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight();
var s = t.makeArray(t(this._selector));
s.map(function (e) {
var n = void 0,
s = r.getSelectorFromElement(e);
return s && (n = t(s)[0]), n && (n.offsetWidth || n.offsetHeight) ? [t(n)[i]().top + o, s] : null;
}).filter(function (t) {
return t;
}).sort(function (t, e) {
return t[0] - e[0];
}).forEach(function (t) {
e._offsets.push(t[0]), e._targets.push(t[1]);
});
}, h.prototype.dispose = function () {
t.removeData(this._element, a), t(this._scrollElement).off(l), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null;
}, h.prototype._getConfig = function (n) {
if (n = t.extend({}, u, n), "string" != typeof n.target) {
var i = t(n.target).attr("id");
i || (i = r.getUID(e), t(n.target).attr("id", i)), n.target = "#" + i;
}
return r.typeCheckConfig(e, n, d), n;
}, h.prototype._getScrollTop = function () {
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
}, h.prototype._getScrollHeight = function () {
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}, h.prototype._getOffsetHeight = function () {
return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight;
}, h.prototype._process = function () {
var t = this._getScrollTop() + this._config.offset,
e = this._getScrollHeight(),
n = this._config.offset + e - this._getOffsetHeight();
if (this._scrollHeight !== e && this.refresh(), t >= n) {
var i = this._targets[this._targets.length - 1];
return void (this._activeTarget !== i && this._activate(i));
}
if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear();
for (var o = this._offsets.length; o--;) {
var r = this._activeTarget !== this._targets[o] && t >= this._offsets[o] && (void 0 === this._offsets[o + 1] || t < this._offsets[o + 1]);
r && this._activate(this._targets[o]);
}
}, h.prototype._activate = function (e) {
this._activeTarget = e, this._clear();
var n = this._selector.split(",");
n = n.map(function (t) {
return t + '[data-target="' + e + '"],' + (t + '[href="' + e + '"]');
});
var i = t(n.join(","));
i.hasClass(_.DROPDOWN_ITEM) ? (i.closest(g.DROPDOWN).find(g.DROPDOWN_TOGGLE).addClass(_.ACTIVE), i.addClass(_.ACTIVE)) : i.parents(g.LI).find("> " + g.NAV_LINKS).addClass(_.ACTIVE), t(this._scrollElement).trigger(f.ACTIVATE, {
relatedTarget: e
});
}, h.prototype._clear = function () {
t(this._selector).filter(g.ACTIVE).removeClass(_.ACTIVE);
}, h._jQueryInterface = function (e) {
return this.each(function () {
var n = t(this).data(a),
o = "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e;
if (n || (n = new h(this, o), t(this).data(a, n)), "string" == typeof e) {
if (void 0 === n[e]) throw new Error('No method named "' + e + '"');
n[e]();
}
});
}, o(h, null, [{
key: "VERSION",
get: function () {
return s;
}
}, {
key: "Default",
get: function () {
return u;
}
}]), h;
}();
return t(window).on(f.LOAD_DATA_API, function () {
for (var e = t.makeArray(t(g.DATA_SPY)), n = e.length; n--;) {
var i = t(e[n]);
m._jQueryInterface.call(i, i.data());
}
}), t.fn[e] = m._jQueryInterface, t.fn[e].Constructor = m, t.fn[e].noConflict = function () {
return t.fn[e] = c, m._jQueryInterface;
}, m;
}(jQuery), function (t) {
var e = "tab",
i = "4.0.0-alpha.6",
s = "bs.tab",
a = "." + s,
l = ".data-api",
h = t.fn[e],
c = 150,
u = {
HIDE: "hide" + a,
HIDDEN: "hidden" + a,
SHOW: "show" + a,
SHOWN: "shown" + a,
CLICK_DATA_API: "click" + a + l
},
d = {
DROPDOWN_MENU: "dropdown-menu",
ACTIVE: "active",
DISABLED: "disabled",
FADE: "fade",
SHOW: "show"
},
f = {
A: "a",
LI: "li",
DROPDOWN: ".dropdown",
LIST: "ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)",
FADE_CHILD: "> .nav-item .fade, > .fade",
ACTIVE: ".active",
ACTIVE_CHILD: "> .nav-item > .active, > .active",
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
DROPDOWN_TOGGLE: ".dropdown-toggle",
DROPDOWN_ACTIVE_CHILD: "> .dropdown-menu .active"
},
_ = function () {
function e(t) {
n(this, e), this._element = t;
}
return e.prototype.show = function () {
var e = this;
if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && t(this._element).hasClass(d.ACTIVE) || t(this._element).hasClass(d.DISABLED))) {
var n = void 0,
i = void 0,
o = t(this._element).closest(f.LIST)[0],
s = r.getSelectorFromElement(this._element);
o && (i = t.makeArray(t(o).find(f.ACTIVE)), i = i[i.length - 1]);
var a = t.Event(u.HIDE, {
relatedTarget: this._element
}),
l = t.Event(u.SHOW, {
relatedTarget: i
});
if (i && t(i).trigger(a), t(this._element).trigger(l), !l.isDefaultPrevented() && !a.isDefaultPrevented()) {
s && (n = t(s)[0]), this._activate(this._element, o);
var h = function () {
var n = t.Event(u.HIDDEN, {
relatedTarget: e._element
}),
o = t.Event(u.SHOWN, {
relatedTarget: i
});
t(i).trigger(n), t(e._element).trigger(o);
};
n ? this._activate(n, n.parentNode, h) : h();
}
}
}, e.prototype.dispose = function () {
t.removeClass(this._element, s), this._element = null;
}, e.prototype._activate = function (e, n, i) {
var o = this,
s = t(n).find(f.ACTIVE_CHILD)[0],
a = i && r.supportsTransitionEnd() && (s && t(s).hasClass(d.FADE) || Boolean(t(n).find(f.FADE_CHILD)[0])),
l = function () {
return o._transitionComplete(e, s, a, i);
};
s && a ? t(s).one(r.TRANSITION_END, l).emulateTransitionEnd(c) : l(), s && t(s).removeClass(d.SHOW);
}, e.prototype._transitionComplete = function (e, n, i, o) {
if (n) {
t(n).removeClass(d.ACTIVE);
var s = t(n.parentNode).find(f.DROPDOWN_ACTIVE_CHILD)[0];
s && t(s).removeClass(d.ACTIVE), n.setAttribute("aria-expanded", !1);
}
if (t(e).addClass(d.ACTIVE), e.setAttribute("aria-expanded", !0), i ? (r.reflow(e), t(e).addClass(d.SHOW)) : t(e).removeClass(d.FADE), e.parentNode && t(e.parentNode).hasClass(d.DROPDOWN_MENU)) {
var a = t(e).closest(f.DROPDOWN)[0];
a && t(a).find(f.DROPDOWN_TOGGLE).addClass(d.ACTIVE), e.setAttribute("aria-expanded", !0);
}
o && o();
}, e._jQueryInterface = function (n) {
return this.each(function () {
var i = t(this),
o = i.data(s);
if (o || (o = new e(this), i.data(s, o)), "string" == typeof n) {
if (void 0 === o[n]) throw new Error('No method named "' + n + '"');
o[n]();
}
});
}, o(e, null, [{
key: "VERSION",
get: function () {
return i;
}
}]), e;
}();
return t(document).on(u.CLICK_DATA_API, f.DATA_TOGGLE, function (e) {
e.preventDefault(), _._jQueryInterface.call(t(this), "show");
}), t.fn[e] = _._jQueryInterface, t.fn[e].Constructor = _, t.fn[e].noConflict = function () {
return t.fn[e] = h, _._jQueryInterface;
}, _;
}(jQuery), function (t) {
if ("undefined" == typeof Tether) throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");
var e = "tooltip",
s = "4.0.0-alpha.6",
a = "bs.tooltip",
l = "." + a,
h = t.fn[e],
c = 150,
u = "bs-tether",
d = {
animation: !0,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-inner"></div></div>',
trigger: "hover focus",
title: "",
delay: 0,
html: !1,
selector: !1,
placement: "top",
offset: "0 0",
constraints: [],
container: !1
},
f = {
animation: "boolean",
template: "string",
title: "(string|element|function)",
trigger: "string",
delay: "(number|object)",
html: "boolean",
selector: "(string|boolean)",
placement: "(string|function)",
offset: "string",
constraints: "array",
container: "(string|element|boolean)"
},
_ = {
TOP: "bottom center",
RIGHT: "middle left",
BOTTOM: "top center",
LEFT: "middle right"
},
g = {
SHOW: "show",
OUT: "out"
},
p = {
HIDE: "hide" + l,
HIDDEN: "hidden" + l,
SHOW: "show" + l,
SHOWN: "shown" + l,
INSERTED: "inserted" + l,
CLICK: "click" + l,
FOCUSIN: "focusin" + l,
FOCUSOUT: "focusout" + l,
MOUSEENTER: "mouseenter" + l,
MOUSELEAVE: "mouseleave" + l
},
m = {
FADE: "fade",
SHOW: "show"
},
E = {
TOOLTIP: ".tooltip",
TOOLTIP_INNER: ".tooltip-inner"
},
v = {
element: !1,
enabled: !1
},
T = {
HOVER: "hover",
FOCUS: "focus",
CLICK: "click",
MANUAL: "manual"
},
I = function () {
function h(t, e) {
n(this, h), this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._isTransitioning = !1, this._tether = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners();
}
return h.prototype.enable = function () {
this._isEnabled = !0;
}, h.prototype.disable = function () {
this._isEnabled = !1;
}, h.prototype.toggleEnabled = function () {
this._isEnabled = !this._isEnabled;
}, h.prototype.toggle = function (e) {
if (e) {
var n = this.constructor.DATA_KEY,
i = t(e.currentTarget).data(n);
i || (i = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i);
} else {
if (t(this.getTipElement()).hasClass(m.SHOW)) return void this._leave(null, this);
this._enter(null, this);
}
}, h.prototype.dispose = function () {
clearTimeout(this._timeout), this.cleanupTether(), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal"), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._tether = null, this.element = null, this.config = null, this.tip = null;
}, h.prototype.show = function () {
var e = this;
if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements");
var n = t.Event(this.constructor.Event.SHOW);
if (this.isWithContent() && this._isEnabled) {
if (this._isTransitioning) throw new Error("Tooltip is transitioning");
t(this.element).trigger(n);
var i = t.contains(this.element.ownerDocument.documentElement, this.element);
if (n.isDefaultPrevented() || !i) return;
var o = this.getTipElement(),
s = r.getUID(this.constructor.NAME);
o.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && t(o).addClass(m.FADE);
var a = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement,
l = this._getAttachment(a),
c = this.config.container === !1 ? document.body : t(this.config.container);
t(o).data(this.constructor.DATA_KEY, this).appendTo(c), t(this.element).trigger(this.constructor.Event.INSERTED), this._tether = new Tether({
attachment: l,
element: o,
target: this.element,
classes: v,
classPrefix: u,
offset: this.config.offset,
constraints: this.config.constraints,
addTargetClasses: !1
}), r.reflow(o), this._tether.position(), t(o).addClass(m.SHOW);
var d = function () {
var n = e._hoverState;
e._hoverState = null, e._isTransitioning = !1, t(e.element).trigger(e.constructor.Event.SHOWN), n === g.OUT && e._leave(null, e);
};
if (r.supportsTransitionEnd() && t(this.tip).hasClass(m.FADE)) return this._isTransitioning = !0, void t(this.tip).one(r.TRANSITION_END, d).emulateTransitionEnd(h._TRANSITION_DURATION);
d();
}
}, h.prototype.hide = function (e) {
var n = this,
i = this.getTipElement(),
o = t.Event(this.constructor.Event.HIDE);
if (this._isTransitioning) throw new Error("Tooltip is transitioning");
var s = function () {
n._hoverState !== g.SHOW && i.parentNode && i.parentNode.removeChild(i), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), n._isTransitioning = !1, n.cleanupTether(), e && e();
};
t(this.element).trigger(o), o.isDefaultPrevented() || (t(i).removeClass(m.SHOW), this._activeTrigger[T.CLICK] = !1, this._activeTrigger[T.FOCUS] = !1, this._activeTrigger[T.HOVER] = !1, r.supportsTransitionEnd() && t(this.tip).hasClass(m.FADE) ? (this._isTransitioning = !0, t(i).one(r.TRANSITION_END, s).emulateTransitionEnd(c)) : s(), this._hoverState = "");
}, h.prototype.isWithContent = function () {
return Boolean(this.getTitle());
}, h.prototype.getTipElement = function () {
return this.tip = this.tip || t(this.config.template)[0];
}, h.prototype.setContent = function () {
var e = t(this.getTipElement());
this.setElementContent(e.find(E.TOOLTIP_INNER), this.getTitle()), e.removeClass(m.FADE + " " + m.SHOW), this.cleanupTether();
}, h.prototype.setElementContent = function (e, n) {
var o = this.config.html;
"object" === ("undefined" == typeof n ? "undefined" : i(n)) && (n.nodeType || n.jquery) ? o ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text()) : e[o ? "html" : "text"](n);
}, h.prototype.getTitle = function () {
var t = this.element.getAttribute("data-original-title");
return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t;
}, h.prototype.cleanupTether = function () {
this._tether && this._tether.destroy();
}, h.prototype._getAttachment = function (t) {
return _[t.toUpperCase()];
}, h.prototype._setListeners = function () {
var e = this,
n = this.config.trigger.split(" ");
n.forEach(function (n) {
if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, function (t) {
return e.toggle(t);
});else if (n !== T.MANUAL) {
var i = n === T.HOVER ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN,
o = n === T.HOVER ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT;
t(e.element).on(i, e.config.selector, function (t) {
return e._enter(t);
}).on(o, e.config.selector, function (t) {
return e._leave(t);
});
}
t(e.element).closest(".modal").on("hide.bs.modal", function () {
return e.hide();
});
}), this.config.selector ? this.config = t.extend({}, this.config, {
trigger: "manual",
selector: ""
}) : this._fixTitle();
}, h.prototype._fixTitle = function () {
var t = i(this.element.getAttribute("data-original-title"));
(this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""));
}, h.prototype._enter = function (e, n) {
var i = this.constructor.DATA_KEY;
return n = n || t(e.currentTarget).data(i), n || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusin" === e.type ? T.FOCUS : T.HOVER] = !0), t(n.getTipElement()).hasClass(m.SHOW) || n._hoverState === g.SHOW ? void (n._hoverState = g.SHOW) : (clearTimeout(n._timeout), n._hoverState = g.SHOW, n.config.delay && n.config.delay.show ? void (n._timeout = setTimeout(function () {
n._hoverState === g.SHOW && n.show();
}, n.config.delay.show)) : void n.show());
}, h.prototype._leave = function (e, n) {
var i = this.constructor.DATA_KEY;
if (n = n || t(e.currentTarget).data(i), n || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusout" === e.type ? T.FOCUS : T.HOVER] = !1), !n._isWithActiveTrigger()) return clearTimeout(n._timeout), n._hoverState = g.OUT, n.config.delay && n.config.delay.hide ? void (n._timeout = setTimeout(function () {
n._hoverState === g.OUT && n.hide();
}, n.config.delay.hide)) : void n.hide();
}, h.prototype._isWithActiveTrigger = function () {
for (var t in this._activeTrigger) if (this._activeTrigger[t]) return !0;
return !1;
}, h.prototype._getConfig = function (n) {
return n = t.extend({}, this.constructor.Default, t(this.element).data(), n), n.delay && "number" == typeof n.delay && (n.delay = {
show: n.delay,
hide: n.delay
}), r.typeCheckConfig(e, n, this.constructor.DefaultType), n;
}, h.prototype._getDelegateConfig = function () {
var t = {};
if (this.config) for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]);
return t;
}, h._jQueryInterface = function (e) {
return this.each(function () {
var n = t(this).data(a),
o = "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e;
if ((n || !/dispose|hide/.test(e)) && (n || (n = new h(this, o), t(this).data(a, n)), "string" == typeof e)) {
if (void 0 === n[e]) throw new Error('No method named "' + e + '"');
n[e]();
}
});
}, o(h, null, [{
key: "VERSION",
get: function () {
return s;
}
}, {
key: "Default",
get: function () {
return d;
}
}, {
key: "NAME",
get: function () {
return e;
}
}, {
key: "DATA_KEY",
get: function () {
return a;
}
}, {
key: "Event",
get: function () {
return p;
}
}, {
key: "EVENT_KEY",
get: function () {
return l;
}
}, {
key: "DefaultType",
get: function () {
return f;
}
}]), h;
}();
return t.fn[e] = I._jQueryInterface, t.fn[e].Constructor = I, t.fn[e].noConflict = function () {
return t.fn[e] = h, I._jQueryInterface;
}, I;
}(jQuery));
(function (r) {
var a = "popover",
l = "4.0.0-alpha.6",
h = "bs.popover",
c = "." + h,
u = r.fn[a],
d = r.extend({}, s.Default, {
placement: "right",
trigger: "click",
content: "",
template: '<div class="popover" role="tooltip"><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
}),
f = r.extend({}, s.DefaultType, {
content: "(string|element|function)"
}),
_ = {
FADE: "fade",
SHOW: "show"
},
g = {
TITLE: ".popover-title",
CONTENT: ".popover-content"
},
p = {
HIDE: "hide" + c,
HIDDEN: "hidden" + c,
SHOW: "show" + c,
SHOWN: "shown" + c,
INSERTED: "inserted" + c,
CLICK: "click" + c,
FOCUSIN: "focusin" + c,
FOCUSOUT: "focusout" + c,
MOUSEENTER: "mouseenter" + c,
MOUSELEAVE: "mouseleave" + c
},
m = function (s) {
function u() {
return n(this, u), t(this, s.apply(this, arguments));
}
return e(u, s), u.prototype.isWithContent = function () {
return this.getTitle() || this._getContent();
}, u.prototype.getTipElement = function () {
return this.tip = this.tip || r(this.config.template)[0];
}, u.prototype.setContent = function () {
var t = r(this.getTipElement());
this.setElementContent(t.find(g.TITLE), this.getTitle()), this.setElementContent(t.find(g.CONTENT), this._getContent()), t.removeClass(_.FADE + " " + _.SHOW), this.cleanupTether();
}, u.prototype._getContent = function () {
return this.element.getAttribute("data-content") || ("function" == typeof this.config.content ? this.config.content.call(this.element) : this.config.content);
}, u._jQueryInterface = function (t) {
return this.each(function () {
var e = r(this).data(h),
n = "object" === ("undefined" == typeof t ? "undefined" : i(t)) ? t : null;
if ((e || !/destroy|hide/.test(t)) && (e || (e = new u(this, n), r(this).data(h, e)), "string" == typeof t)) {
if (void 0 === e[t]) throw new Error('No method named "' + t + '"');
e[t]();
}
});
}, o(u, null, [{
key: "VERSION",
get: function () {
return l;
}
}, {
key: "Default",
get: function () {
return d;
}
}, {
key: "NAME",
get: function () {
return a;
}
}, {
key: "DATA_KEY",
get: function () {
return h;
}
}, {
key: "Event",
get: function () {
return p;
}
}, {
key: "EVENT_KEY",
get: function () {
return c;
}
}, {
key: "DefaultType",
get: function () {
return f;
}
}]), u;
}(s);
return r.fn[a] = m._jQueryInterface, r.fn[a].Constructor = m, r.fn[a].noConflict = function () {
return r.fn[a] = u, m._jQueryInterface;
}, m;
})(jQuery);
}();
/***/ },
/***/ "./src/frontend/libs/imagesloaded.js"
/*!*******************************************!*\
!*** ./src/frontend/libs/imagesloaded.js ***!
\*******************************************/
(module, __unused_webpack_exports, __webpack_require__) {
/*!
* imagesLoaded PACKAGED v5.0.0
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
/**
* EvEmitter v2.1.1
* Lil' event emitter
* MIT License
*/
(function (global, factory) {
// universal module definition
if ( true && module.exports) {
// CommonJS - Browserify, Webpack
module.exports = factory();
} else {
// Browser globals
global.EvEmitter = factory();
}
})(typeof window != 'undefined' ? window : this, function () {
function EvEmitter() {}
let proto = EvEmitter.prototype;
proto.on = function (eventName, listener) {
if (!eventName || !listener) return this;
// set events hash
let events = this._events = this._events || {};
// set listeners array
let listeners = events[eventName] = events[eventName] || [];
// only add once
if (!listeners.includes(listener)) {
listeners.push(listener);
}
return this;
};
proto.once = function (eventName, listener) {
if (!eventName || !listener) return this;
// add event
this.on(eventName, listener);
// set once flag
// set onceEvents hash
let onceEvents = this._onceEvents = this._onceEvents || {};
// set onceListeners object
let onceListeners = onceEvents[eventName] = onceEvents[eventName] || {};
// set flag
onceListeners[listener] = true;
return this;
};
proto.off = function (eventName, listener) {
let listeners = this._events && this._events[eventName];
if (!listeners || !listeners.length) return this;
let index = listeners.indexOf(listener);
if (index != -1) {
listeners.splice(index, 1);
}
return this;
};
proto.emitEvent = function (eventName, args) {
let listeners = this._events && this._events[eventName];
if (!listeners || !listeners.length) return this;
// copy over to avoid interference if .off() in listener
listeners = listeners.slice(0);
args = args || [];
// once stuff
let onceListeners = this._onceEvents && this._onceEvents[eventName];
for (let listener of listeners) {
let isOnce = onceListeners && onceListeners[listener];
if (isOnce) {
// remove listener
// remove before trigger to prevent recursion
this.off(eventName, listener);
// unset once flag
delete onceListeners[listener];
}
// trigger listener
listener.apply(this, args);
}
return this;
};
proto.allOff = function () {
delete this._events;
delete this._onceEvents;
return this;
};
return EvEmitter;
});
/*!
* imagesLoaded v5.0.0
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
(function (window, factory) {
// universal module definition
if ( true && module.exports) {
// CommonJS
module.exports = factory(window, __webpack_require__(/*! ev-emitter */ "./node_modules/ev-emitter/ev-emitter.js"));
} else {
// browser global
window.imagesLoaded = factory(window, window.EvEmitter);
}
})(typeof window !== 'undefined' ? window : this, function factory(window, EvEmitter) {
let $ = window.jQuery;
let console = window.console;
// -------------------------- helpers -------------------------- //
// turn element or nodeList into an array
function makeArray(obj) {
// use object if already an array
if (Array.isArray(obj)) return obj;
let isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
// convert nodeList to array
if (isArrayLike) return [...obj];
// array of single index
return [obj];
}
// -------------------------- imagesLoaded -------------------------- //
/**
* @param {[Array, Element, NodeList, String]} elem
* @param {[Object, Function]} options - if function, use as callback
* @param {Function} onAlways - callback function
* @returns {ImagesLoaded}
*/
function ImagesLoaded(elem, options, onAlways) {
// coerce ImagesLoaded() without new, to be new ImagesLoaded()
if (!(this instanceof ImagesLoaded)) {
return new ImagesLoaded(elem, options, onAlways);
}
// use elem as selector string
let queryElem = elem;
if (typeof elem == 'string') {
queryElem = document.querySelectorAll(elem);
}
// bail if bad element
if (!queryElem) {
console.error(`Bad element for imagesLoaded ${queryElem || elem}`);
return;
}
this.elements = makeArray(queryElem);
this.options = {};
// shift arguments if no options set
if (typeof options == 'function') {
onAlways = options;
} else {
Object.assign(this.options, options);
}
if (onAlways) this.on('always', onAlways);
this.getImages();
// add jQuery Deferred object
if ($) this.jqDeferred = new $.Deferred();
// HACK check async to allow time to bind listeners
setTimeout(this.check.bind(this));
}
ImagesLoaded.prototype = Object.create(EvEmitter.prototype);
ImagesLoaded.prototype.getImages = function () {
this.images = [];
// filter & find items if we have an item selector
this.elements.forEach(this.addElementImages, this);
};
const elementNodeTypes = [1, 9, 11];
/**
* @param {Node} elem
*/
ImagesLoaded.prototype.addElementImages = function (elem) {
// filter siblings
if (elem.nodeName === 'IMG') {
this.addImage(elem);
}
// get background image on element
if (this.options.background === true) {
this.addElementBackgroundImages(elem);
}
// find children
// no non-element nodes, #143
let {
nodeType
} = elem;
if (!nodeType || !elementNodeTypes.includes(nodeType)) return;
let childImgs = elem.querySelectorAll('img');
// concat childElems to filterFound array
for (let img of childImgs) {
this.addImage(img);
}
// get child background images
if (typeof this.options.background == 'string') {
let children = elem.querySelectorAll(this.options.background);
for (let child of children) {
this.addElementBackgroundImages(child);
}
}
};
const reURL = /url\((['"])?(.*?)\1\)/gi;
ImagesLoaded.prototype.addElementBackgroundImages = function (elem) {
let style = getComputedStyle(elem);
// Firefox returns null if in a hidden iframe https://bugzil.la/548397
if (!style) return;
// get url inside url("...")
let matches = reURL.exec(style.backgroundImage);
while (matches !== null) {
let url = matches && matches[2];
if (url) {
this.addBackground(url, elem);
}
matches = reURL.exec(style.backgroundImage);
}
};
/**
* @param {Image} img
*/
ImagesLoaded.prototype.addImage = function (img) {
let loadingImage = new LoadingImage(img);
this.images.push(loadingImage);
};
ImagesLoaded.prototype.addBackground = function (url, elem) {
let background = new Background(url, elem);
this.images.push(background);
};
ImagesLoaded.prototype.check = function () {
this.progressedCount = 0;
this.hasAnyBroken = false;
// complete if no images
if (!this.images.length) {
this.complete();
return;
}
/* eslint-disable-next-line func-style */
let onProgress = (image, elem, message) => {
// HACK - Chrome triggers event before object properties have changed. #83
setTimeout(() => {
this.progress(image, elem, message);
});
};
this.images.forEach(function (loadingImage) {
loadingImage.once('progress', onProgress);
loadingImage.check();
});
};
ImagesLoaded.prototype.progress = function (image, elem, message) {
this.progressedCount++;
this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
// progress event
this.emitEvent('progress', [this, image, elem]);
if (this.jqDeferred && this.jqDeferred.notify) {
this.jqDeferred.notify(this, image);
}
// check if completed
if (this.progressedCount === this.images.length) {
this.complete();
}
if (this.options.debug && console) {
console.log(`progress: ${message}`, image, elem);
}
};
ImagesLoaded.prototype.complete = function () {
let eventName = this.hasAnyBroken ? 'fail' : 'done';
this.isComplete = true;
this.emitEvent(eventName, [this]);
this.emitEvent('always', [this]);
if (this.jqDeferred) {
let jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
this.jqDeferred[jqMethod](this);
}
};
// -------------------------- -------------------------- //
function LoadingImage(img) {
this.img = img;
}
LoadingImage.prototype = Object.create(EvEmitter.prototype);
LoadingImage.prototype.check = function () {
// If complete is true and browser supports natural sizes,
// try to check for image status manually.
let isComplete = this.getIsImageComplete();
if (isComplete) {
// report based on naturalWidth
this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
return;
}
// If none of the checks above matched, simulate loading on detached element.
this.proxyImage = new Image();
// add crossOrigin attribute. #204
if (this.img.crossOrigin) {
this.proxyImage.crossOrigin = this.img.crossOrigin;
}
this.proxyImage.addEventListener('load', this);
this.proxyImage.addEventListener('error', this);
// bind to image as well for Firefox. #191
this.img.addEventListener('load', this);
this.img.addEventListener('error', this);
this.proxyImage.src = this.img.currentSrc || this.img.src;
};
LoadingImage.prototype.getIsImageComplete = function () {
// check for non-zero, non-undefined naturalWidth
// fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
return this.img.complete && this.img.naturalWidth;
};
LoadingImage.prototype.confirm = function (isLoaded, message) {
this.isLoaded = isLoaded;
let {
parentNode
} = this.img;
// emit progress with parent <picture> or self <img>
let elem = parentNode.nodeName === 'PICTURE' ? parentNode : this.img;
this.emitEvent('progress', [this, elem, message]);
};
// ----- events ----- //
// trigger specified handler for event type
LoadingImage.prototype.handleEvent = function (event) {
let method = 'on' + event.type;
if (this[method]) {
this[method](event);
}
};
LoadingImage.prototype.onload = function () {
this.confirm(true, 'onload');
this.unbindEvents();
};
LoadingImage.prototype.onerror = function () {
this.confirm(false, 'onerror');
this.unbindEvents();
};
LoadingImage.prototype.unbindEvents = function () {
this.proxyImage.removeEventListener('load', this);
this.proxyImage.removeEventListener('error', this);
this.img.removeEventListener('load', this);
this.img.removeEventListener('error', this);
};
// -------------------------- Background -------------------------- //
function Background(url, element) {
this.url = url;
this.element = element;
this.img = new Image();
}
// inherit LoadingImage prototype
Background.prototype = Object.create(LoadingImage.prototype);
Background.prototype.check = function () {
this.img.addEventListener('load', this);
this.img.addEventListener('error', this);
this.img.src = this.url;
// check if image is already complete
let isComplete = this.getIsImageComplete();
if (isComplete) {
this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
this.unbindEvents();
}
};
Background.prototype.unbindEvents = function () {
this.img.removeEventListener('load', this);
this.img.removeEventListener('error', this);
};
Background.prototype.confirm = function (isLoaded, message) {
this.isLoaded = isLoaded;
this.emitEvent('progress', [this, this.element, message]);
};
// -------------------------- jQuery -------------------------- //
ImagesLoaded.makeJQueryPlugin = function (jQuery) {
jQuery = jQuery || window.jQuery;
if (!jQuery) return;
// set local variable
$ = jQuery;
// $().imagesLoaded()
$.fn.imagesLoaded = function (options, onAlways) {
let instance = new ImagesLoaded(this, options, onAlways);
return instance.jqDeferred.promise($(this));
};
};
// try making plugin
ImagesLoaded.makeJQueryPlugin();
// -------------------------- -------------------------- //
return ImagesLoaded;
});
/***/ },
/***/ "./src/frontend/libs/jarallax.js"
/*!***************************************!*\
!*** ./src/frontend/libs/jarallax.js ***!
\***************************************/
(module) {
/*!
* Jarallax v2.1.3 (https://github.com/nk-o/jarallax)
* Copyright 2022 nK <https://nkdev.info>
* Licensed under MIT (https://github.com/nk-o/jarallax/blob/master/LICENSE)
*/
(function (global, factory) {
true ? module.exports = factory() : 0;
})(this, function () {
"use strict";
/**
* Document ready callback.
* @param {Function} callback - callback will be fired once Document ready.
*/
function ready(callback) {
if (document.readyState === "complete" || document.readyState === "interactive") {
// Already ready or interactive, execute callback
callback();
} else {
document.addEventListener("DOMContentLoaded", callback, {
capture: true,
once: true,
passive: true
});
}
}
/* eslint-disable import/no-mutable-exports */
/* eslint-disable no-restricted-globals */
let win;
if (typeof window !== "undefined") {
win = window;
} else if (typeof globalThis !== "undefined") {
win = globalThis;
} else if (typeof self !== "undefined") {
win = self;
} else {
win = {};
}
var global$1 = win;
var defaults = {
// Base parallax options.
type: "scroll",
speed: 0.5,
containerClass: "jarallax-container",
imgSrc: null,
imgElement: ".jarallax-img",
imgSize: "cover",
imgPosition: "50% 50%",
imgRepeat: "no-repeat",
keepImg: false,
elementInViewport: null,
zIndex: -100,
disableParallax: false,
// Callbacks.
onScroll: null,
onInit: null,
onDestroy: null,
onCoverImage: null,
// Video options.
videoClass: "jarallax-video",
videoSrc: null,
videoStartTime: 0,
videoEndTime: 0,
videoVolume: 0,
videoLoop: true,
videoPlayOnlyVisible: true,
videoLazyLoading: true,
disableVideo: false,
// Video callbacks.
onVideoInsert: null,
onVideoWorkerInit: null
};
/**
* Add styles to element.
*
* @param {Element} el - element.
* @param {String|Object} styles - styles list.
*
* @returns {Element}
*/
function css(el, styles) {
if (typeof styles === "string") {
return global$1.getComputedStyle(el).getPropertyValue(styles);
}
Object.keys(styles).forEach(key => {
el.style[key] = styles[key];
});
return el;
}
/**
* Extend like jQuery.extend
*
* @param {Object} out - output object.
* @param {...any} args - additional objects to extend.
*
* @returns {Object}
*/
function extend(out, ...args) {
out = out || {};
Object.keys(args).forEach(i => {
if (!args[i]) {
return;
}
Object.keys(args[i]).forEach(key => {
out[key] = args[i][key];
});
});
return out;
}
/**
* Get all parents of the element.
*
* @param {Element} elem - DOM element.
*
* @returns {Array}
*/
function getParents(elem) {
const parents = [];
while (elem.parentElement !== null) {
elem = elem.parentElement;
if (elem.nodeType === 1) {
parents.push(elem);
}
}
return parents;
}
const {
navigator: navigator$1
} = global$1;
const mobileAgent = /*#__PURE__*//Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator$1.userAgent);
function isMobile() {
return mobileAgent;
}
let wndW;
let wndH;
let $deviceHelper;
/**
* The most popular mobile browsers changes height after page scroll and this generates image jumping.
* We can fix it using this workaround with vh units.
*/
function getDeviceHeight() {
if (!$deviceHelper && document.body) {
$deviceHelper = document.createElement("div");
$deviceHelper.style.cssText = "position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;";
document.body.appendChild($deviceHelper);
}
return ($deviceHelper ? $deviceHelper.clientHeight : 0) || global$1.innerHeight || document.documentElement.clientHeight;
}
function updateWindowHeight() {
wndW = global$1.innerWidth || document.documentElement.clientWidth;
if (isMobile()) {
wndH = getDeviceHeight();
} else {
wndH = global$1.innerHeight || document.documentElement.clientHeight;
}
}
updateWindowHeight();
global$1.addEventListener("resize", updateWindowHeight);
global$1.addEventListener("orientationchange", updateWindowHeight);
global$1.addEventListener("load", updateWindowHeight);
ready(() => {
updateWindowHeight();
});
function getWindowSize() {
return {
width: wndW,
height: wndH
};
}
// List with all jarallax instances
// need to render all in one scroll/resize event.
const jarallaxList = [];
function updateParallax() {
if (!jarallaxList.length) {
return;
}
const {
width: wndW,
height: wndH
} = getWindowSize();
jarallaxList.forEach((data, k) => {
const {
instance,
oldData
} = data;
if (!instance.isVisible()) {
return;
}
const clientRect = instance.$item.getBoundingClientRect();
const newData = {
width: clientRect.width,
height: clientRect.height,
top: clientRect.top,
bottom: clientRect.bottom,
wndW,
wndH
};
const isResized = !oldData || oldData.wndW !== newData.wndW || oldData.wndH !== newData.wndH || oldData.width !== newData.width || oldData.height !== newData.height;
const isScrolled = isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;
jarallaxList[k].oldData = newData;
if (isResized) {
instance.onResize();
}
if (isScrolled) {
instance.onScroll();
}
});
global$1.requestAnimationFrame(updateParallax);
}
const visibilityObserver = /*#__PURE__*/new global$1.IntersectionObserver(entries => {
entries.forEach(entry => {
entry.target.jarallax.isElementInViewport = entry.isIntersecting;
});
}, {
// We have to start parallax calculation before the block is in view
// to prevent possible parallax jumping.
rootMargin: "50px"
});
function addObserver(instance) {
jarallaxList.push({
instance
});
if (jarallaxList.length === 1) {
global$1.requestAnimationFrame(updateParallax);
}
visibilityObserver.observe(instance.options.elementInViewport || instance.$item);
}
function removeObserver(instance) {
jarallaxList.forEach((data, key) => {
if (data.instance.instanceID === instance.instanceID) {
jarallaxList.splice(key, 1);
}
});
visibilityObserver.unobserve(instance.options.elementInViewport || instance.$item);
}
/* eslint-disable class-methods-use-this */
const {
navigator
} = global$1;
let instanceID = 0;
// Jarallax class
class Jarallax {
constructor(item, userOptions) {
const self = this;
self.instanceID = instanceID;
instanceID += 1;
self.$item = item;
self.defaults = {
...defaults
};
// prepare data-options
const dataOptions = self.$item.dataset || {};
const pureDataOptions = {};
Object.keys(dataOptions).forEach(key => {
const lowerCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);
if (lowerCaseOption && typeof self.defaults[lowerCaseOption] !== "undefined") {
pureDataOptions[lowerCaseOption] = dataOptions[key];
}
});
self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);
self.pureOptions = self.extend({}, self.options);
// prepare 'true' and 'false' strings to boolean
Object.keys(self.options).forEach(key => {
if (self.options[key] === "true") {
self.options[key] = true;
} else if (self.options[key] === "false") {
self.options[key] = false;
}
});
// fix speed option [-1.0, 2.0]
self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));
// prepare disableParallax callback
if (typeof self.options.disableParallax === "string") {
self.options.disableParallax = new RegExp(self.options.disableParallax);
}
if (self.options.disableParallax instanceof RegExp) {
const disableParallaxRegexp = self.options.disableParallax;
self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);
}
if (typeof self.options.disableParallax !== "function") {
self.options.disableParallax = () => false;
}
// prepare disableVideo callback
if (typeof self.options.disableVideo === "string") {
self.options.disableVideo = new RegExp(self.options.disableVideo);
}
if (self.options.disableVideo instanceof RegExp) {
const disableVideoRegexp = self.options.disableVideo;
self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);
}
if (typeof self.options.disableVideo !== "function") {
self.options.disableVideo = () => false;
}
// custom element to check if parallax in viewport
let elementInVP = self.options.elementInViewport;
// get first item from array
if (elementInVP && typeof elementInVP === "object" && typeof elementInVP.length !== "undefined") {
[elementInVP] = elementInVP;
}
// check if dom element
if (!(elementInVP instanceof Element)) {
elementInVP = null;
}
self.options.elementInViewport = elementInVP;
self.image = {
src: self.options.imgSrc || null,
$container: null,
useImgTag: false,
// 1. Position fixed is needed for the most of browsers because absolute position have glitches
// 2. On MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75
// 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'
position: "fixed"
};
if (self.initImg() && self.canInitParallax()) {
self.init();
}
}
css(el, styles) {
return css(el, styles);
}
extend(out, ...args) {
return extend(out, ...args);
}
// get window size and scroll position. Useful for extensions
getWindowData() {
const {
width,
height
} = getWindowSize();
return {
width,
height,
y: document.documentElement.scrollTop
};
}
// Jarallax functions
initImg() {
const self = this;
// find image element
let $imgElement = self.options.imgElement;
if ($imgElement && typeof $imgElement === "string") {
$imgElement = self.$item.querySelector($imgElement);
}
// check if dom element
if (!($imgElement instanceof Element)) {
if (self.options.imgSrc) {
$imgElement = new Image();
$imgElement.src = self.options.imgSrc;
} else {
$imgElement = null;
}
}
if ($imgElement) {
if (self.options.keepImg) {
self.image.$item = $imgElement.cloneNode(true);
} else {
self.image.$item = $imgElement;
self.image.$itemParent = $imgElement.parentNode;
}
self.image.useImgTag = true;
}
// true if there is img tag
if (self.image.$item) {
return true;
}
// get image src
if (self.image.src === null) {
self.image.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
self.image.bgImage = self.css(self.$item, "background-image");
}
return !(!self.image.bgImage || self.image.bgImage === "none");
}
canInitParallax() {
return !this.options.disableParallax();
}
init() {
const self = this;
const containerStyles = {
position: "absolute",
top: 0,
left: 0,
width: "100%",
height: "100%",
overflow: "hidden"
};
let imageStyles = {
pointerEvents: "none",
transformStyle: "preserve-3d",
backfaceVisibility: "hidden"
};
if (!self.options.keepImg) {
// save default user styles
const curStyle = self.$item.getAttribute("style");
if (curStyle) {
self.$item.setAttribute("data-jarallax-original-styles", curStyle);
}
if (self.image.useImgTag) {
const curImgStyle = self.image.$item.getAttribute("style");
if (curImgStyle) {
self.image.$item.setAttribute("data-jarallax-original-styles", curImgStyle);
}
}
}
// set relative position and z-index to the parent
if (self.css(self.$item, "position") === "static") {
self.css(self.$item, {
position: "relative"
});
}
if (self.css(self.$item, "z-index") === "auto") {
self.css(self.$item, {
zIndex: 0
});
}
// container for parallax image
self.image.$container = document.createElement("div");
self.css(self.image.$container, containerStyles);
self.css(self.image.$container, {
"z-index": self.options.zIndex
});
// it will remove some image overlapping
// overlapping occur due to an image position fixed inside absolute position element
// needed only when background in fixed position
if (this.image.position === "fixed") {
self.css(self.image.$container, {
"-webkit-clip-path": "polygon(0 0, 100% 0, 100% 100%, 0 100%)",
"clip-path": "polygon(0 0, 100% 0, 100% 100%, 0 100%)"
});
}
// Add container unique ID.
self.image.$container.setAttribute("id", `jarallax-container-${self.instanceID}`);
// Add container class.
if (self.options.containerClass) {
self.image.$container.setAttribute("class", self.options.containerClass);
}
self.$item.appendChild(self.image.$container);
// use img tag
if (self.image.useImgTag) {
imageStyles = self.extend({
"object-fit": self.options.imgSize,
"object-position": self.options.imgPosition,
"max-width": "none"
}, containerStyles, imageStyles);
// use div with background image
} else {
self.image.$item = document.createElement("div");
if (self.image.src) {
imageStyles = self.extend({
"background-position": self.options.imgPosition,
"background-size": self.options.imgSize,
"background-repeat": self.options.imgRepeat,
"background-image": self.image.bgImage || `url("${self.image.src}")`
}, containerStyles, imageStyles);
}
}
if (self.options.type === "opacity" || self.options.type === "scale" || self.options.type === "scale-opacity" || self.options.speed === 1) {
self.image.position = "absolute";
}
// 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)
// discussion - https://github.com/nk-o/jarallax/issues/9
// 2. Check if parents have overflow scroll
if (self.image.position === "fixed") {
const $parents = getParents(self.$item).filter(el => {
const styles = global$1.getComputedStyle(el);
const parentTransform = styles["-webkit-transform"] || styles["-moz-transform"] || styles.transform;
const overflowRegex = /(auto|scroll)/;
return parentTransform && parentTransform !== "none" || overflowRegex.test(styles.overflow + styles["overflow-y"] + styles["overflow-x"]);
});
self.image.position = $parents.length ? "absolute" : "fixed";
}
// add position to parallax block
imageStyles.position = self.image.position;
// insert parallax image
self.css(self.image.$item, imageStyles);
self.image.$container.appendChild(self.image.$item);
// set initial position and size
self.onResize();
self.onScroll(true);
// call onInit event
if (self.options.onInit) {
self.options.onInit.call(self);
}
// remove default user background
if (self.css(self.$item, "background-image") !== "none") {
self.css(self.$item, {
"background-image": "none"
});
}
addObserver(self);
}
destroy() {
const self = this;
removeObserver(self);
// return styles on container as before jarallax init
const originalStylesTag = self.$item.getAttribute("data-jarallax-original-styles");
self.$item.removeAttribute("data-jarallax-original-styles");
// null occurs if there is no style tag before jarallax init
if (!originalStylesTag) {
self.$item.removeAttribute("style");
} else {
self.$item.setAttribute("style", originalStylesTag);
}
if (self.image.useImgTag) {
// return styles on img tag as before jarallax init
const originalStylesImgTag = self.image.$item.getAttribute("data-jarallax-original-styles");
self.image.$item.removeAttribute("data-jarallax-original-styles");
// null occurs if there is no style tag before jarallax init
if (!originalStylesImgTag) {
self.image.$item.removeAttribute("style");
} else {
self.image.$item.setAttribute("style", originalStylesTag);
}
// move img tag to its default position
if (self.image.$itemParent) {
self.image.$itemParent.appendChild(self.image.$item);
}
}
// remove additional dom elements
if (self.image.$container) {
self.image.$container.parentNode.removeChild(self.image.$container);
}
// call onDestroy event
if (self.options.onDestroy) {
self.options.onDestroy.call(self);
}
// delete jarallax from item
delete self.$item.jarallax;
}
coverImage() {
const self = this;
const {
height: wndH
} = getWindowSize();
const rect = self.image.$container.getBoundingClientRect();
const contH = rect.height;
const {
speed
} = self.options;
const isScroll = self.options.type === "scroll" || self.options.type === "scroll-opacity";
let scrollDist = 0;
let resultH = contH;
let resultMT = 0;
// scroll parallax
if (isScroll) {
// scroll distance and height for image
if (speed < 0) {
scrollDist = speed * Math.max(contH, wndH);
if (wndH < contH) {
scrollDist -= speed * (contH - wndH);
}
} else {
scrollDist = speed * (contH + wndH);
}
// size for scroll parallax
if (speed > 1) {
resultH = Math.abs(scrollDist - wndH);
} else if (speed < 0) {
resultH = scrollDist / speed + Math.abs(scrollDist);
} else {
resultH += (wndH - contH) * (1 - speed);
}
scrollDist /= 2;
}
// store scroll distance
self.parallaxScrollDistance = scrollDist;
// vertical center
if (isScroll) {
resultMT = (wndH - resultH) / 2;
} else {
resultMT = (contH - resultH) / 2;
}
// apply result to item
self.css(self.image.$item, {
height: `${resultH}px`,
marginTop: `${resultMT}px`,
left: self.image.position === "fixed" ? `${rect.left}px` : "0",
width: `${rect.width}px`
});
// call onCoverImage event
if (self.options.onCoverImage) {
self.options.onCoverImage.call(self);
}
// return some useful data. Used in the video cover function
return {
image: {
height: resultH,
marginTop: resultMT
},
container: rect
};
}
isVisible() {
return this.isElementInViewport || false;
}
onScroll(force) {
const self = this;
// stop calculations if item is not in viewport
if (!force && !self.isVisible()) {
return;
}
const {
height: wndH
} = getWindowSize();
const rect = self.$item.getBoundingClientRect();
const contT = rect.top;
const contH = rect.height;
const styles = {};
// calculate parallax helping variables
const beforeTop = Math.max(0, contT);
const beforeTopEnd = Math.max(0, contH + contT);
const afterTop = Math.max(0, -contT);
const beforeBottom = Math.max(0, contT + contH - wndH);
const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));
const afterBottom = Math.max(0, -contT + wndH - contH);
const fromViewportCenter = 1 - 2 * ((wndH - contT) / (wndH + contH));
// calculate on how percent of section is visible
let visiblePercent = 1;
if (contH < wndH) {
visiblePercent = 1 - (afterTop || beforeBottom) / contH;
} else if (beforeTopEnd <= wndH) {
visiblePercent = beforeTopEnd / wndH;
} else if (beforeBottomEnd <= wndH) {
visiblePercent = beforeBottomEnd / wndH;
}
// opacity
if (self.options.type === "opacity" || self.options.type === "scale-opacity" || self.options.type === "scroll-opacity") {
styles.transform = "translate3d(0,0,0)";
styles.opacity = visiblePercent;
}
// scale
if (self.options.type === "scale" || self.options.type === "scale-opacity") {
let scale = 1;
if (self.options.speed < 0) {
scale -= self.options.speed * visiblePercent;
} else {
scale += self.options.speed * (1 - visiblePercent);
}
styles.transform = `scale(${scale}) translate3d(0,0,0)`;
}
// scroll
if (self.options.type === "scroll" || self.options.type === "scroll-opacity") {
let positionY = self.parallaxScrollDistance * fromViewportCenter;
// fix if parallax block in absolute position
if (self.image.position === "absolute") {
positionY -= contT;
}
styles.transform = `translate3d(0,${positionY}px,0)`;
}
self.css(self.image.$item, styles);
// call onScroll event
if (self.options.onScroll) {
self.options.onScroll.call(self, {
section: rect,
beforeTop,
beforeTopEnd,
afterTop,
beforeBottom,
beforeBottomEnd,
afterBottom,
visiblePercent,
fromViewportCenter
});
}
}
onResize() {
this.coverImage();
}
}
// global definition
const jarallax = function (items, options, ...args) {
// check for dom element
// thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
if (typeof HTMLElement === "object" ? items instanceof HTMLElement : items && typeof items === "object" && items !== null && items.nodeType === 1 && typeof items.nodeName === "string") {
items = [items];
}
const len = items.length;
let k = 0;
let ret;
for (k; k < len; k += 1) {
if (typeof options === "object" || typeof options === "undefined") {
if (!items[k].jarallax) {
items[k].jarallax = new Jarallax(items[k], options);
}
} else if (items[k].jarallax) {
// eslint-disable-next-line prefer-spread
ret = items[k].jarallax[options].apply(items[k].jarallax, args);
}
if (typeof ret !== "undefined") {
return ret;
}
}
return items;
};
jarallax.constructor = Jarallax;
const $ = global$1.jQuery;
// jQuery support
if (typeof $ !== "undefined") {
const $Plugin = function (...args) {
Array.prototype.unshift.call(args, this);
const res = jarallax.apply(global$1, args);
return typeof res !== "object" ? res : this;
};
$Plugin.constructor = jarallax.constructor;
// no conflict
const old$Plugin = $.fn.jarallax;
$.fn.jarallax = $Plugin;
$.fn.jarallax.noConflict = function () {
$.fn.jarallax = old$Plugin;
return this;
};
}
// data-jarallax initialization
ready(() => {
jarallax(document.querySelectorAll("[data-jarallax]"));
});
return jarallax;
});
/***/ },
/***/ "./src/frontend/libs/jquery.backstretch/backstretch.js"
/*!*************************************************************!*\
!*** ./src/frontend/libs/jquery.backstretch/backstretch.js ***!
\*************************************************************/
() {
/*! Backstretch - v2.0.4 - 2013-06-19
* http://srobbin.com/jquery-plugins/backstretch/
* Copyright (c) 2013 Scott Robbin; Licensed MIT */
;
(function ($, window, undefined) {
'use strict';
/* PLUGIN DEFINITION
* ========================= */
$.fn.backstretch = function (images, options) {
// We need at least one image or method name
if (images === undefined || images.length === 0) {
$.error("No images were supplied for Backstretch");
}
/*
* Scroll the page one pixel to get the right window height on iOS
* Pretty harmless for everyone else
*/
if ($(window).scrollTop() === 0) {
window.scrollTo(0, 0);
}
return this.each(function () {
var $this = $(this),
obj = $this.data('backstretch');
// Do we already have an instance attached to this element?
if (obj) {
// Is this a method they're trying to execute?
if (typeof images == 'string' && typeof obj[images] == 'function') {
// Call the method
obj[images](options);
// No need to do anything further
return;
}
// Merge the old options with the new
options = $.extend(obj.options, options);
// Remove the old instance
obj.destroy(true);
}
obj = new Backstretch(this, images, options);
$this.data('backstretch', obj);
});
};
// If no element is supplied, we'll attach to body
$.backstretch = function (images, options) {
// Return the instance
return $('body').backstretch(images, options).data('backstretch');
};
// Custom selector
$.expr[':'].backstretch = function (elem) {
return $(elem).data('backstretch') !== undefined;
};
/* DEFAULTS
* ========================= */
$.fn.backstretch.defaults = {
centeredX: true // Should we center the image on the X axis?
,
centeredY: true // Should we center the image on the Y axis?
,
duration: 5000 // Amount of time in between slides (if slideshow)
,
fade: 0 // Speed of fade transition between slides
};
/* STYLES
*
* Baked-in styles that we'll apply to our elements.
* In an effort to keep the plugin simple, these are not exposed as options.
* That said, anyone can override these in their own stylesheet.
* ========================= */
var styles = {
wrap: {
left: 0,
top: 0,
overflow: 'hidden',
margin: 0,
padding: 0,
height: '100%',
width: '100%',
zIndex: -999999
},
img: {
position: 'absolute',
display: 'none',
margin: 0,
padding: 0,
border: 'none',
width: 'auto',
height: 'auto',
maxHeight: 'none',
maxWidth: 'none',
zIndex: -999999
}
};
/* CLASS DEFINITION
* ========================= */
var Backstretch = function (container, images, options) {
this.options = $.extend({}, $.fn.backstretch.defaults, options || {});
/* In its simplest form, we allow Backstretch to be called on an image path.
* e.g. $.backstretch('/path/to/image.jpg')
* So, we need to turn this back into an array.
*/
this.images = $.isArray(images) ? images : [images];
// Preload images
$.each(this.images, function () {
$('<img />')[0].src = this;
});
// Convenience reference to know if the container is body.
this.isBody = container === document.body;
/* We're keeping track of a few different elements
*
* Container: the element that Backstretch was called on.
* Wrap: a DIV that we place the image into, so we can hide the overflow.
* Root: Convenience reference to help calculate the correct height.
*/
this.$container = $(container);
this.$root = this.isBody ? supportsFixedPosition ? $(window) : $(document) : this.$container;
// Don't create a new wrap if one already exists (from a previous instance of Backstretch)
var $existing = this.$container.children(".backstretch").first();
this.$wrap = $existing.length ? $existing : $('<div class="backstretch"></div>').css(styles.wrap).appendTo(this.$container);
// Non-body elements need some style adjustments
if (!this.isBody) {
// If the container is statically positioned, we need to make it relative,
// and if no zIndex is defined, we should set it to zero.
var position = this.$container.css('position'),
zIndex = this.$container.css('zIndex');
this.$container.css({
position: position === 'static' ? 'relative' : position,
zIndex: zIndex === 'auto' ? 0 : zIndex,
background: 'none'
});
// Needs a higher z-index
this.$wrap.css({
zIndex: -999998
});
}
// Fixed or absolute positioning?
this.$wrap.css({
position: this.isBody && supportsFixedPosition ? 'fixed' : 'absolute'
});
// Set the first image
this.index = 0;
this.show(this.index);
// Listen for resize
$(window).on('resize.backstretch', $.proxy(this.resize, this)).on('orientationchange.backstretch', $.proxy(function () {
// Need to do this in order to get the right window height
if (this.isBody && window.pageYOffset === 0) {
window.scrollTo(0, 1);
this.resize();
}
}, this));
};
/* PUBLIC METHODS
* ========================= */
Backstretch.prototype = {
resize: function () {
try {
var bgCSS = {
left: 0,
top: 0
},
rootWidth = this.isBody ? this.$root.width() : this.$root.innerWidth(),
bgWidth = rootWidth,
rootHeight = this.isBody ? window.innerHeight ? window.innerHeight : this.$root.height() : this.$root.innerHeight(),
bgHeight = bgWidth / this.$img.data('ratio'),
bgOffset;
// Make adjustments based on image ratio
if (bgHeight >= rootHeight) {
bgOffset = (bgHeight - rootHeight) / 2;
if (this.options.centeredY) {
bgCSS.top = '-' + bgOffset + 'px';
}
} else {
bgHeight = rootHeight;
bgWidth = bgHeight * this.$img.data('ratio');
bgOffset = (bgWidth - rootWidth) / 2;
if (this.options.centeredX) {
bgCSS.left = '-' + bgOffset + 'px';
}
}
this.$wrap.css({
width: rootWidth,
height: rootHeight
}).find('img:not(.deleteable)').css({
width: bgWidth,
height: bgHeight
}).css(bgCSS);
} catch (err) {
// IE7 seems to trigger resize before the image is loaded.
// This try/catch block is a hack to let it fail gracefully.
}
return this;
}
// Show the slide at a certain position
,
show: function (newIndex) {
// Validate index
if (Math.abs(newIndex) > this.images.length - 1) {
return;
}
// Vars
var self = this,
oldImage = self.$wrap.find('img').addClass('deleteable'),
evtOptions = {
relatedTarget: self.$container[0]
};
// Trigger the "before" event
self.$container.trigger($.Event('backstretch.before', evtOptions), [self, newIndex]);
// Set the new index
this.index = newIndex;
// Pause the slideshow
clearInterval(self.interval);
// New image
self.$img = $('<img />').css(styles.img).bind('load', function (e) {
var imgWidth = this.width || $(e.target).width(),
imgHeight = this.height || $(e.target).height();
// Save the ratio
$(this).data('ratio', imgWidth / imgHeight);
// Show the image, then delete the old one
// "speed" option has been deprecated, but we want backwards compatibilty
$(this).fadeIn(self.options.speed || self.options.fade, function () {
oldImage.remove();
// Resume the slideshow
if (!self.paused) {
self.cycle();
}
// Trigger the "after" and "show" events
// "show" is being deprecated
$(['after', 'show']).each(function () {
self.$container.trigger($.Event('backstretch.' + this, evtOptions), [self, newIndex]);
});
});
// Resize
self.resize();
}).appendTo(self.$wrap);
// Hack for IE img onload event
self.$img.attr('src', self.images[newIndex]);
return self;
},
next: function () {
// Next slide
return this.show(this.index < this.images.length - 1 ? this.index + 1 : 0);
},
prev: function () {
// Previous slide
return this.show(this.index === 0 ? this.images.length - 1 : this.index - 1);
},
pause: function () {
// Pause the slideshow
this.paused = true;
return this;
},
resume: function () {
// Resume the slideshow
this.paused = false;
this.next();
return this;
},
cycle: function () {
// Start/resume the slideshow
if (this.images.length > 1) {
// Clear the interval, just in case
clearInterval(this.interval);
this.interval = setInterval($.proxy(function () {
// Check for paused slideshow
if (!this.paused) {
this.next();
}
}, this), this.options.duration);
}
return this;
},
destroy: function (preserveBackground) {
// Stop the resize events
$(window).off('resize.backstretch orientationchange.backstretch');
// Clear the interval
clearInterval(this.interval);
// Remove Backstretch
if (!preserveBackground) {
this.$wrap.remove();
}
this.$container.removeData('backstretch');
}
};
/* SUPPORTS FIXED POSITION?
*
* Based on code from jQuery Mobile 1.1.0
* http://jquerymobile.com/
*
* In a nutshell, we need to figure out if fixed positioning is supported.
* Unfortunately, this is very difficult to do on iOS, and usually involves
* injecting content, scrolling the page, etc.. It's ugly.
* jQuery Mobile uses this workaround. It's not ideal, but works.
*
* Modified to detect IE6
* ========================= */
var supportsFixedPosition = function () {
var ua = navigator.userAgent,
platform = navigator.platform
// Rendering engine is Webkit, and capture major version
,
wkmatch = ua.match(/AppleWebKit\/([0-9]+)/),
wkversion = !!wkmatch && wkmatch[1],
ffmatch = ua.match(/Fennec\/([0-9]+)/),
ffversion = !!ffmatch && ffmatch[1],
operammobilematch = ua.match(/Opera Mobi\/([0-9]+)/),
omversion = !!operammobilematch && operammobilematch[1],
iematch = ua.match(/MSIE ([0-9]+)/),
ieversion = !!iematch && iematch[1];
return !(
// iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
(platform.indexOf("iPhone") > -1 || platform.indexOf("iPad") > -1 || platform.indexOf("iPod") > -1) && wkversion && wkversion < 534 ||
// Opera Mini
window.operamini && {}.toString.call(window.operamini) === "[object OperaMini]" || operammobilematch && omversion < 7458 ||
//Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
ua.indexOf("Android") > -1 && wkversion && wkversion < 533 ||
// Firefox Mobile before 6.0 -
ffversion && ffversion < 6 ||
// WebOS less than 3
"palmGetResource" in window && wkversion && wkversion < 534 ||
// MeeGo
ua.indexOf("MeeGo") > -1 && ua.indexOf("NokiaBrowser/8.5.0") > -1 ||
// IE6
ieversion && ieversion <= 6);
}();
})(jQuery, window);
/***/ },
/***/ "./src/frontend/libs/jquery.bully.js"
/*!*******************************************!*\
!*** ./src/frontend/libs/jquery.bully.js ***!
\*******************************************/
() {
/*!
* jQuery Bully Plugin v0.1.3
* Examples and documentation at http://pixelgrade.github.io/rellax/
* Copyright (c) 2016 PixelGrade http://www.pixelgrade.com
* Licensed under MIT http://www.opensource.org/licenses/mit-license.php/
*/
(function ($, window, document, undefined) {
if (typeof Onepress_Bully === 'undefined') {
return;
}
var $window = $(window),
windowHeight = $window.height(),
elements = [],
$bully,
lastScrollY = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0),
current = 0,
inversed = false,
frameRendered = true;
$bully = $('<div class="c-bully">').appendTo("body");
if (Onepress_Bully.disable_mobile) {
$bully.addClass('c-bully-hide-on-mobile');
}
$current = $('<div class="c-bully__bullet c-bully__bullet--active">').appendTo($bully);
(function update() {
if (frameRendered !== true) {
var count = 0;
var lastItemId = false;
// Ty to to find item that bully over
var _bt = $bully.offset().top;
var _bh = $bully.height();
var _bb = _bh + _bt;
if ($("#masthead").hasClass("is-sticky")) {
_bb -= $("#masthead").height();
}
if ($("#wpadminbar").length) {
_bb -= $("#wpadminbar").height();
}
$.each(Onepress_Bully.sections, function (id, arg) {
var element = $("#" + id);
if (element.length) {
var _et = element.offset().top;
var _eh = element.height();
var _eb = _eh + _et;
if (_et <= _bt || _bb >= _eb || _bb >= _et && _eb > _bb) {
lastItemId = id;
if (arg.enable) {
count = count + 1;
}
}
}
});
// New insverse
if (lastItemId && typeof Onepress_Bully.sections[lastItemId] !== "undefined") {
if (Onepress_Bully.sections[lastItemId].inverse) {
$bully.addClass("c-bully--inversed");
} else {
$bully.removeClass("c-bully--inversed");
}
}
if (count !== current) {
var activeBullet = $bully.find("#bully__" + lastItemId);
var bullyOffset = $bully.offset();
var offset = 0;
if (activeBullet.length > 0) {
offset = activeBullet.offset().top - bullyOffset.top;
}
var offset = $bully.children('.c-bully__bullet').not('.c-bully__bullet--active').first().outerHeight(true) * (count - 1);
$current.removeClass("c-bully__bullet--squash");
setTimeout(function () {
$current.addClass("c-bully__bullet--squash");
});
$current.css("top", offset);
current = count;
$bully.find(".c-bully__bullet--pop").removeClass("c-bully__current");
activeBullet.addClass("c-bully__current");
}
}
window.requestAnimationFrame(update);
frameRendered = true;
})();
function reloadAll() {
$.each(elements, function (i, element) {
element._reloadElement();
});
}
function staggerClass($elements, classname, timeout) {
$.each($elements, function (i, obj) {
obj.$bullet.addClass(classname);
/*
var stagger = i * timeout;
setTimeout( function() {
obj.$bullet.addClass( classname );
}, stagger );
*/
});
}
$window.on("load", function (e) {
staggerClass(elements, "c-bully__bullet--pop", 400);
frameRendered = false;
});
$window.on("scroll", function (e) {
if (frameRendered === true) {
lastScrollY = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
}
frameRendered = false;
});
$window.on("load resize", function () {
reloadAll();
});
$(document).on("hero_ready", function () {
reloadAll();
});
function Bully(element, options) {
this.element = element;
this.options = $.extend({}, $.fn.bully.defaults, options);
var label = "";
var id = element.id;
var self = this,
$bullet = $('<div id="bully__' + id + '" class="c-bully__bullet">');
if (Onepress_Bully.enable_label) {
if (id && typeof Onepress_Bully.sections[id] !== "undefined") {
label = Onepress_Bully.sections[id].title;
}
if (label) {
$bullet.append('<div class="c-bully__title">' + label + "</div>");
}
}
$bullet.data("bully-data", self).appendTo($bully);
$bullet.on("click", function (event) {
event.preventDefault();
event.stopPropagation();
self.onClick();
});
this.$bullet = $bullet;
self._reloadElement();
elements.push(self);
current = 0;
}
Bully.prototype = {
constructor: Bully,
_reloadElement: function () {
this.offset = $(this.element).offset();
this.height = $(this.element).outerHeight();
},
_calcTop: function (top) {
// check if has sticky
if ($("#masthead").hasClass("is-sticky")) {
top -= $("#masthead").height();
}
if ($("#wpadminbar").length) {
top -= $("#wpadminbar").height();
}
return top;
},
onClick: function () {
var self = this,
$target = $("html, body");
if (self.options.scrollDuration == 0) {
$target.scrollTop(this._calcTop(self.offset.top));
return;
}
if (self.options.scrollDuration === "auto") {
var duration = Math.abs(lastScrollY - self.offset.top) / (self.options.scrollPerSecond / 1000);
$target.animate({
scrollTop: this._calcTop(self.offset.top)
}, duration);
return;
}
$target.animate({
scrollTop: this._calcTop(self.offset.top)
}, self.options.scrollDuration);
}
};
$.fn.bully = function (options) {
return this.each(function () {
if (!$.data(this, "plugin_" + Bully)) {
$.data(this, "plugin_" + Bully, new Bully(this, options));
}
});
};
$.fn.bully.defaults = {
scrollDuration: "auto",
scrollPerSecond: 4000,
sections: {}
};
$window.on("rellax load", reloadAll);
$.each(Onepress_Bully.sections, function (id, args) {
if (args.enable) {
const section = $("#" + id);
if (section.length) {
section.bully({
scrollPerSecond: 3000
});
}
}
});
})(jQuery, window, document);
/***/ },
/***/ "./src/frontend/libs/jquery.counterup.js"
/*!***********************************************!*\
!*** ./src/frontend/libs/jquery.counterup.js ***!
\***********************************************/
() {
/*!
* jquery.counterup.js 2.1.0
*
* Copyright 2013, Benjamin Intal http://gambit.ph @bfintal
* Released under the GPL v2 License
*
* Amended by Jeremy Paris, Ciro Mattia Gonano and others
*
* Date: Feb 24, 2017
*/
(function ($) {
"use strict";
$.fn.counterUp = function (options) {
// Defaults
var settings = $.extend({
time: 400,
delay: 10,
offset: 100,
beginAt: 0,
formatter: false,
context: "window",
callback: function () {}
}, options),
s;
return this.each(function () {
// Store the object
var $this = $(this),
counter = {
time: $(this).data("counterup-time") || settings.time,
delay: $(this).data("counterup-delay") || settings.delay,
offset: $(this).data("counterup-offset") || settings.offset,
beginAt: $(this).data("counterup-beginat") || settings.beginAt,
context: $(this).data("counterup-context") || settings.context
};
var counterUpper = function () {
var nums = [];
var divisions = counter.time / counter.delay;
var num = $this.attr("data-num") ? $this.attr("data-num") : $this.text();
var isComma = /[0-9]+,[0-9]+/.test(num);
num = num.replace(/,/g, "");
var decimalPlaces = (num.split(".")[1] || []).length;
if (counter.beginAt > num) counter.beginAt = num;
var isTime = /[0-9]+:[0-9]+:[0-9]+/.test(num);
// Convert time to total seconds
if (isTime) {
var times = num.split(":"),
m = 1;
s = 0;
while (times.length > 0) {
s += m * parseInt(times.pop(), 10);
m *= 60;
}
}
// Generate list of incremental numbers to display
for (var i = divisions; i >= counter.beginAt / num * divisions; i--) {
var newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces);
// Add incremental seconds and convert back to time
if (isTime) {
newNum = parseInt(s / divisions * i);
var hours = parseInt(newNum / 3600) % 24;
var minutes = parseInt(newNum / 60) % 60;
var seconds = parseInt(newNum % 60, 10);
newNum = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
}
// Preserve commas if input had commas
if (isComma) {
while (/(\d+)(\d{3})/.test(newNum.toString())) {
newNum = newNum.toString().replace(/(\d+)(\d{3})/, "$1" + "," + "$2");
}
}
if (settings.formatter) {
newNum = settings.formatter.call(this, newNum);
}
nums.unshift(newNum);
}
$this.data("counterup-nums", nums);
$this.text(counter.beginAt);
// Updates the number until we're done
var f = function () {
if (!$this.data("counterup-nums")) {
settings.callback.call(this);
return;
}
$this.html($this.data("counterup-nums").shift());
if ($this.data("counterup-nums").length) {
setTimeout($this.data("counterup-func"), counter.delay);
} else {
$this.data("counterup-nums", null);
$this.data("counterup-func", null);
settings.callback.call(this);
}
};
$this.data("counterup-func", f);
// Start the count up
setTimeout($this.data("counterup-func"), counter.delay);
};
// Perform counts when the element gets into view
$this.waypoint(function (direction) {
counterUpper();
this.destroy(); //-- Waypoint 3.0 version of triggerOnce
}, {
offset: counter.offset + "%",
context: counter.context
});
});
};
})(jQuery);
/***/ },
/***/ "./src/frontend/libs/tether/global.js"
/*!********************************************!*\
!*** ./src/frontend/libs/tether/global.js ***!
\********************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./src/frontend/libs/tether/index.js");
/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_index_js__WEBPACK_IMPORTED_MODULE_0__);
/**
* Side-effect module that exposes Tether on the global scope.
*
* Bootstrap 4 alpha 6's Tooltip / Popover IIFEs run
* `if (typeof Tether === "undefined") throw new Error(...)` at
* module-evaluation time (the IIFE body, not the constructor) — so the
* global must exist BEFORE `bootstrap.min.js` is evaluated.
*
* ES-module imports are evaluated in source order, but statements in
* the importing module's body run AFTER all of that module's imports
* have resolved. The previous fix put the assignment in the entry
* module's body, which executed too late and made Bootstrap throw at
* load. Wrapping the assignment in its own module turns it into a
* side-effect import: it executes during the import-evaluation pass,
* before bootstrap's IIFE runs, as long as it is imported first in
* the entry file.
*/
window.Tether = (_index_js__WEBPACK_IMPORTED_MODULE_0___default());
/***/ },
/***/ "./src/frontend/libs/tether/index.js"
/*!*******************************************!*\
!*** ./src/frontend/libs/tether/index.js ***!
\*******************************************/
(module) {
/*! tether 2.0.0-beta.5 */
(function (global, factory) {
true ? module.exports = factory() : 0;
})(this, function () {
'use strict';
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
subClass.__proto__ = superClass;
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
/**
* Checks if `value` is classified as a `Function` object.
* @param {*} value The param to check if it is a function
*/
function isFunction(value) {
return typeof value === 'function';
}
/**
* Checks if `value` is classified as a `Number` object.
* @param {*} value The param to check if it is a number
*/
function isNumber(value) {
return typeof value === 'number';
}
/**
* Checks if `value` is classified as an `Object`.
* @param {*} value The param to check if it is an object
*/
function isObject(value) {
return typeof value === 'object';
}
/**
* Checks if `value` is classified as a `String` object.
* @param {*} value The param to check if it is a string
*/
function isString(value) {
return typeof value === 'string';
}
/**
* Checks if `value` is undefined.
* @param {*} value The param to check if it is undefined
*/
function isUndefined(value) {
return value === undefined;
}
function addClass(el, name) {
name.split(' ').forEach(function (cls) {
if (cls.trim()) {
el.classList.add(cls);
}
});
}
/**
* Get class string based on previously determined classes
* @param {String} [key=''] - default value for the classes object
* @param {Object} classes
* @param {String} classPrefix
*/
function getClass(key, classes, classPrefix) {
if (key === void 0) {
key = '';
}
if (!isUndefined(classes) && !isUndefined(classes[key])) {
if (classes[key] === false) {
return '';
}
return classes[key];
} else if (classPrefix) {
return classPrefix + "-" + key;
} else {
return key;
}
}
function removeClass(el, name) {
name.split(' ').forEach(function (cls) {
if (cls.trim()) {
el.classList.remove(cls);
}
});
}
function updateClasses(el, add, all) {
// Of the set of 'all' classes, we need the 'add' classes, and only the
// 'add' classes to be set.
all.forEach(function (cls) {
if (add.indexOf(cls) === -1 && el.classList.contains(cls)) {
removeClass(el, cls);
}
});
add.forEach(function (cls) {
if (!el.classList.contains(cls)) {
addClass(el, cls);
}
});
}
var deferred = [];
function defer(fn) {
deferred.push(fn);
}
function flush() {
var fn; // eslint-disable-next-line
while (fn = deferred.pop()) {
fn();
}
}
var _scrollBarSize = null;
function extend(out) {
if (out === void 0) {
out = {};
}
var args = [];
Array.prototype.push.apply(args, arguments);
args.slice(1).forEach(function (obj) {
if (obj) {
for (var key in obj) {
if ({}.hasOwnProperty.call(obj, key)) {
out[key] = obj[key];
}
}
}
});
return out;
}
function getScrollBarSize() {
if (_scrollBarSize) {
return _scrollBarSize;
}
var inner = document.createElement('div');
inner.style.width = '100%';
inner.style.height = '200px';
var outer = document.createElement('div');
extend(outer.style, {
position: 'absolute',
top: 0,
left: 0,
pointerEvents: 'none',
visibility: 'hidden',
width: '200px',
height: '150px',
overflow: 'hidden'
});
outer.appendChild(inner);
document.body.appendChild(outer);
var widthContained = inner.offsetWidth;
outer.style.overflow = 'scroll';
var widthScroll = inner.offsetWidth;
if (widthContained === widthScroll) {
widthScroll = outer.clientWidth;
}
document.body.removeChild(outer);
var width = widthContained - widthScroll;
_scrollBarSize = {
width: width,
height: width
};
return _scrollBarSize;
}
var uniqueId = function () {
var id = 0;
return function () {
return ++id;
};
}();
var zeroPosCache = {};
var zeroElement = null;
function getBounds(body, el) {
var doc;
if (el === document) {
doc = document;
el = document.documentElement;
} else {
doc = el.ownerDocument;
}
var docEl = doc.documentElement;
var box = _getActualBoundingClientRect(el);
var origin = _getOrigin(body);
box.top -= origin.top;
box.left -= origin.left;
if (isUndefined(box.width)) {
box.width = document.body.scrollWidth - box.left - box.right;
}
if (isUndefined(box.height)) {
box.height = document.body.scrollHeight - box.top - box.bottom;
}
box.top = box.top - docEl.clientTop;
box.left = box.left - docEl.clientLeft;
box.right = doc.body.clientWidth - box.width - box.left;
box.bottom = doc.body.clientHeight - box.height - box.top;
return box;
}
/**
* Gets bounds for when target modifiier is 'scroll-handle'
* @param target
* @return {{left: number, width: number, height: number}}
*/
function getScrollHandleBounds(body, target) {
var bounds; // We have to do the check for the scrollTop and if target === document.body here and set to variables
// because we may reset target below.
var targetScrollTop = target.scrollTop;
var targetIsBody = target === document.body;
if (targetIsBody) {
target = document.documentElement;
bounds = {
left: pageXOffset,
top: pageYOffset,
height: innerHeight,
width: innerWidth
};
} else {
bounds = getBounds(body, target);
}
var style = getComputedStyle(target);
var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || !targetIsBody;
var scrollBottom = 0;
if (hasBottomScroll) {
scrollBottom = 15;
}
var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;
var out = {
width: 15,
height: height * 0.975 * (height / target.scrollHeight),
left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15
};
var fitAdj = 0;
if (height < 408 && targetIsBody) {
fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;
}
if (!targetIsBody) {
out.height = Math.max(out.height, 24);
}
var scrollPercentage = targetScrollTop / (target.scrollHeight - height);
out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);
if (targetIsBody) {
out.height = Math.max(out.height, 24);
}
return out;
}
/**
* Gets bounds for when target modifiier is 'visible
* @param target
* @return {{top: *, left: *, width: *, height: *}}
*/
function getVisibleBounds(body, target) {
if (target === document.body) {
return {
top: pageYOffset,
left: pageXOffset,
height: innerHeight,
width: innerWidth
};
} else {
var bounds = getBounds(body, target);
var out = {
height: bounds.height,
width: bounds.width,
top: bounds.top,
left: bounds.left
};
out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));
out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));
out.height = Math.min(innerHeight, out.height);
out.height -= 2;
out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));
out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));
out.width = Math.min(innerWidth, out.width);
out.width -= 2;
if (out.top < pageYOffset) {
out.top = pageYOffset;
}
if (out.left < pageXOffset) {
out.left = pageXOffset;
}
return out;
}
}
function removeUtilElements(body) {
if (zeroElement) {
body.removeChild(zeroElement);
}
zeroElement = null;
}
/**
* Same as native getBoundingClientRect, except it takes into account parent <frame> offsets
* if the element lies within a nested document (<frame> or <iframe>-like).
* @param node
*/
function _getActualBoundingClientRect(node) {
var boundingRect = node.getBoundingClientRect(); // The original object returned by getBoundingClientRect is immutable, so we clone it
// We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9
var rect = {};
for (var k in boundingRect) {
rect[k] = boundingRect[k];
}
try {
if (node.ownerDocument !== document) {
var frameElement = node.ownerDocument.defaultView.frameElement;
if (frameElement) {
var frameRect = _getActualBoundingClientRect(frameElement);
rect.top += frameRect.top;
rect.bottom += frameRect.top;
rect.left += frameRect.left;
rect.right += frameRect.left;
}
}
} catch (err) {// Ignore "Access is denied" in IE11/Edge
}
return rect;
}
function _getOrigin(body) {
// getBoundingClientRect is unfortunately too accurate. It introduces a pixel or two of
// jitter as the user scrolls that messes with our ability to detect if two positions
// are equivilant or not. We place an element at the top left of the page that will
// get the same jitter, so we can cancel the two out.
var node = zeroElement;
if (!node || !body.contains(node)) {
node = document.createElement('div');
node.setAttribute('data-tether-id', uniqueId());
extend(node.style, {
top: 0,
left: 0,
position: 'absolute'
});
body.appendChild(node);
zeroElement = node;
}
var id = node.getAttribute('data-tether-id');
if (isUndefined(zeroPosCache[id])) {
zeroPosCache[id] = _getActualBoundingClientRect(node); // Clear the cache when this position call is done
defer(function () {
delete zeroPosCache[id];
});
}
return zeroPosCache[id];
}
var Abutment = {
position: function position(_ref) {
var _this = this;
var top = _ref.top,
left = _ref.left;
var _this$cache = this.cache('element-bounds', function () {
return getBounds(_this.element);
}),
height = _this$cache.height,
width = _this$cache.width;
var targetPos = this.getTargetBounds();
var bottom = top + height;
var right = left + width;
var abutted = [];
if (top <= targetPos.bottom && bottom >= targetPos.top) {
['left', 'right'].forEach(function (side) {
var targetPosSide = targetPos[side];
if (targetPosSide === left || targetPosSide === right) {
abutted.push(side);
}
});
}
if (left <= targetPos.right && right >= targetPos.left) {
['top', 'bottom'].forEach(function (side) {
var targetPosSide = targetPos[side];
if (targetPosSide === top || targetPosSide === bottom) {
abutted.push(side);
}
});
}
var sides = ['left', 'top', 'right', 'bottom'];
var _this$options = this.options,
classes = _this$options.classes,
classPrefix = _this$options.classPrefix;
this.all.push(getClass('abutted', classes, classPrefix));
sides.forEach(function (side) {
_this.all.push(getClass('abutted', classes, classPrefix) + "-" + side);
});
if (abutted.length) {
this.add.push(getClass('abutted', classes, classPrefix));
}
abutted.forEach(function (side) {
_this.add.push(getClass('abutted', classes, classPrefix) + "-" + side);
});
defer(function () {
if (!(_this.options.addTargetClasses === false)) {
updateClasses(_this.target, _this.add, _this.all);
}
updateClasses(_this.element, _this.add, _this.all);
});
return true;
}
};
var BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];
/**
* Returns an array of bounds of the format [left, top, right, bottom]
* @param tether
* @param to
* @return {*[]|HTMLElement|ActiveX.IXMLDOMElement}
*/
function getBoundingRect(body, tether, to) {
// arg to is required
if (!to) {
return null;
}
if (to === 'scrollParent') {
to = tether.scrollParents[0];
} else if (to === 'window') {
to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];
}
if (to === document) {
to = to.documentElement;
}
if (!isUndefined(to.nodeType)) {
var node = to;
var size = getBounds(body, to);
var pos = size;
var style = getComputedStyle(to);
to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top]; // Account any parent Frames scroll offset
if (node.ownerDocument !== document) {
var win = node.ownerDocument.defaultView;
to[0] += win.pageXOffset;
to[1] += win.pageYOffset;
to[2] += win.pageXOffset;
to[3] += win.pageYOffset;
}
BOUNDS_FORMAT.forEach(function (side, i) {
side = side[0].toUpperCase() + side.substr(1);
if (side === 'Top' || side === 'Left') {
to[i] += parseFloat(style["border" + side + "Width"]);
} else {
to[i] -= parseFloat(style["border" + side + "Width"]);
}
});
}
return to;
}
/**
* Add out of bounds classes to the list of classes we add to tether
* @param {string[]} oob An array of directions that are out of bounds
* @param {string[]} addClasses The array of classes to add to Tether
* @param {string[]} classes The array of class types for Tether
* @param {string} classPrefix The prefix to add to the front of the class
* @param {string} outOfBoundsClass The class to apply when out of bounds
* @private
*/
function _addOutOfBoundsClass(oob, addClasses, classes, classPrefix, outOfBoundsClass) {
if (oob.length) {
var oobClass;
if (!isUndefined(outOfBoundsClass)) {
oobClass = outOfBoundsClass;
} else {
oobClass = getClass('out-of-bounds', classes, classPrefix);
}
addClasses.push(oobClass);
oob.forEach(function (side) {
addClasses.push(oobClass + "-" + side);
});
}
}
/**
* Calculates if out of bounds or pinned in the X direction.
*
* @param {number} left
* @param {number[]} bounds Array of bounds of the format [left, top, right, bottom]
* @param {number} width
* @param pin
* @param pinned
* @param {string[]} oob
* @return {number}
* @private
*/
function _calculateOOBAndPinnedLeft(left, bounds, width, pin, pinned, oob) {
if (left < bounds[0]) {
if (pin.indexOf('left') >= 0) {
left = bounds[0];
pinned.push('left');
} else {
oob.push('left');
}
}
if (left + width > bounds[2]) {
if (pin.indexOf('right') >= 0) {
left = bounds[2] - width;
pinned.push('right');
} else {
oob.push('right');
}
}
return left;
}
/**
* Calculates if out of bounds or pinned in the Y direction.
*
* @param {number} top
* @param {number[]} bounds Array of bounds of the format [left, top, right, bottom]
* @param {number} height
* @param pin
* @param {string[]} pinned
* @param {string[]} oob
* @return {number}
* @private
*/
function _calculateOOBAndPinnedTop(top, bounds, height, pin, pinned, oob) {
if (top < bounds[1]) {
if (pin.indexOf('top') >= 0) {
top = bounds[1];
pinned.push('top');
} else {
oob.push('top');
}
}
if (top + height > bounds[3]) {
if (pin.indexOf('bottom') >= 0) {
top = bounds[3] - height;
pinned.push('bottom');
} else {
oob.push('bottom');
}
}
return top;
}
/**
* Flip X "together"
* @param {object} tAttachment The target attachment
* @param {object} eAttachment The element attachment
* @param {number[]} bounds Array of bounds of the format [left, top, right, bottom]
* @param {number} width
* @param targetWidth
* @param {number} left
* @private
*/
function _flipXTogether(tAttachment, eAttachment, bounds, width, targetWidth, left) {
if (left < bounds[0] && tAttachment.left === 'left') {
if (eAttachment.left === 'right') {
left += targetWidth;
tAttachment.left = 'right';
left += width;
eAttachment.left = 'left';
} else if (eAttachment.left === 'left') {
left += targetWidth;
tAttachment.left = 'right';
left -= width;
eAttachment.left = 'right';
}
} else if (left + width > bounds[2] && tAttachment.left === 'right') {
if (eAttachment.left === 'left') {
left -= targetWidth;
tAttachment.left = 'left';
left -= width;
eAttachment.left = 'right';
} else if (eAttachment.left === 'right') {
left -= targetWidth;
tAttachment.left = 'left';
left += width;
eAttachment.left = 'left';
}
} else if (tAttachment.left === 'center') {
if (left + width > bounds[2] && eAttachment.left === 'left') {
left -= width;
eAttachment.left = 'right';
} else if (left < bounds[0] && eAttachment.left === 'right') {
left += width;
eAttachment.left = 'left';
}
}
return left;
}
/**
* Flip Y "together"
* @param {object} tAttachment The target attachment
* @param {object} eAttachment The element attachment
* @param {number[]} bounds Array of bounds of the format [left, top, right, bottom]
* @param {number} height
* @param targetHeight
* @param {number} top
* @private
*/
function _flipYTogether(tAttachment, eAttachment, bounds, height, targetHeight, top) {
if (tAttachment.top === 'top') {
if (eAttachment.top === 'bottom' && top < bounds[1]) {
top += targetHeight;
tAttachment.top = 'bottom';
top += height;
eAttachment.top = 'top';
} else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {
top -= height - targetHeight;
tAttachment.top = 'bottom';
eAttachment.top = 'bottom';
}
}
if (tAttachment.top === 'bottom') {
if (eAttachment.top === 'top' && top + height > bounds[3]) {
top -= targetHeight;
tAttachment.top = 'top';
top -= height;
eAttachment.top = 'bottom';
} else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {
top += height - targetHeight;
tAttachment.top = 'top';
eAttachment.top = 'top';
}
}
if (tAttachment.top === 'middle') {
if (top + height > bounds[3] && eAttachment.top === 'top') {
top -= height;
eAttachment.top = 'bottom';
} else if (top < bounds[1] && eAttachment.top === 'bottom') {
top += height;
eAttachment.top = 'top';
}
}
return top;
}
/**
* Get all the initial classes
* @param classes
* @param {string} classPrefix
* @param constraints
* @return {[*, *]}
* @private
*/
function _getAllClasses(classes, classPrefix, constraints) {
var allClasses = [getClass('pinned', classes, classPrefix), getClass('out-of-bounds', classes, classPrefix)];
constraints.forEach(function (constraint) {
var outOfBoundsClass = constraint.outOfBoundsClass,
pinnedClass = constraint.pinnedClass;
if (outOfBoundsClass) {
allClasses.push(outOfBoundsClass);
}
if (pinnedClass) {
allClasses.push(pinnedClass);
}
});
allClasses.forEach(function (cls) {
['left', 'top', 'right', 'bottom'].forEach(function (side) {
allClasses.push(cls + "-" + side);
});
});
return allClasses;
}
var Constraint = {
position: function position(_ref) {
var _this = this;
var top = _ref.top,
left = _ref.left,
targetAttachment = _ref.targetAttachment;
if (!this.options.constraints) {
return true;
}
var _this$cache = this.cache('element-bounds', function () {
return getBounds(_this.bodyElement, _this.element);
}),
height = _this$cache.height,
width = _this$cache.width;
if (width === 0 && height === 0 && !isUndefined(this.lastSize)) {
// Handle the item getting hidden as a result of our positioning without glitching
// the classes in and out
var _this$lastSize = this.lastSize;
width = _this$lastSize.width;
height = _this$lastSize.height;
}
var targetSize = this.cache('target-bounds', function () {
return _this.getTargetBounds();
});
var targetHeight = targetSize.height,
targetWidth = targetSize.width;
var _this$options = this.options,
classes = _this$options.classes,
classPrefix = _this$options.classPrefix;
var allClasses = _getAllClasses(classes, classPrefix, this.options.constraints);
var addClasses = [];
var tAttachment = extend({}, targetAttachment);
var eAttachment = extend({}, this.attachment);
this.options.constraints.forEach(function (constraint) {
var to = constraint.to,
attachment = constraint.attachment,
pin = constraint.pin;
if (isUndefined(attachment)) {
attachment = '';
}
var changeAttachX, changeAttachY;
if (attachment.indexOf(' ') >= 0) {
var _attachment$split = attachment.split(' ');
changeAttachY = _attachment$split[0];
changeAttachX = _attachment$split[1];
} else {
changeAttachX = changeAttachY = attachment;
}
var bounds = getBoundingRect(_this.bodyElement, _this, to);
if (changeAttachY === 'target' || changeAttachY === 'both') {
if (top < bounds[1] && tAttachment.top === 'top') {
top += targetHeight;
tAttachment.top = 'bottom';
}
if (top + height > bounds[3] && tAttachment.top === 'bottom') {
top -= targetHeight;
tAttachment.top = 'top';
}
}
if (changeAttachY === 'together') {
top = _flipYTogether(tAttachment, eAttachment, bounds, height, targetHeight, top);
}
if (changeAttachX === 'target' || changeAttachX === 'both') {
if (left < bounds[0] && tAttachment.left === 'left') {
left += targetWidth;
tAttachment.left = 'right';
}
if (left + width > bounds[2] && tAttachment.left === 'right') {
left -= targetWidth;
tAttachment.left = 'left';
}
}
if (changeAttachX === 'together') {
left = _flipXTogether(tAttachment, eAttachment, bounds, width, targetWidth, left);
}
if (changeAttachY === 'element' || changeAttachY === 'both') {
if (top < bounds[1] && eAttachment.top === 'bottom') {
top += height;
eAttachment.top = 'top';
}
if (top + height > bounds[3] && eAttachment.top === 'top') {
top -= height;
eAttachment.top = 'bottom';
}
}
if (changeAttachX === 'element' || changeAttachX === 'both') {
if (left < bounds[0]) {
if (eAttachment.left === 'right') {
left += width;
eAttachment.left = 'left';
} else if (eAttachment.left === 'center') {
left += width / 2;
eAttachment.left = 'left';
}
}
if (left + width > bounds[2]) {
if (eAttachment.left === 'left') {
left -= width;
eAttachment.left = 'right';
} else if (eAttachment.left === 'center') {
left -= width / 2;
eAttachment.left = 'right';
}
}
}
if (isString(pin)) {
pin = pin.split(',').map(function (p) {
return p.trim();
});
} else if (pin === true) {
pin = ['top', 'left', 'right', 'bottom'];
}
pin = pin || [];
var pinned = [];
var oob = [];
left = _calculateOOBAndPinnedLeft(left, bounds, width, pin, pinned, oob);
top = _calculateOOBAndPinnedTop(top, bounds, height, pin, pinned, oob);
if (pinned.length) {
var pinnedClass;
if (!isUndefined(_this.options.pinnedClass)) {
pinnedClass = _this.options.pinnedClass;
} else {
pinnedClass = getClass('pinned', classes, classPrefix);
}
addClasses.push(pinnedClass);
pinned.forEach(function (side) {
addClasses.push(pinnedClass + "-" + side);
});
}
_addOutOfBoundsClass(oob, addClasses, classes, classPrefix, _this.options.outOfBoundsClass);
if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {
eAttachment.left = tAttachment.left = false;
}
if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {
eAttachment.top = tAttachment.top = false;
}
if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {
_this.updateAttachClasses(eAttachment, tAttachment);
_this.trigger('update', {
attachment: eAttachment,
targetAttachment: tAttachment
});
}
});
defer(function () {
if (!(_this.options.addTargetClasses === false)) {
updateClasses(_this.target, addClasses, allClasses);
}
updateClasses(_this.element, addClasses, allClasses);
});
return {
top: top,
left: left
};
}
};
var Shift = {
position: function position(_ref) {
var top = _ref.top,
left = _ref.left;
if (!this.options.shift) {
return;
}
var shift = this.options.shift;
if (isFunction(shift)) {
shift = shift.call(this, {
top: top,
left: left
});
}
var shiftTop, shiftLeft;
if (isString(shift)) {
shift = shift.split(' ');
shift[1] = shift[1] || shift[0];
var _shift = shift;
shiftTop = _shift[0];
shiftLeft = _shift[1];
shiftTop = parseFloat(shiftTop, 10);
shiftLeft = parseFloat(shiftLeft, 10);
} else {
var _ref2 = [shift.top, shift.left];
shiftTop = _ref2[0];
shiftLeft = _ref2[1];
}
top += shiftTop;
left += shiftLeft;
return {
top: top,
left: left
};
}
};
var Evented = /*#__PURE__*/function () {
function Evented() {}
var _proto = Evented.prototype;
_proto.on = function on(event, handler, ctx, once) {
if (once === void 0) {
once = false;
}
if (isUndefined(this.bindings)) {
this.bindings = {};
}
if (isUndefined(this.bindings[event])) {
this.bindings[event] = [];
}
this.bindings[event].push({
handler: handler,
ctx: ctx,
once: once
});
return this;
};
_proto.once = function once(event, handler, ctx) {
return this.on(event, handler, ctx, true);
};
_proto.off = function off(event, handler) {
var _this = this;
if (isUndefined(this.bindings) || isUndefined(this.bindings[event])) {
return this;
}
if (isUndefined(handler)) {
delete this.bindings[event];
} else {
this.bindings[event].forEach(function (binding, index) {
if (binding.handler === handler) {
_this.bindings[event].splice(index, 1);
}
});
}
return this;
};
_proto.trigger = function trigger(event) {
var _this2 = this;
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (!isUndefined(this.bindings) && this.bindings[event]) {
this.bindings[event].forEach(function (binding, index) {
var ctx = binding.ctx,
handler = binding.handler,
once = binding.once;
var context = ctx || _this2;
handler.apply(context, args);
if (once) {
_this2.bindings[event].splice(index, 1);
}
});
}
return this;
};
return Evented;
}();
var MIRROR_LR = {
center: 'center',
left: 'right',
right: 'left'
};
var MIRROR_TB = {
middle: 'middle',
top: 'bottom',
bottom: 'top'
};
var OFFSET_MAP = {
top: 0,
left: 0,
middle: '50%',
center: '50%',
bottom: '100%',
right: '100%'
};
function addOffset() {
var out = {
top: 0,
left: 0
};
for (var _len = arguments.length, offsets = new Array(_len), _key = 0; _key < _len; _key++) {
offsets[_key] = arguments[_key];
}
offsets.forEach(function (_ref) {
var top = _ref.top,
left = _ref.left;
if (isString(top)) {
top = parseFloat(top);
}
if (isString(left)) {
left = parseFloat(left);
}
out.top += top;
out.left += left;
});
return out;
}
function attachmentToOffset(attachment) {
var left = attachment.left,
top = attachment.top;
if (!isUndefined(OFFSET_MAP[attachment.left])) {
left = OFFSET_MAP[attachment.left];
}
if (!isUndefined(OFFSET_MAP[attachment.top])) {
top = OFFSET_MAP[attachment.top];
}
return {
left: left,
top: top
};
}
function autoToFixedAttachment(attachment, relativeToAttachment) {
var left = attachment.left,
top = attachment.top;
if (left === 'auto') {
left = MIRROR_LR[relativeToAttachment.left];
}
if (top === 'auto') {
top = MIRROR_TB[relativeToAttachment.top];
}
return {
left: left,
top: top
};
}
function offsetToPx(offset, size) {
if (isString(offset.left) && offset.left.indexOf('%') !== -1) {
offset.left = parseFloat(offset.left) / 100 * size.width;
}
if (isString(offset.top) && offset.top.indexOf('%') !== -1) {
offset.top = parseFloat(offset.top) / 100 * size.height;
}
return offset;
}
function parseTopLeft(value) {
var _value$split = value.split(' '),
top = _value$split[0],
left = _value$split[1];
return {
top: top,
left: left
};
}
function getScrollParents(el) {
// In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;
// https://bugzilla.mozilla.org/show_bug.cgi?id=548397
var computedStyle = getComputedStyle(el) || {};
var position = computedStyle.position;
var parents = [];
if (position === 'fixed') {
return [el];
}
var parent = el;
while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {
var style = void 0;
try {
style = getComputedStyle(parent);
} catch (err) {// Intentionally blank
}
if (isUndefined(style) || style === null) {
parents.push(parent);
return parents;
}
var _style = style,
overflow = _style.overflow,
overflowX = _style.overflowX,
overflowY = _style.overflowY;
if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {
parents.push(parent);
}
}
}
parents.push(el.ownerDocument.body); // If the node is within a frame, account for the parent window scroll
if (el.ownerDocument !== document) {
parents.push(el.ownerDocument.defaultView);
}
return parents;
}
function getOffsetParent(el) {
return el.offsetParent || document.documentElement;
}
var TetherBase = {
modules: [Constraint, Abutment, Shift]
};
function isFullscreenElement(e) {
var d = e.ownerDocument;
var fe = d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement;
return fe === e;
}
function within(a, b, diff) {
if (diff === void 0) {
diff = 1;
}
return a + diff >= b && b >= a - diff;
}
var transformKey = function () {
if (isUndefined(document)) {
return '';
}
var el = document.createElement('div');
var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];
for (var i = 0; i < transforms.length; ++i) {
var key = transforms[i];
if (el.style[key] !== undefined) {
return key;
}
}
}();
var tethers = [];
var position = function position() {
tethers.forEach(function (tether) {
tether.position(false);
});
flush();
};
function now() {
return performance.now();
}
(function () {
var lastCall = null;
var lastDuration = null;
var pendingTimeout = null;
var tick = function tick() {
if (!isUndefined(lastDuration) && lastDuration > 16) {
// We voluntarily throttle ourselves if we can't manage 60fps
lastDuration = Math.min(lastDuration - 16, 250); // Just in case this is the last event, remember to position just once more
pendingTimeout = setTimeout(tick, 250);
return;
}
if (!isUndefined(lastCall) && now() - lastCall < 10) {
// Some browsers call events a little too frequently, refuse to run more than is reasonable
return;
}
if (pendingTimeout != null) {
clearTimeout(pendingTimeout);
pendingTimeout = null;
}
lastCall = now();
position();
lastDuration = now() - lastCall;
};
if (!isUndefined(window) && !isUndefined(window.addEventListener)) {
['resize', 'scroll', 'touchmove'].forEach(function (event) {
window.addEventListener(event, tick);
});
}
})();
var TetherClass = /*#__PURE__*/function (_Evented) {
_inheritsLoose(TetherClass, _Evented);
function TetherClass(options) {
var _this;
_this = _Evented.call(this) || this;
_this.position = _this.position.bind(_assertThisInitialized(_this));
tethers.push(_assertThisInitialized(_this));
_this.history = [];
_this.setOptions(options, false);
TetherBase.modules.forEach(function (module) {
if (!isUndefined(module.initialize)) {
module.initialize.call(_assertThisInitialized(_this));
}
});
_this.position();
return _this;
}
var _proto = TetherClass.prototype;
_proto.setOptions = function setOptions(options, pos) {
var _this2 = this;
if (pos === void 0) {
pos = true;
}
var defaults = {
offset: '0 0',
targetOffset: '0 0',
targetAttachment: 'auto auto',
classPrefix: 'tether',
bodyElement: document.body
};
this.options = extend(defaults, options);
var _this$options = this.options,
element = _this$options.element,
target = _this$options.target,
targetModifier = _this$options.targetModifier,
bodyElement = _this$options.bodyElement;
this.element = element;
this.target = target;
this.targetModifier = targetModifier;
if (typeof bodyElement === 'string') {
bodyElement = document.querySelector(bodyElement);
}
this.bodyElement = bodyElement;
if (this.target === 'viewport') {
this.target = document.body;
this.targetModifier = 'visible';
} else if (this.target === 'scroll-handle') {
this.target = document.body;
this.targetModifier = 'scroll-handle';
}
['element', 'target'].forEach(function (key) {
if (isUndefined(_this2[key])) {
throw new Error('Tether Error: Both element and target must be defined');
}
if (!isUndefined(_this2[key].jquery)) {
_this2[key] = _this2[key][0];
} else if (isString(_this2[key])) {
_this2[key] = document.querySelector(_this2[key]);
}
});
this._addClasses();
if (!this.options.attachment) {
throw new Error('Tether Error: You must provide an attachment');
}
this.targetAttachment = parseTopLeft(this.options.targetAttachment);
this.attachment = parseTopLeft(this.options.attachment);
this.offset = parseTopLeft(this.options.offset);
this.targetOffset = parseTopLeft(this.options.targetOffset);
if (!isUndefined(this.scrollParents)) {
this.disable();
}
if (this.targetModifier === 'scroll-handle') {
this.scrollParents = [this.target];
} else {
this.scrollParents = getScrollParents(this.target);
}
if (!(this.options.enabled === false)) {
this.enable(pos);
}
};
_proto.getTargetBounds = function getTargetBounds() {
if (!isUndefined(this.targetModifier)) {
if (this.targetModifier === 'visible') {
return getVisibleBounds(this.bodyElement, this.target);
} else if (this.targetModifier === 'scroll-handle') {
return getScrollHandleBounds(this.bodyElement, this.target);
}
} else {
return getBounds(this.bodyElement, this.target);
}
};
_proto.clearCache = function clearCache() {
this._cache = {};
};
_proto.cache = function cache(k, getter) {
// More than one module will often need the same DOM info, so
// we keep a cache which is cleared on each position call
if (isUndefined(this._cache)) {
this._cache = {};
}
if (isUndefined(this._cache[k])) {
this._cache[k] = getter.call(this);
}
return this._cache[k];
};
_proto.enable = function enable(pos) {
var _this3 = this;
if (pos === void 0) {
pos = true;
}
var _this$options2 = this.options,
classes = _this$options2.classes,
classPrefix = _this$options2.classPrefix;
if (!(this.options.addTargetClasses === false)) {
addClass(this.target, getClass('enabled', classes, classPrefix));
}
addClass(this.element, getClass('enabled', classes, classPrefix));
this.enabled = true;
this.scrollParents.forEach(function (parent) {
if (parent !== _this3.target.ownerDocument) {
parent.addEventListener('scroll', _this3.position);
}
});
if (pos) {
this.position();
}
};
_proto.disable = function disable() {
var _this4 = this;
var _this$options3 = this.options,
classes = _this$options3.classes,
classPrefix = _this$options3.classPrefix;
removeClass(this.target, getClass('enabled', classes, classPrefix));
removeClass(this.element, getClass('enabled', classes, classPrefix));
this.enabled = false;
if (!isUndefined(this.scrollParents)) {
this.scrollParents.forEach(function (parent) {
parent.removeEventListener('scroll', _this4.position);
});
}
};
_proto.destroy = function destroy() {
var _this5 = this;
this.disable();
this._removeClasses();
tethers.forEach(function (tether, i) {
if (tether === _this5) {
tethers.splice(i, 1);
}
}); // Remove any elements we were using for convenience from the DOM
if (tethers.length === 0) {
removeUtilElements(this.bodyElement);
}
};
_proto.updateAttachClasses = function updateAttachClasses(elementAttach, targetAttach) {
var _this6 = this;
elementAttach = elementAttach || this.attachment;
targetAttach = targetAttach || this.targetAttachment;
var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];
var _this$options4 = this.options,
classes = _this$options4.classes,
classPrefix = _this$options4.classPrefix;
if (!isUndefined(this._addAttachClasses) && this._addAttachClasses.length) {
// updateAttachClasses can be called more than once in a position call, so
// we need to clean up after ourselves such that when the last defer gets
// ran it doesn't add any extra classes from previous calls.
this._addAttachClasses.splice(0, this._addAttachClasses.length);
}
if (isUndefined(this._addAttachClasses)) {
this._addAttachClasses = [];
}
this.add = this._addAttachClasses;
if (elementAttach.top) {
this.add.push(getClass('element-attached', classes, classPrefix) + "-" + elementAttach.top);
}
if (elementAttach.left) {
this.add.push(getClass('element-attached', classes, classPrefix) + "-" + elementAttach.left);
}
if (targetAttach.top) {
this.add.push(getClass('target-attached', classes, classPrefix) + "-" + targetAttach.top);
}
if (targetAttach.left) {
this.add.push(getClass('target-attached', classes, classPrefix) + "-" + targetAttach.left);
}
this.all = [];
sides.forEach(function (side) {
_this6.all.push(getClass('element-attached', classes, classPrefix) + "-" + side);
_this6.all.push(getClass('target-attached', classes, classPrefix) + "-" + side);
});
defer(function () {
if (isUndefined(_this6._addAttachClasses)) {
return;
}
updateClasses(_this6.element, _this6._addAttachClasses, _this6.all);
if (!(_this6.options.addTargetClasses === false)) {
updateClasses(_this6.target, _this6._addAttachClasses, _this6.all);
}
delete _this6._addAttachClasses;
});
};
_proto.position = function position(flushChanges) {
var _this7 = this;
if (flushChanges === void 0) {
flushChanges = true;
}
// flushChanges commits the changes immediately, leave true unless you are positioning multiple
// tethers (in which case call Tether.Utils.flush yourself when you're done)
if (!this.enabled) {
return;
}
this.clearCache(); // Turn 'auto' attachments into the appropriate corner or edge
var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);
this.updateAttachClasses(this.attachment, targetAttachment);
var elementPos = this.cache('element-bounds', function () {
return getBounds(_this7.bodyElement, _this7.element);
});
var width = elementPos.width,
height = elementPos.height;
if (width === 0 && height === 0 && !isUndefined(this.lastSize)) {
// We cache the height and width to make it possible to position elements that are
// getting hidden.
var _this$lastSize = this.lastSize;
width = _this$lastSize.width;
height = _this$lastSize.height;
} else {
this.lastSize = {
width: width,
height: height
};
}
var targetPos = this.cache('target-bounds', function () {
return _this7.getTargetBounds();
});
var targetSize = targetPos; // Get an actual px offset from the attachment
var offset = offsetToPx(attachmentToOffset(this.attachment), {
width: width,
height: height
});
var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);
var manualOffset = offsetToPx(this.offset, {
width: width,
height: height
});
var manualTargetOffset = offsetToPx(this.targetOffset, targetSize); // Add the manually provided offset
offset = addOffset(offset, manualOffset);
targetOffset = addOffset(targetOffset, manualTargetOffset); // It's now our goal to make (element position + offset) == (target position + target offset)
var left = targetPos.left + targetOffset.left - offset.left;
var top = targetPos.top + targetOffset.top - offset.top;
for (var i = 0; i < TetherBase.modules.length; ++i) {
var module = TetherBase.modules[i];
var ret = module.position.call(this, {
left: left,
top: top,
targetAttachment: targetAttachment,
targetPos: targetPos,
elementPos: elementPos,
offset: offset,
targetOffset: targetOffset,
manualOffset: manualOffset,
manualTargetOffset: manualTargetOffset,
scrollbarSize: scrollbarSize,
attachment: this.attachment
});
if (ret === false) {
return false;
} else if (isUndefined(ret) || !isObject(ret)) {
continue;
} else {
top = ret.top;
left = ret.left;
}
} // We describe the position three different ways to give the optimizer
// a chance to decide the best possible way to position the element
// with the fewest repaints.
var next = {
// It's position relative to the page (absolute positioning when
// the element is a child of the body)
page: {
top: top,
left: left
},
// It's position relative to the viewport (fixed positioning)
viewport: {
top: top - pageYOffset,
bottom: pageYOffset - top - height + innerHeight,
left: left - pageXOffset,
right: pageXOffset - left - width + innerWidth
}
};
var doc = this.target.ownerDocument;
var win = doc.defaultView;
var scrollbarSize;
if (win.innerHeight > doc.documentElement.clientHeight) {
scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
next.viewport.bottom -= scrollbarSize.height;
}
if (win.innerWidth > doc.documentElement.clientWidth) {
scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
next.viewport.right -= scrollbarSize.width;
}
if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {
// Absolute positioning in the body will be relative to the page, not the 'initial containing block'
next.page.bottom = doc.body.scrollHeight - top - height;
next.page.right = doc.body.scrollWidth - left - width;
}
if (!isUndefined(this.options.optimizations) && this.options.optimizations.moveElement !== false && isUndefined(this.targetModifier)) {
var offsetParent = this.cache('target-offsetparent', function () {
return getOffsetParent(_this7.target);
});
var offsetPosition = this.cache('target-offsetparent-bounds', function () {
return getBounds(_this7.bodyElement, offsetParent);
});
var offsetParentStyle = getComputedStyle(offsetParent);
var offsetParentSize = offsetPosition;
var offsetBorder = {};
['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {
offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle["border" + side + "Width"]);
});
offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;
offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;
if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {
if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {
// We're within the visible part of the target's scroll parent
var scrollLeft = offsetParent.scrollLeft,
scrollTop = offsetParent.scrollTop; // It's position relative to the target's offset parent (absolute positioning when
// the element is moved to be a child of the target's offset parent).
next.offset = {
top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,
left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left
};
}
}
} // We could also travel up the DOM and try each containing context, rather than only
// looking at the body, but we're gonna get diminishing returns.
this.move(next);
this.history.unshift(next);
if (this.history.length > 3) {
this.history.pop();
}
if (flushChanges) {
flush();
}
return true;
} // THE ISSUE
;
_proto.move = function move(pos) {
var _this8 = this;
if (isUndefined(this.element.parentNode)) {
return;
}
var same = {};
for (var type in pos) {
same[type] = {};
for (var key in pos[type]) {
var found = false;
for (var i = 0; i < this.history.length; ++i) {
var point = this.history[i];
if (!isUndefined(point[type]) && !within(point[type][key], pos[type][key])) {
found = true;
break;
}
}
if (!found) {
same[type][key] = true;
}
}
}
var css = {
top: '',
left: '',
right: '',
bottom: ''
};
var transcribe = function transcribe(_same, _pos) {
var hasOptimizations = !isUndefined(_this8.options.optimizations);
var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;
if (gpu !== false) {
var yPos, xPos;
if (_same.top) {
css.top = 0;
yPos = _pos.top;
} else {
css.bottom = 0;
yPos = -_pos.bottom;
}
if (_same.left) {
css.left = 0;
xPos = _pos.left;
} else {
css.right = 0;
xPos = -_pos.right;
}
if (isNumber(window.devicePixelRatio) && devicePixelRatio % 1 === 0) {
xPos = Math.round(xPos * devicePixelRatio) / devicePixelRatio;
yPos = Math.round(yPos * devicePixelRatio) / devicePixelRatio;
}
css[transformKey] = "translateX(" + xPos + "px) translateY(" + yPos + "px)";
if (transformKey !== 'msTransform') {
// The Z transform will keep this in the GPU (faster, and prevents artifacts),
// but IE9 doesn't support 3d transforms and will choke.
css[transformKey] += ' translateZ(0)';
}
} else {
if (_same.top) {
css.top = _pos.top + "px";
} else {
css.bottom = _pos.bottom + "px";
}
if (_same.left) {
css.left = _pos.left + "px";
} else {
css.right = _pos.right + "px";
}
}
};
var hasOptimizations = !isUndefined(this.options.optimizations);
var allowPositionFixed = true;
if (hasOptimizations && this.options.optimizations.allowPositionFixed === false) {
allowPositionFixed = false;
}
var moved = false;
if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {
css.position = 'absolute';
transcribe(same.page, pos.page);
} else if (allowPositionFixed && (same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {
css.position = 'fixed';
transcribe(same.viewport, pos.viewport);
} else if (!isUndefined(same.offset) && same.offset.top && same.offset.left) {
css.position = 'absolute';
var offsetParent = this.cache('target-offsetparent', function () {
return getOffsetParent(_this8.target);
});
if (getOffsetParent(this.element) !== offsetParent) {
defer(function () {
_this8.element.parentNode.removeChild(_this8.element);
offsetParent.appendChild(_this8.element);
});
}
transcribe(same.offset, pos.offset);
moved = true;
} else {
css.position = 'absolute';
transcribe({
top: true,
left: true
}, pos.page);
}
if (!moved) {
if (this.options.bodyElement) {
if (this.element.parentNode !== this.options.bodyElement) {
this.options.bodyElement.appendChild(this.element);
}
} else {
var offsetParentIsBody = true;
var currentNode = this.element.parentNode;
while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY' && !isFullscreenElement(currentNode)) {
if (getComputedStyle(currentNode).position !== 'static') {
offsetParentIsBody = false;
break;
}
currentNode = currentNode.parentNode;
}
if (!offsetParentIsBody) {
this.element.parentNode.removeChild(this.element);
this.element.ownerDocument.body.appendChild(this.element);
}
}
} // Any css change will trigger a repaint, so let's avoid one if nothing changed
var writeCSS = {};
var write = false;
for (var _key in css) {
var val = css[_key];
var elVal = this.element.style[_key];
if (elVal !== val) {
write = true;
writeCSS[_key] = val;
}
}
if (write) {
defer(function () {
extend(_this8.element.style, writeCSS);
_this8.trigger('repositioned');
});
}
};
_proto._addClasses = function _addClasses() {
var _this$options5 = this.options,
classes = _this$options5.classes,
classPrefix = _this$options5.classPrefix;
addClass(this.element, getClass('element', classes, classPrefix));
if (!(this.options.addTargetClasses === false)) {
addClass(this.target, getClass('target', classes, classPrefix));
}
};
_proto._removeClasses = function _removeClasses() {
var _this9 = this;
var _this$options6 = this.options,
classes = _this$options6.classes,
classPrefix = _this$options6.classPrefix;
removeClass(this.element, getClass('element', classes, classPrefix));
if (!(this.options.addTargetClasses === false)) {
removeClass(this.target, getClass('target', classes, classPrefix));
}
this.all.forEach(function (className) {
_this9.element.classList.remove(className);
_this9.target.classList.remove(className);
});
};
return TetherClass;
}(Evented);
TetherClass.modules = [];
TetherBase.position = position;
var Tether = extend(TetherClass, TetherBase);
Tether.modules.push({
initialize: function initialize() {
var _this10 = this;
var _this$options7 = this.options,
classes = _this$options7.classes,
classPrefix = _this$options7.classPrefix;
this.markers = {};
['target', 'element'].forEach(function (type) {
var el = document.createElement('div');
el.className = getClass(type + "-marker", classes, classPrefix);
var dot = document.createElement('div');
dot.className = getClass('marker-dot', classes, classPrefix);
el.appendChild(dot);
_this10[type].appendChild(el);
_this10.markers[type] = {
dot: dot,
el: el
};
});
},
position: function position(_ref) {
var manualOffset = _ref.manualOffset,
manualTargetOffset = _ref.manualTargetOffset;
var offsets = {
element: manualOffset,
target: manualTargetOffset
};
for (var type in offsets) {
var offset = offsets[type];
for (var side in offset) {
var _this$markers$type$do;
var val = offset[side];
if (!isString(val) || val.indexOf('%') === -1 && val.indexOf('px') === -1) {
val += 'px';
}
if (this.markers[type] && ((_this$markers$type$do = this.markers[type].dot) == null ? void 0 : _this$markers$type$do.style[side]) !== val) {
this.markers[type].dot.style[side] = val;
}
}
}
return true;
}
});
return Tether;
});
/***/ },
/***/ "./src/frontend/libs/waypoints/index.js"
/*!**********************************************!*\
!*** ./src/frontend/libs/waypoints/index.js ***!
\**********************************************/
() {
/*!
Waypoints - 4.0.1
Copyright © 2011-2016 Caleb Troughton
Licensed under the MIT license.
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
*/
(function () {
"use strict";
var keyCounter = 0;
var allWaypoints = {};
/* http://imakewebthings.com/waypoints/api/waypoint */
function Waypoint(options) {
if (!options) {
throw new Error("No options passed to Waypoint constructor");
}
if (!options.element) {
throw new Error("No element option passed to Waypoint constructor");
}
if (!options.handler) {
throw new Error("No handler option passed to Waypoint constructor");
}
this.key = "waypoint-" + keyCounter;
this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options);
this.element = this.options.element;
this.adapter = new Waypoint.Adapter(this.element);
this.callback = options.handler;
this.axis = this.options.horizontal ? "horizontal" : "vertical";
this.enabled = this.options.enabled;
this.triggerPoint = null;
this.group = Waypoint.Group.findOrCreate({
name: this.options.group,
axis: this.axis
});
this.context = Waypoint.Context.findOrCreateByElement(this.options.context);
if (Waypoint.offsetAliases[this.options.offset]) {
this.options.offset = Waypoint.offsetAliases[this.options.offset];
}
this.group.add(this);
this.context.add(this);
allWaypoints[this.key] = this;
keyCounter += 1;
}
/* Private */
Waypoint.prototype.queueTrigger = function (direction) {
this.group.queueTrigger(this, direction);
};
/* Private */
Waypoint.prototype.trigger = function (args) {
if (!this.enabled) {
return;
}
if (this.callback) {
this.callback.apply(this, args);
}
};
/* Public */
/* http://imakewebthings.com/waypoints/api/destroy */
Waypoint.prototype.destroy = function () {
this.context.remove(this);
this.group.remove(this);
delete allWaypoints[this.key];
};
/* Public */
/* http://imakewebthings.com/waypoints/api/disable */
Waypoint.prototype.disable = function () {
this.enabled = false;
return this;
};
/* Public */
/* http://imakewebthings.com/waypoints/api/enable */
Waypoint.prototype.enable = function () {
this.context.refresh();
this.enabled = true;
return this;
};
/* Public */
/* http://imakewebthings.com/waypoints/api/next */
Waypoint.prototype.next = function () {
return this.group.next(this);
};
/* Public */
/* http://imakewebthings.com/waypoints/api/previous */
Waypoint.prototype.previous = function () {
return this.group.previous(this);
};
/* Private */
Waypoint.invokeAll = function (method) {
var allWaypointsArray = [];
for (var waypointKey in allWaypoints) {
allWaypointsArray.push(allWaypoints[waypointKey]);
}
for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
allWaypointsArray[i][method]();
}
};
/* Public */
/* http://imakewebthings.com/waypoints/api/destroy-all */
Waypoint.destroyAll = function () {
Waypoint.invokeAll("destroy");
};
/* Public */
/* http://imakewebthings.com/waypoints/api/disable-all */
Waypoint.disableAll = function () {
Waypoint.invokeAll("disable");
};
/* Public */
/* http://imakewebthings.com/waypoints/api/enable-all */
Waypoint.enableAll = function () {
Waypoint.Context.refreshAll();
for (var waypointKey in allWaypoints) {
allWaypoints[waypointKey].enabled = true;
}
return this;
};
/* Public */
/* http://imakewebthings.com/waypoints/api/refresh-all */
Waypoint.refreshAll = function () {
Waypoint.Context.refreshAll();
};
/* Public */
/* http://imakewebthings.com/waypoints/api/viewport-height */
Waypoint.viewportHeight = function () {
return window.innerHeight || document.documentElement.clientHeight;
};
/* Public */
/* http://imakewebthings.com/waypoints/api/viewport-width */
Waypoint.viewportWidth = function () {
return document.documentElement.clientWidth;
};
Waypoint.adapters = [];
Waypoint.defaults = {
context: window,
continuous: true,
enabled: true,
group: "default",
horizontal: false,
offset: 0
};
Waypoint.offsetAliases = {
"bottom-in-view": function () {
return this.context.innerHeight() - this.adapter.outerHeight();
},
"right-in-view": function () {
return this.context.innerWidth() - this.adapter.outerWidth();
}
};
window.Waypoint = Waypoint;
})();
(function () {
"use strict";
function requestAnimationFrameShim(callback) {
window.setTimeout(callback, 1000 / 60);
}
var keyCounter = 0;
var contexts = {};
var Waypoint = window.Waypoint;
var oldWindowLoad = window.onload;
/* http://imakewebthings.com/waypoints/api/context */
function Context(element) {
this.element = element;
this.Adapter = Waypoint.Adapter;
this.adapter = new this.Adapter(element);
this.key = "waypoint-context-" + keyCounter;
this.didScroll = false;
this.didResize = false;
this.oldScroll = {
x: this.adapter.scrollLeft(),
y: this.adapter.scrollTop()
};
this.waypoints = {
vertical: {},
horizontal: {}
};
element.waypointContextKey = this.key;
contexts[element.waypointContextKey] = this;
keyCounter += 1;
if (!Waypoint.windowContext) {
Waypoint.windowContext = true;
Waypoint.windowContext = new Context(window);
}
this.createThrottledScrollHandler();
this.createThrottledResizeHandler();
}
/* Private */
Context.prototype.add = function (waypoint) {
var axis = waypoint.options.horizontal ? "horizontal" : "vertical";
this.waypoints[axis][waypoint.key] = waypoint;
this.refresh();
};
/* Private */
Context.prototype.checkEmpty = function () {
var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal);
var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical);
var isWindow = this.element == this.element.window;
if (horizontalEmpty && verticalEmpty && !isWindow) {
this.adapter.off(".waypoints");
delete contexts[this.key];
}
};
/* Private */
Context.prototype.createThrottledResizeHandler = function () {
var self = this;
function resizeHandler() {
self.handleResize();
self.didResize = false;
}
this.adapter.on("resize.waypoints", function () {
if (!self.didResize) {
self.didResize = true;
Waypoint.requestAnimationFrame(resizeHandler);
}
});
};
/* Private */
Context.prototype.createThrottledScrollHandler = function () {
var self = this;
function scrollHandler() {
self.handleScroll();
self.didScroll = false;
}
this.adapter.on("scroll.waypoints", function () {
if (!self.didScroll || Waypoint.isTouch) {
self.didScroll = true;
Waypoint.requestAnimationFrame(scrollHandler);
}
});
};
/* Private */
Context.prototype.handleResize = function () {
Waypoint.Context.refreshAll();
};
/* Private */
Context.prototype.handleScroll = function () {
var triggeredGroups = {};
var axes = {
horizontal: {
newScroll: this.adapter.scrollLeft(),
oldScroll: this.oldScroll.x,
forward: "right",
backward: "left"
},
vertical: {
newScroll: this.adapter.scrollTop(),
oldScroll: this.oldScroll.y,
forward: "down",
backward: "up"
}
};
for (var axisKey in axes) {
var axis = axes[axisKey];
var isForward = axis.newScroll > axis.oldScroll;
var direction = isForward ? axis.forward : axis.backward;
for (var waypointKey in this.waypoints[axisKey]) {
var waypoint = this.waypoints[axisKey][waypointKey];
if (waypoint.triggerPoint === null) {
continue;
}
var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint;
var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint;
var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint;
var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint;
if (crossedForward || crossedBackward) {
waypoint.queueTrigger(direction);
triggeredGroups[waypoint.group.id] = waypoint.group;
}
}
}
for (var groupKey in triggeredGroups) {
triggeredGroups[groupKey].flushTriggers();
}
this.oldScroll = {
x: axes.horizontal.newScroll,
y: axes.vertical.newScroll
};
};
/* Private */
Context.prototype.innerHeight = function () {
/*eslint-disable eqeqeq */
if (this.element == this.element.window) {
return Waypoint.viewportHeight();
}
/*eslint-enable eqeqeq */
return this.adapter.innerHeight();
};
/* Private */
Context.prototype.remove = function (waypoint) {
delete this.waypoints[waypoint.axis][waypoint.key];
this.checkEmpty();
};
/* Private */
Context.prototype.innerWidth = function () {
/*eslint-disable eqeqeq */
if (this.element == this.element.window) {
return Waypoint.viewportWidth();
}
/*eslint-enable eqeqeq */
return this.adapter.innerWidth();
};
/* Public */
/* http://imakewebthings.com/waypoints/api/context-destroy */
Context.prototype.destroy = function () {
var allWaypoints = [];
for (var axis in this.waypoints) {
for (var waypointKey in this.waypoints[axis]) {
allWaypoints.push(this.waypoints[axis][waypointKey]);
}
}
for (var i = 0, end = allWaypoints.length; i < end; i++) {
allWaypoints[i].destroy();
}
};
/* Public */
/* http://imakewebthings.com/waypoints/api/context-refresh */
Context.prototype.refresh = function () {
/*eslint-disable eqeqeq */
var isWindow = this.element == this.element.window;
/*eslint-enable eqeqeq */
var contextOffset = isWindow ? undefined : this.adapter.offset();
var triggeredGroups = {};
var axes;
this.handleScroll();
axes = {
horizontal: {
contextOffset: isWindow ? 0 : contextOffset.left,
contextScroll: isWindow ? 0 : this.oldScroll.x,
contextDimension: this.innerWidth(),
oldScroll: this.oldScroll.x,
forward: "right",
backward: "left",
offsetProp: "left"
},
vertical: {
contextOffset: isWindow ? 0 : contextOffset.top,
contextScroll: isWindow ? 0 : this.oldScroll.y,
contextDimension: this.innerHeight(),
oldScroll: this.oldScroll.y,
forward: "down",
backward: "up",
offsetProp: "top"
}
};
for (var axisKey in axes) {
var axis = axes[axisKey];
for (var waypointKey in this.waypoints[axisKey]) {
var waypoint = this.waypoints[axisKey][waypointKey];
var adjustment = waypoint.options.offset;
var oldTriggerPoint = waypoint.triggerPoint;
var elementOffset = 0;
var freshWaypoint = oldTriggerPoint == null;
var contextModifier, wasBeforeScroll, nowAfterScroll;
var triggeredBackward, triggeredForward;
if (waypoint.element !== waypoint.element.window) {
elementOffset = waypoint.adapter.offset()[axis.offsetProp];
}
if (typeof adjustment === "function") {
adjustment = adjustment.apply(waypoint);
} else if (typeof adjustment === "string") {
adjustment = parseFloat(adjustment);
if (waypoint.options.offset.indexOf("%") > -1) {
adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
}
}
contextModifier = axis.contextScroll - axis.contextOffset;
waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment);
wasBeforeScroll = oldTriggerPoint < axis.oldScroll;
nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll;
triggeredBackward = wasBeforeScroll && nowAfterScroll;
triggeredForward = !wasBeforeScroll && !nowAfterScroll;
if (!freshWaypoint && triggeredBackward) {
waypoint.queueTrigger(axis.backward);
triggeredGroups[waypoint.group.id] = waypoint.group;
} else if (!freshWaypoint && triggeredForward) {
waypoint.queueTrigger(axis.forward);
triggeredGroups[waypoint.group.id] = waypoint.group;
} else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
waypoint.queueTrigger(axis.forward);
triggeredGroups[waypoint.group.id] = waypoint.group;
}
}
}
Waypoint.requestAnimationFrame(function () {
for (var groupKey in triggeredGroups) {
triggeredGroups[groupKey].flushTriggers();
}
});
return this;
};
/* Private */
Context.findOrCreateByElement = function (element) {
return Context.findByElement(element) || new Context(element);
};
/* Private */
Context.refreshAll = function () {
for (var contextId in contexts) {
contexts[contextId].refresh();
}
};
/* Public */
/* http://imakewebthings.com/waypoints/api/context-find-by-element */
Context.findByElement = function (element) {
return contexts[element.waypointContextKey];
};
window.onload = function () {
if (oldWindowLoad) {
oldWindowLoad();
}
Context.refreshAll();
};
Waypoint.requestAnimationFrame = function (callback) {
var requestFn = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || requestAnimationFrameShim;
requestFn.call(window, callback);
};
Waypoint.Context = Context;
})();
(function () {
"use strict";
function byTriggerPoint(a, b) {
return a.triggerPoint - b.triggerPoint;
}
function byReverseTriggerPoint(a, b) {
return b.triggerPoint - a.triggerPoint;
}
var groups = {
vertical: {},
horizontal: {}
};
var Waypoint = window.Waypoint;
/* http://imakewebthings.com/waypoints/api/group */
function Group(options) {
this.name = options.name;
this.axis = options.axis;
this.id = this.name + "-" + this.axis;
this.waypoints = [];
this.clearTriggerQueues();
groups[this.axis][this.name] = this;
}
/* Private */
Group.prototype.add = function (waypoint) {
this.waypoints.push(waypoint);
};
/* Private */
Group.prototype.clearTriggerQueues = function () {
this.triggerQueues = {
up: [],
down: [],
left: [],
right: []
};
};
/* Private */
Group.prototype.flushTriggers = function () {
for (var direction in this.triggerQueues) {
var waypoints = this.triggerQueues[direction];
var reverse = direction === "up" || direction === "left";
waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint);
for (var i = 0, end = waypoints.length; i < end; i += 1) {
var waypoint = waypoints[i];
if (waypoint.options.continuous || i === waypoints.length - 1) {
waypoint.trigger([direction]);
}
}
}
this.clearTriggerQueues();
};
/* Private */
Group.prototype.next = function (waypoint) {
this.waypoints.sort(byTriggerPoint);
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints);
var isLast = index === this.waypoints.length - 1;
return isLast ? null : this.waypoints[index + 1];
};
/* Private */
Group.prototype.previous = function (waypoint) {
this.waypoints.sort(byTriggerPoint);
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints);
return index ? this.waypoints[index - 1] : null;
};
/* Private */
Group.prototype.queueTrigger = function (waypoint, direction) {
this.triggerQueues[direction].push(waypoint);
};
/* Private */
Group.prototype.remove = function (waypoint) {
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints);
if (index > -1) {
this.waypoints.splice(index, 1);
}
};
/* Public */
/* http://imakewebthings.com/waypoints/api/first */
Group.prototype.first = function () {
return this.waypoints[0];
};
/* Public */
/* http://imakewebthings.com/waypoints/api/last */
Group.prototype.last = function () {
return this.waypoints[this.waypoints.length - 1];
};
/* Private */
Group.findOrCreate = function (options) {
return groups[options.axis][options.name] || new Group(options);
};
Waypoint.Group = Group;
})();
(function () {
"use strict";
var $ = window.jQuery;
var Waypoint = window.Waypoint;
function JQueryAdapter(element) {
this.$element = $(element);
}
$.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop"], function (i, method) {
JQueryAdapter.prototype[method] = function () {
var args = Array.prototype.slice.call(arguments);
return this.$element[method].apply(this.$element, args);
};
});
$.each(["extend", "inArray", "isEmptyObject"], function (i, method) {
JQueryAdapter[method] = $[method];
});
Waypoint.adapters.push({
name: "jquery",
Adapter: JQueryAdapter
});
Waypoint.Adapter = JQueryAdapter;
})();
(function () {
"use strict";
var Waypoint = window.Waypoint;
function createExtension(framework) {
return function () {
var waypoints = [];
var overrides = arguments[0];
if (framework.isFunction(arguments[0])) {
overrides = framework.extend({}, arguments[1]);
overrides.handler = arguments[0];
}
this.each(function () {
var options = framework.extend({}, overrides, {
element: this
});
if (typeof options.context === "string") {
options.context = framework(this).closest(options.context)[0];
}
waypoints.push(new Waypoint(options));
});
return waypoints;
};
}
if (window.jQuery) {
window.jQuery.fn.waypoint = createExtension(window.jQuery);
}
if (window.Zepto) {
window.Zepto.fn.waypoint = createExtension(window.Zepto);
}
})();
/***/ },
/***/ "./src/frontend/libs/wow.js/wow.js"
/*!*****************************************!*\
!*** ./src/frontend/libs/wow.js/wow.js ***!
\*****************************************/
(module) {
(function () {
var MutationObserver,
Util,
WeakMap,
getComputedStyle,
getComputedStyleRX,
bind = function (fn, me) {
return function () {
return fn.apply(me, arguments);
};
},
indexOf = [].indexOf || function (item) {
for (var i = 0, l = this.length; i < l; i++) {
if (i in this && this[i] === item) return i;
}
return -1;
};
Util = function () {
function Util() {}
Util.prototype.extend = function (custom, defaults) {
var key, value;
for (key in defaults) {
value = defaults[key];
if (custom[key] == null) {
custom[key] = value;
}
}
return custom;
};
Util.prototype.isMobile = function (agent) {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
};
Util.prototype.createEvent = function (event, bubble, cancel, detail) {
var customEvent;
if (bubble == null) {
bubble = false;
}
if (cancel == null) {
cancel = false;
}
if (detail == null) {
detail = null;
}
if (document.createEvent != null) {
customEvent = document.createEvent('CustomEvent');
customEvent.initCustomEvent(event, bubble, cancel, detail);
} else if (document.createEventObject != null) {
customEvent = document.createEventObject();
customEvent.eventType = event;
} else {
customEvent.eventName = event;
}
return customEvent;
};
Util.prototype.emitEvent = function (elem, event) {
if (elem.dispatchEvent != null) {
return elem.dispatchEvent(event);
} else if (event in (elem != null)) {
return elem[event]();
} else if ("on" + event in (elem != null)) {
return elem["on" + event]();
}
};
Util.prototype.addEvent = function (elem, event, fn) {
if (elem.addEventListener != null) {
return elem.addEventListener(event, fn, false);
} else if (elem.attachEvent != null) {
return elem.attachEvent("on" + event, fn);
} else {
return elem[event] = fn;
}
};
Util.prototype.removeEvent = function (elem, event, fn) {
if (elem.removeEventListener != null) {
return elem.removeEventListener(event, fn, false);
} else if (elem.detachEvent != null) {
return elem.detachEvent("on" + event, fn);
} else {
return delete elem[event];
}
};
Util.prototype.innerHeight = function () {
if ('innerHeight' in window) {
return window.innerHeight;
} else {
return document.documentElement.clientHeight;
}
};
return Util;
}();
WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = function () {
function WeakMap() {
this.keys = [];
this.values = [];
}
WeakMap.prototype.get = function (key) {
var i, item, j, len, ref;
ref = this.keys;
for (i = j = 0, len = ref.length; j < len; i = ++j) {
item = ref[i];
if (item === key) {
return this.values[i];
}
}
};
WeakMap.prototype.set = function (key, value) {
var i, item, j, len, ref;
ref = this.keys;
for (i = j = 0, len = ref.length; j < len; i = ++j) {
item = ref[i];
if (item === key) {
this.values[i] = value;
return;
}
}
this.keys.push(key);
return this.values.push(value);
};
return WeakMap;
}());
MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = function () {
function MutationObserver() {
if (typeof console !== "undefined" && console !== null) {
console.warn('MutationObserver is not supported by your browser.');
}
if (typeof console !== "undefined" && console !== null) {
console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
}
}
MutationObserver.notSupported = true;
MutationObserver.prototype.observe = function () {};
return MutationObserver;
}());
getComputedStyle = this.getComputedStyle || function (el, pseudo) {
this.getPropertyValue = function (prop) {
var ref;
if (prop === 'float') {
prop = 'styleFloat';
}
if (getComputedStyleRX.test(prop)) {
prop.replace(getComputedStyleRX, function (_, _char) {
return _char.toUpperCase();
});
}
return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null;
};
return this;
};
getComputedStyleRX = /(\-([a-z]){1})/g;
this.WOW = function () {
WOW.prototype.defaults = {
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true,
live: true,
callback: null,
scrollContainer: null
};
function WOW(options) {
if (options == null) {
options = {};
}
this.scrollCallback = bind(this.scrollCallback, this);
this.scrollHandler = bind(this.scrollHandler, this);
this.resetAnimation = bind(this.resetAnimation, this);
this.start = bind(this.start, this);
this.scrolled = true;
this.config = this.util().extend(options, this.defaults);
if (options.scrollContainer != null) {
this.config.scrollContainer = document.querySelector(options.scrollContainer);
}
this.animationNameCache = new WeakMap();
this.wowEvent = this.util().createEvent(this.config.boxClass);
}
WOW.prototype.init = function () {
var ref;
this.element = window.document.documentElement;
if ((ref = document.readyState) === "interactive" || ref === "complete") {
this.start();
} else {
this.util().addEvent(document, 'DOMContentLoaded', this.start);
}
return this.finished = [];
};
WOW.prototype.start = function () {
var box, j, len, ref;
this.stopped = false;
this.boxes = function () {
var j, len, ref, results;
ref = this.element.querySelectorAll("." + this.config.boxClass);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box);
}
return results;
}.call(this);
this.all = function () {
var j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box);
}
return results;
}.call(this);
if (this.boxes.length) {
if (this.disabled()) {
this.resetStyle();
} else {
ref = this.boxes;
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
this.applyStyle(box, true);
}
}
}
if (!this.disabled()) {
this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
this.util().addEvent(window, 'resize', this.scrollHandler);
this.interval = setInterval(this.scrollCallback, 50);
}
if (this.config.live) {
return new MutationObserver(function (_this) {
return function (records) {
var k, len1, node, record, results;
results = [];
for (k = 0, len1 = records.length; k < len1; k++) {
record = records[k];
results.push(function () {
var l, len2, ref1, results1;
ref1 = record.addedNodes || [];
results1 = [];
for (l = 0, len2 = ref1.length; l < len2; l++) {
node = ref1[l];
results1.push(this.doSync(node));
}
return results1;
}.call(_this));
}
return results;
};
}(this)).observe(document.body, {
childList: true,
subtree: true
});
}
};
WOW.prototype.stop = function () {
this.stopped = true;
this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
this.util().removeEvent(window, 'resize', this.scrollHandler);
if (this.interval != null) {
return clearInterval(this.interval);
}
};
WOW.prototype.sync = function (element) {
if (MutationObserver.notSupported) {
return this.doSync(this.element);
}
};
WOW.prototype.doSync = function (element) {
var box, j, len, ref, results;
if (element == null) {
element = this.element;
}
if (element.nodeType !== 1) {
return;
}
element = element.parentNode || element;
ref = element.querySelectorAll("." + this.config.boxClass);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
if (indexOf.call(this.all, box) < 0) {
this.boxes.push(box);
this.all.push(box);
if (this.stopped || this.disabled()) {
this.resetStyle();
} else {
this.applyStyle(box, true);
}
results.push(this.scrolled = true);
} else {
results.push(void 0);
}
}
return results;
};
WOW.prototype.show = function (box) {
this.applyStyle(box);
box.className = box.className + " " + this.config.animateClass;
if (this.config.callback != null) {
this.config.callback(box);
}
this.util().emitEvent(box, this.wowEvent);
this.util().addEvent(box, 'animationend', this.resetAnimation);
this.util().addEvent(box, 'oanimationend', this.resetAnimation);
this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);
return box;
};
WOW.prototype.applyStyle = function (box, hidden) {
var delay, duration, iteration;
duration = box.getAttribute('data-wow-duration');
delay = box.getAttribute('data-wow-delay');
iteration = box.getAttribute('data-wow-iteration');
return this.animate(function (_this) {
return function () {
return _this.customStyle(box, hidden, duration, delay, iteration);
};
}(this));
};
WOW.prototype.animate = function () {
if ('requestAnimationFrame' in window) {
return function (callback) {
return window.requestAnimationFrame(callback);
};
} else {
return function (callback) {
return callback();
};
}
}();
WOW.prototype.resetStyle = function () {
var box, j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
results.push(box.style.visibility = 'visible');
}
return results;
};
WOW.prototype.resetAnimation = function (event) {
var target;
if (event.type.toLowerCase().indexOf('animationend') >= 0) {
target = event.target || event.srcElement;
return target.className = target.className.replace(this.config.animateClass, '').trim();
}
};
WOW.prototype.customStyle = function (box, hidden, duration, delay, iteration) {
if (hidden) {
this.cacheAnimationName(box);
}
box.style.visibility = hidden ? 'hidden' : 'visible';
if (duration) {
this.vendorSet(box.style, {
animationDuration: duration
});
}
if (delay) {
this.vendorSet(box.style, {
animationDelay: delay
});
}
if (iteration) {
this.vendorSet(box.style, {
animationIterationCount: iteration
});
}
this.vendorSet(box.style, {
animationName: hidden ? 'none' : this.cachedAnimationName(box)
});
return box;
};
WOW.prototype.vendors = ["moz", "webkit"];
WOW.prototype.vendorSet = function (elem, properties) {
var name, results, value, vendor;
results = [];
for (name in properties) {
value = properties[name];
elem["" + name] = value;
results.push(function () {
var j, len, ref, results1;
ref = this.vendors;
results1 = [];
for (j = 0, len = ref.length; j < len; j++) {
vendor = ref[j];
results1.push(elem["" + vendor + name.charAt(0).toUpperCase() + name.substr(1)] = value);
}
return results1;
}.call(this));
}
return results;
};
WOW.prototype.vendorCSS = function (elem, property) {
var j, len, ref, result, style, vendor;
style = getComputedStyle(elem);
result = style.getPropertyCSSValue(property);
ref = this.vendors;
for (j = 0, len = ref.length; j < len; j++) {
vendor = ref[j];
result = result || style.getPropertyCSSValue("-" + vendor + "-" + property);
}
return result;
};
WOW.prototype.animationName = function (box) {
var animationName, error;
try {
animationName = this.vendorCSS(box, 'animation-name').cssText;
} catch (error) {
animationName = getComputedStyle(box).getPropertyValue('animation-name');
}
if (animationName === 'none') {
return '';
} else {
return animationName;
}
};
WOW.prototype.cacheAnimationName = function (box) {
return this.animationNameCache.set(box, this.animationName(box));
};
WOW.prototype.cachedAnimationName = function (box) {
return this.animationNameCache.get(box);
};
WOW.prototype.scrollHandler = function () {
return this.scrolled = true;
};
WOW.prototype.scrollCallback = function () {
var box;
if (this.scrolled) {
this.scrolled = false;
this.boxes = function () {
var j, len, ref, results;
ref = this.boxes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
box = ref[j];
if (!box) {
continue;
}
if (this.isVisible(box)) {
this.show(box);
continue;
}
results.push(box);
}
return results;
}.call(this);
if (!(this.boxes.length || this.config.live)) {
return this.stop();
}
}
};
WOW.prototype.offsetTop = function (element) {
var top;
while (element.offsetTop === void 0) {
element = element.parentNode;
}
top = element.offsetTop;
while (element = element.offsetParent) {
top += element.offsetTop;
}
return top;
};
WOW.prototype.isVisible = function (box) {
var bottom, offset, top, viewBottom, viewTop;
offset = box.getAttribute('data-wow-offset') || this.config.offset;
viewTop = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset;
viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;
top = this.offsetTop(box);
bottom = top + box.clientHeight;
return top <= viewBottom && bottom >= viewTop;
};
WOW.prototype.util = function () {
return this._util != null ? this._util : this._util = new Util();
};
WOW.prototype.disabled = function () {
return !this.config.mobile && this.util().isMobile(navigator.userAgent);
};
return WOW;
}();
if ( true && module.exports) {
module.exports = this.WOW;
}
if (typeof window !== "undefined") {
window.WOW = this.WOW;
}
}).call(this);
/***/ },
/***/ "./node_modules/ev-emitter/ev-emitter.js"
/*!***********************************************!*\
!*** ./node_modules/ev-emitter/ev-emitter.js ***!
\***********************************************/
(module) {
/**
* EvEmitter v2.1.1
* Lil' event emitter
* MIT License
*/
( function( global, factory ) {
// universal module definition
if ( true && module.exports ) {
// CommonJS - Browserify, Webpack
module.exports = factory();
} else {
// Browser globals
global.EvEmitter = factory();
}
}( typeof window != 'undefined' ? window : this, function() {
function EvEmitter() {}
let proto = EvEmitter.prototype;
proto.on = function( eventName, listener ) {
if ( !eventName || !listener ) return this;
// set events hash
let events = this._events = this._events || {};
// set listeners array
let listeners = events[ eventName ] = events[ eventName ] || [];
// only add once
if ( !listeners.includes( listener ) ) {
listeners.push( listener );
}
return this;
};
proto.once = function( eventName, listener ) {
if ( !eventName || !listener ) return this;
// add event
this.on( eventName, listener );
// set once flag
// set onceEvents hash
let onceEvents = this._onceEvents = this._onceEvents || {};
// set onceListeners object
let onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
// set flag
onceListeners[ listener ] = true;
return this;
};
proto.off = function( eventName, listener ) {
let listeners = this._events && this._events[ eventName ];
if ( !listeners || !listeners.length ) return this;
let index = listeners.indexOf( listener );
if ( index != -1 ) {
listeners.splice( index, 1 );
}
return this;
};
proto.emitEvent = function( eventName, args ) {
let listeners = this._events && this._events[ eventName ];
if ( !listeners || !listeners.length ) return this;
// copy over to avoid interference if .off() in listener
listeners = listeners.slice( 0 );
args = args || [];
// once stuff
let onceListeners = this._onceEvents && this._onceEvents[ eventName ];
for ( let listener of listeners ) {
let isOnce = onceListeners && onceListeners[ listener ];
if ( isOnce ) {
// remove listener
// remove before trigger to prevent recursion
this.off( eventName, listener );
// unset once flag
delete onceListeners[ listener ];
}
// trigger listener
listener.apply( this, args );
}
return this;
};
proto.allOff = function() {
delete this._events;
delete this._onceEvents;
return this;
};
return EvEmitter;
} ) );
/***/ },
/***/ "./src/frontend/fontawesome-v6/css/all.css"
/*!*************************************************!*\
!*** ./src/frontend/fontawesome-v6/css/all.css ***!
\*************************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ },
/***/ "./src/frontend/fontawesome-v6/css/v4-shims.css"
/*!******************************************************!*\
!*** ./src/frontend/fontawesome-v6/css/v4-shims.css ***!
\******************************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ },
/***/ "./src/frontend/libs/bootstrap/bootstrap.min.css"
/*!*******************************************************!*\
!*** ./src/frontend/libs/bootstrap/bootstrap.min.css ***!
\*******************************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ },
/***/ "./src/frontend/styles/animate.scss"
/*!******************************************!*\
!*** ./src/frontend/styles/animate.scss ***!
\******************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ },
/***/ "./src/frontend/styles/style.scss"
/*!****************************************!*\
!*** ./src/frontend/styles/style.scss ***!
\****************************************/
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ }
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ if (!(moduleId in __webpack_modules__)) {
/******/ delete __webpack_module_cache__[moduleId];
/******/ var e = new Error("Cannot find module '" + moduleId + "'");
/******/ e.code = 'MODULE_NOT_FOUND';
/******/ throw e;
/******/ }
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
(() => {
"use strict";
/*!*******************************!*\
!*** ./src/frontend/index.js ***!
\*******************************/
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _libs_FitVids_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./libs/FitVids.js */ "./src/frontend/libs/FitVids.js");
/* harmony import */ var _libs_FitVids_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_libs_FitVids_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _libs_Morphext_morphext_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./libs/Morphext/morphext.js */ "./src/frontend/libs/Morphext/morphext.js");
/* harmony import */ var _libs_Morphext_morphext_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_libs_Morphext_morphext_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _libs_jquery_backstretch_backstretch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./libs/jquery.backstretch/backstretch.js */ "./src/frontend/libs/jquery.backstretch/backstretch.js");
/* harmony import */ var _libs_jquery_backstretch_backstretch_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_libs_jquery_backstretch_backstretch_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _libs_waypoints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./libs/waypoints */ "./src/frontend/libs/waypoints/index.js");
/* harmony import */ var _libs_waypoints__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_libs_waypoints__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _libs_jquery_counterup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./libs/jquery.counterup */ "./src/frontend/libs/jquery.counterup.js");
/* harmony import */ var _libs_jquery_counterup__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_libs_jquery_counterup__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _libs_imagesloaded_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./libs/imagesloaded.js */ "./src/frontend/libs/imagesloaded.js");
/* harmony import */ var _libs_imagesloaded_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_libs_imagesloaded_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _libs_jarallax_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./libs/jarallax.js */ "./src/frontend/libs/jarallax.js");
/* harmony import */ var _libs_jarallax_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_libs_jarallax_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _libs_jquery_bully_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./libs/jquery.bully.js */ "./src/frontend/libs/jquery.bully.js");
/* harmony import */ var _libs_jquery_bully_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_libs_jquery_bully_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _libs_wow_js_wow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./libs/wow.js/wow.js */ "./src/frontend/libs/wow.js/wow.js");
/* harmony import */ var _libs_wow_js_wow_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_libs_wow_js_wow_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var _libs_tether_global_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./libs/tether/global.js */ "./src/frontend/libs/tether/global.js");
/* harmony import */ var _libs_bootstrap_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./libs/bootstrap/bootstrap.min.js */ "./src/frontend/libs/bootstrap/bootstrap.min.js");
/* harmony import */ var _libs_bootstrap_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_libs_bootstrap_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var _libs_bootstrap_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./libs/bootstrap/bootstrap.min.css */ "./src/frontend/libs/bootstrap/bootstrap.min.css");
/* harmony import */ var _fontawesome_v6_css_all_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./fontawesome-v6/css/all.css */ "./src/frontend/fontawesome-v6/css/all.css");
/* harmony import */ var _fontawesome_v6_css_v4_shims_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./fontawesome-v6/css/v4-shims.css */ "./src/frontend/fontawesome-v6/css/v4-shims.css");
/* harmony import */ var _styles_animate_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styles/animate.scss */ "./src/frontend/styles/animate.scss");
/* harmony import */ var _styles_style_scss__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./styles/style.scss */ "./src/frontend/styles/style.scss");
/* harmony import */ var _inc_theme_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./inc/theme.js */ "./src/frontend/inc/theme.js");
/* harmony import */ var _inc_theme_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_inc_theme_js__WEBPACK_IMPORTED_MODULE_16__);
// Must precede the bootstrap import — Bootstrap 4 alpha 6 checks
// `typeof Tether === "undefined"` at module-evaluation time, before any
// constructor runs. See `libs/tether/global.js` for the full reasoning.
})();
/******/ })()
;
//# sourceMappingURL=theme.js.map