/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./sources/javascript/helpers/InteractiveIcon.js": /*!*******************************************************!*\ !*** ./sources/javascript/helpers/InteractiveIcon.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class InteractiveIcon extends HTMLElement { constructor() { super(); this._openModal = this._openModal.bind(this); this.link = document.createElement('a'); this.link.classList.add('content-icons__icon'); this.modal = null; let href = this.getAttribute('href'); if (href !== null) this.link.href = href; this.action = this.getAttribute('data-action'); if (this.action === 'modal') { this.modalContent = this.innerHTML; this.innerHTML = ''; this.genID = Math.random().toString(16).slice(2); this.link.id = this.genID; this.link.addEventListener('click', this._openModal); this.link.setAttribute('aria-haspopup', 'dialog'); this.modal = document.createElement('nt-modal'); let data_content = document.createElement('div'); data_content.classList.add('publication-lightbox__content'); data_content.innerHTML = this.modalContent; this.modal.container.append(data_content); this.modal.labeledBy = this.genID; this.modal.style.display = 'none'; } if (this.action === 'link') this.link.target = '_blank'; let title = this.getAttribute('data-title'); let icon = this.getAttribute('data-icon'); if (icon !== null && icon !== '0') { let iconEl = document.createElement('img'); iconEl.src = icon; this.link.append(iconEl); } else if (icon === null) { let icon = ``; this.link.innerHTML += icon; } let titleEl = document.createElement('span'); titleEl.innerText = title; this.link.append(titleEl); this.append(this.link); if (this.modal !== null) document.body.append(this.modal); } _openModal(event) { event.preventDefault(); this.modal.openModal(); } } let initElement = () => { customElements.define('interactive-icon', InteractiveIcon); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 'init': initElement }); /***/ }), /***/ "./sources/javascript/helpers/ModalElement.js": /*!****************************************************!*\ !*** ./sources/javascript/helpers/ModalElement.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ModalElement: () => (/* binding */ ModalElement), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class ModalElement extends HTMLElement { constructor() { super(); this.isOpen = false; this.container = document.createElement('div'); this.labeledBy = null; this.styles = document.createElement('style'); this.styles.textContent = `.loader { width: 75px; height: 75px; position: relative; } .loader__error { //position: absolute; //left: 50%; //top: 50%; //transform: translate(-50%, -50%); font-size: 18px; color: #ffffff; } .loader-error { //position: absolute; display: inline-block; text-align: center; font-size: 18px; line-height: 22px; color: #cc2931; border: 1px solid #cc2931; padding: 20px; background-color: #f2bfc2; font-weight: 600; //left: 50%; //top: 50%; //transform: translate(-50%, -50%); z-index: 50000; } .loader-success { //position: absolute; display: inline-block; text-align: center; font-size: 18px; line-height: 22px; color: #228B22; border: 1px solid #228B22; padding: 20px; background-color: #c2f0c2; font-weight: 600; //left: 50%; // top: 50%; //transform: translate(-50%, -50%); z-index: 50000; } .double-bounce1, .double-bounce2 { width: 100%; height: 100%; border-radius: 50%; background-color: #333; opacity: 0.6; position: absolute; top: 0; left: 0; animation: sk-bounce 2s infinite ease-in-out; } .double-bounce2 { animation-delay: -1s; } @keyframes sk-bounce { 0%, 100% { transform: scale(0); -webkit-transform: scale(0); } 50% { transform: scale(1); -webkit-transform: scale(1); } } @media screen and (max-width: 1366px) { .loader { height: 60px; width: 60px; } } @media screen and (max-width: 800px) { .loader { height: 40px; width: 40px; } } .publication-lightbox { height: 100vh; width: 100vw; position: fixed; top: 0; left: 0; background-color: rgba(0, 0, 0, 0.9); z-index: 100; display: flex; justify-content: center; align-items: center; } .publication-lightbox__loading { display: flex; justify-content: center; align-items: center; padding: 20px; width: 100%; } .publication-lightbox__close-button { position: absolute; cursor: pointer; top: 0; right: 0; font-size: 40px; color: #ffffff; background-color: transparent; border: none; padding: 30px; z-index: 500; } .publication-lightbox__close-button .first-line { width: 50px; height: 5px; background-color: #ffffff; display: block; margin: 8px auto; transform: translateY(7px) rotate(45deg); } .publication-lightbox__close-button .second-line { width: 50px; height: 5px; background-color: #ffffff; display: block; margin: 8px auto; transform: translateY(-6px) rotate(-45deg); } .publication-lightbox__container { width: 50%; height: auto; display: flex; background: var(--footer-background); padding: 30px; max-height: 80vh; overflow-y: auto; box-sizing: border-box; } .publication-lightbox__image-box { min-width: 250px; height: auto; margin-right: 45px; } .publication-lightbox__image { width: 250px; height: auto; max-height: 500px; display: block; } .publication-lightbox__content { display: block; flex-direction: column; } .publication-lightbox__title { color: var(--default-font-color); font-size: 1.2em; line-height: 1.4em; font-weight: 600; } .publication-lightbox__price { color: var(--default-font-color); font-size: 1.1em; line-height: 1.4em; } .publication-lightbox__about { color: var(--default-font-color); font-size: 1em; line-height: 1.5em; margin: 30px 0; } .publication-lightbox__about p { margin: 0; } .publication-lightbox__description { color: var(--default-font-color); font-size: 1em; line-height: 1.5em; } .publication-lightbox__icons { display: flex; margin-top: 30px; } .publication-lightbox__shop { margin-right: 30px; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__container { display: flex; flex-direction: column; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__image-box { width: 50%; position: relative; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__image { width: 100%; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__title { width: calc(100% - 50px); margin-top: 20px; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__description { width: calc(100% - 50px); margin-top: 20px; overflow: auto !important; max-height: 170px; scrollbar-color: #00b3f0 #1d1d1d; scrollbar-width: thin; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__description::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #1d1d1d; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__description::-webkit-scrollbar { width: 6px; background-color: #1d1d1d; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__description::-webkit-scrollbar-thumb { background-color: #00b3f0; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__content { position: absolute; top: 50%; left: calc(100% - 30px); width: calc(100% - 50px); margin-top: 20px; } @media screen and (max-width: 1440px) { .publication-lightbox__container { width: 60%; } } @media screen and (max-width: 1050px) { .publication-lightbox__container { width: 75%; } } @media screen and (max-width: 800px) { .publication-lightbox { height: 100vh; overflow: scroll; } .publication-lightbox__container { position: absolute; width: 100%; padding: 60px 60px; } } @media screen and (max-width: 700px) { .publication-lightbox:not(.publication-lightbox--friends-of-museum) .publication-lightbox__container { flex-direction: column; align-items: center; } .publication-lightbox:not(.publication-lightbox--friends-of-museum) .publication-lightbox__image-box { margin-right: 0; margin-bottom: 30px; display: flex; justify-content: center; } } @media screen and (max-width: 767px) { .publication-lightbox.publication-lightbox--friends-of-museum { width: 100%; margin-right: 0; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__image-box { width: 100%; margin-right: 0; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__image { width: 200px; margin: 0 auto; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__title { width: 100%; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__description { width: 100%; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__content { position: relative; left: initial; top: initial; margin: 30px auto; display: block; text-align: center; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__content .publication-lightbox__image { width: auto; margin: 0 auto; } } @media screen and (max-width: 500px) { .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__container { padding: 30px 30px; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__image { width: auto; max-width: 100%; } .publication-lightbox.publication-lightbox--friends-of-museum .publication-lightbox__content .publication-lightbox__image { width: 100%; } }`; } connectedCallback() { let overlay = document.createElement('div'); overlay.classList.add('publication-lightbox'); this._closeClick = this._closeClick.bind(this); this._keyboard = this._keyboard.bind(this); this._overlayClick = this._overlayClick.bind(this); let closeButton = document.createElement('button'); closeButton.classList.add('publication-lightbox__close-button'); closeButton.setAttribute('aria-label', 'Zamknij modal'); closeButton.innerHTML = '
'; this.container.classList.add('publication-lightbox__container'); this.container.setAttribute('role', 'dialog'); this.container.setAttribute('aria-modal', true); this.container.setAttribute('aria-labelledby', this.labeledBy); overlay.append(closeButton); overlay.append(this.container); this.append(overlay); window.addEventListener('keyup', this._keyboard); overlay.addEventListener('click', this._overlayClick); closeButton.addEventListener('click', this._closeClick); } _closeClick(event) { event.preventDefault(); this._closeModal(); } _keyboard(event) { if (this.isOpen) { if (event.keyCode === 27) { this._closeModal(); } } } _overlayClick(event) { if (this.isOpen) { if (event.target.classList.contains('publication-lightbox')) { this._closeModal(); } } } _closeModal() { this.style.display = 'none'; document.body.style.overflow = 'auto'; } openModal() { document.body.style.overflow = 'hidden'; // document.body.append(this); this.style.display = 'block'; this.isOpen = true; } } let initElement = () => { customElements.define('nt-modal', ModalElement); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 'init': initElement }); /***/ }), /***/ "./sources/javascript/helpers/Prayer.js": /*!**********************************************!*\ !*** ./sources/javascript/helpers/Prayer.js ***! \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class Prayer extends HTMLElement { static get observedAttributes() { return ['data-author', 'data-date']; } constructor() { super(); let content = this.innerHTML; this.innerHTML = ''; this.classList.add('prayers-list__item'); this.prayerContent = document.createElement('div'); this.prayerContent.classList.add('prayers-list__item-content'); let author = document.createElement('div'); author.classList.add('prayers-list__item-author'); this.prayerAuthor = document.createElement('div'); this.prayerAuthor.classList.add('person'); this.prayerDate = document.createElement('div'); this.prayerDate.classList.add('date'); author.append(this.prayerAuthor); author.append(this.prayerDate); this.append(this.prayerContent); this.append(author); if (this.getAttribute('data-author') !== null) { this.prayerAuthor.innerText = this.getAttribute('data-author'); } if (this.getAttribute('data-date') !== null) { this.prayerDate.innerText = this.getAttribute('data-date'); } if (content !== '') { this.prayerContent.innerHTML = content; } } attributeChangedCallback(name, oldValue, newValue) { if (this.querySelector('.prayers-list__item-content') === null) { let content = this.innerHTML; this.innerHTML = ''; this.prayerContent = document.createElement('div'); this.prayerContent.classList.add('prayers-list__item-content'); let author = document.createElement('div'); author.classList.add('prayers-list__item-author'); this.prayerAuthor = document.createElement('div'); this.prayerAuthor.classList.add('person'); this.prayerDate = document.createElement('div'); this.prayerDate.classList.add('date'); author.append(this.prayerAuthor); author.append(this.prayerDate); this.append(this.prayerContent); this.append(author); if (content !== '') { this.prayerContent.innerHTML = content; } } if (this.getAttribute('data-author') !== null) { this.prayerAuthor.innerText = this.getAttribute('data-author'); } if (this.getAttribute('data-date') !== null) { this.prayerDate.innerText = this.getAttribute('data-date'); } } } let initElement = () => { customElements.define('netivo-prayer', Prayer); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 'init': initElement }); /***/ }), /***/ "./sources/javascript/helpers/PublicationLightbox.js": /*!***********************************************************!*\ !*** ./sources/javascript/helpers/PublicationLightbox.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _ModalElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ModalElement */ "./sources/javascript/helpers/ModalElement.js"); class PublicationLightbox extends _ModalElement__WEBPACK_IMPORTED_MODULE_0__.ModalElement { constructor() { super(); } connectedCallback() { super.connectedCallback(); this.loaderContainer = document.createElement('div'); this.loaderContainer.classList.add('publication-lightbox__loading'); this.loaderContainer.setAttribute('aria-label', 'Ładowanie informacji'); let loader = document.createElement('div'); loader.classList.add('loader'); let bounce1 = document.createElement('div'); let bounce2 = document.createElement('div'); bounce1.classList.add('double-bounce1'); bounce2.classList.add('double-bounce2'); loader.append(bounce1); loader.append(bounce2); this.loaderContainer.append(loader); this.container.append(this.loaderContainer); } showError(message) { let error_message = document.createElement('div'); error_message.classList.add('loader__error'); error_message.innerText = message; this.loaderContainer.innerHTML = ''; this.loaderContainer.append(error_message); } showPublication(data) { let image_cont = document.createElement('div'); image_cont.classList.add('publication-lightbox__image-box'); if (data.hasOwnProperty('_embedded')) { let image = document.createElement('img'); image.classList.add('publication-lightbox__image'); image.src = data['_embedded']['wp:featuredmedia'][0]['source_url']; image.setAttribute('alt', data['_embedded']['wp:featuredmedia'][0]['alt_text']); image_cont.append(image); } let data_content = document.createElement('div'); data_content.classList.add('publication-lightbox__content'); let title = document.createElement('div'); title.classList.add('publication-lightbox__title'); title.id = 'modal-id'; title.innerHTML = data.title.rendered; let price = document.createElement('div'); price.classList.add('publication-lightbox__price'); price.innerHTML = data.meta._price !== '' ? data.meta._price + 'PLN' : ''; let about = document.createElement('div'); about.classList.add('publication-lightbox__about'); if (data.meta.hasOwnProperty('_author') && data.meta._author !== '') { let author = document.createElement('p'); author.classList.add('author'); author.innerHTML = 'Autor: ' + data.meta._author; about.append(author); } if (data.meta.hasOwnProperty('_language') && data.meta._language !== '') { let language = document.createElement('p'); language.classList.add('language'); language.innerHTML = 'Jęzuk: ' + data.meta._language; about.append(language); } if (data.meta.hasOwnProperty('_pages') && data.meta._pages !== '') { let pages = document.createElement('p'); pages.classList.add('pages'); pages.innerHTML = 'Liczba stron: ' + data.meta._pages; about.append(pages); } if (data.meta.hasOwnProperty('_time') && data.meta._time !== '') { let time = document.createElement('p'); time.classList.add('time'); time.innerHTML = 'Długość: ' + data.meta._time; about.append(time); } if (data.meta.hasOwnProperty('_isbn') && data.meta._isbn !== '') { let isbn = document.createElement('p'); isbn.classList.add('isbn'); isbn.innerHTML = 'ISBN: ' + data.meta._isbn; about.append(isbn); } let description = document.createElement('div'); description.classList.add('publication-lightbox__description'); description.innerHTML = data.content.rendered; let icons = document.createElement('div'); icons.classList.add('publication-lightbox__icons'); if (data.meta.hasOwnProperty('_free') && data.meta._free !== '') { let pdf = document.createElement('a'); pdf.classList.add('publication-lightbox__pdf'); pdf.setAttribute('href', data.meta._free); pdf.setAttribute('aria-label', 'Pobierz PDF'); pdf.setAttribute('role', 'button'); let ico = document.createElement('img'); ico.classList.add('publication-lightbox__icon'); ico.src = '/wp-content/themes/stutthof/dist/images/pdf-icon.png'; ico.setAttribute('role', 'none'); pdf.append(ico); icons.append(pdf); } if (data.meta.hasOwnProperty('_price') && data.meta._price !== '') { let shop = document.createElement('a'); shop.classList.add('publication-lightbox__pdf'); shop.setAttribute('href', '/ksiegarnia'); shop.setAttribute('aria-label', 'Przejdź do księgarni'); shop.setAttribute('role', 'button'); let ico_s = document.createElement('img'); ico_s.classList.add('publication-lightbox__icon'); ico_s.src = '/wp-content/themes/stutthof/dist/images/book-icon.png'; ico_s.setAttribute('role', 'none'); shop.append(ico_s); icons.append(shop); } data_content.append(title); data_content.append(price); data_content.append(about); data_content.append(description); data_content.append(icons); this.container.append(image_cont); this.container.append(data_content); this.loaderContainer.remove(); } openModal() { super.openModal(); } } let initElement = () => { customElements.define('publication-lightbox', PublicationLightbox); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 'init': initElement }); /***/ }), /***/ "./sources/javascript/helpers/TimelineLesson.js": /*!******************************************************!*\ !*** ./sources/javascript/helpers/TimelineLesson.js ***! \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class TimelineLesson extends HTMLElement { constructor() { super(); this._openModal = this._openModal.bind(this); let modalContent = this.querySelector('[data-element="modal-content"]'); if (modalContent !== null) { this.modalContent = modalContent.innerHTML; modalContent.remove(); } this.video = this.getAttribute('data-video'); this.genID = Math.random().toString(16).slice(2); this.modal = document.createElement('nt-modal'); let data_content = document.createElement('div'); data_content.classList.add('publication-lightbox__content'); data_content.innerHTML = this.modalContent; if (this.video !== null && this.video !== '') { let width = window.innerWidth / 2 - 60; console.log(window.innerWidth, width); if (window.innerWidth < 800) { width = window.innerWidth - 120; } else if (window.innerWidth < 1050) { width = window.innerWidth * 0.75 - 60; } else if (window.innerWidth < 1440) { width = window.innerWidth * 0.6 - 60; } console.log(width); let height = width / 16 * 9; let iframe = document.createElement('iframe'); iframe.src = 'https://www.youtube.com/embed/' + this.video; iframe.width = width + 'px'; iframe.height = height + 'px'; iframe.frameBorder = '0'; iframe.setAttribute('allowfullscreen', ''); data_content.append(iframe); } this.modal.container.append(data_content); this.modal.style.display = 'none'; this.modal.labeledBy = this.genID; this.id = this.genID; this.setAttribute('aria-haspopup', 'dialog'); document.body.append(this.modal); this.addEventListener('click', this._openModal); } _openModal(event) { event.preventDefault(); this.modal.openModal(); } } let initElement = () => { customElements.define('timeline-lesson', TimelineLesson); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 'init': initElement }); /***/ }), /***/ "./sources/javascript/publicationDetails.js": /*!**************************************************!*\ !*** ./sources/javascript/publicationDetails.js ***! \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class publicationDetails { constructor(selector) { this.selector = selector; this.publicationID = this.selector.getAttribute('data-id'); this._showDetails = this._showDetails.bind(this); this.modal = this._openModal(); this.modal.style.display = 'none'; document.body.append(this.modal); if (this.publicationID !== '' && this.publicationID !== null) { this.selector.addEventListener('click', this._showDetails); } } _showDetails(event) { event.preventDefault(); this.modal.openModal(); this._getPublicationData().then(data => { this.modal.showPublication(data); }).catch(error => { this.modal.showError(error); }); } _openModal() { let modal = document.createElement('publication-lightbox'); return modal; } _getPublicationData() { let url = '/wp-json/wp/v2/publication/' + this.publicationID + '?_embed'; return fetch(url, { method: 'GET', cache: 'no-cache', credentials: "same-origin", redirect: "follow", headers: { 'Content-Type': 'application/json' } }).then(response => { if (!response.ok) { return response.json().then(function (response) { throw Error(response.code); }); } else { return response.json(); } }); } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (publicationDetails); /***/ }), /***/ "./sources/javascript/quantityInput.js": /*!*********************************************!*\ !*** ./sources/javascript/quantityInput.js ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-cookie */ "./node_modules/js-cookie/dist/js.cookie.mjs"); class quantityInput { constructor(selector) { this.selector = selector; this.id = this.selector.getAttribute('data-id'); this.decrease = this.decrease.bind(this); this.increase = this.increase.bind(this); this.changeInput = this.changeInput.bind(this); this.decreaseElement = this.selector.querySelector('[data-element="decrease"]'); this.increaseElement = this.selector.querySelector('[data-element="increase"]'); this.countElement = this.selector.querySelector('[data-element="count"]'); this.decreaseElement.addEventListener('click', this.decrease); this.increaseElement.addEventListener('click', this.increase); this.countElement.addEventListener('change', this.changeInput); } decrease(event) { event.preventDefault(); let value = this.countElement.value; value--; if (value < 0) value = 0; this.countElement.value = value; this.countElement.dispatchEvent(new Event('change')); } increase(event) { event.preventDefault(); let value = this.countElement.value; value++; this.countElement.value = value; this.countElement.dispatchEvent(new Event('change')); } changeInput(event) { this.cart = js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].get('nt_cart'); let cart = {}; if (typeof this.cart !== 'undefined') { cart = JSON.parse(this.cart); } if (parseInt(event.target.value) === 0 && cart.hasOwnProperty(this.id)) { delete cart[this.id]; } else { cart[this.id] = event.target.value; } this.cart = JSON.stringify(cart); console.log(this.cart); js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set('nt_cart', this.cart, { SameSite: 'lax' }); } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (quantityInput); /***/ }), /***/ "./sources/javascript/timeline.js": /*!****************************************!*\ !*** ./sources/javascript/timeline.js ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); class Timeline { constructor(selector) { this.selector = selector; this.items = this.selector.querySelectorAll('[data-timeline-item]'); this._showContent = this._showContent.bind(this); this.sides = this.selector.getAttribute('data-sides'); let width = this.selector.offsetWidth; if (this.sides) { this.items.forEach(item => { let content = item.querySelector('[data-timeline-content]'); content.style.width = width / 2 - 140 + 'px'; }); } else { this.items.forEach(item => { let content = item.querySelector('[data-timeline-content]'); console.log(width, content); content.style.width = width - 240 + 'px'; let opener = item.querySelector('[data-opener]'); opener.addEventListener('click', this._showContent); }); } } _showContent(event) { event.preventDefault(); this.items.forEach(item => { let content = item.querySelector('[data-timeline-content]'); let opener = item.querySelector('[data-opener]'); let dots = item.querySelector('[data-dots]'); content.style.display = 'none'; dots.style.display = 'none'; opener.classList.remove('active'); }); let current = event.target.closest('[data-timeline-item]'); let c_content = current.querySelector('[data-timeline-content]'); let c_opener = current.querySelector('[data-opener]'); let c_dots = current.querySelector('[data-dots]'); c_content.style.display = 'block'; c_opener.classList.add('active'); c_dots.style.display = 'flex'; } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Timeline); /***/ }), /***/ "./sources/javascript/wai.js": /*!***********************************!*\ !*** ./sources/javascript/wai.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! js-cookie */ "./node_modules/js-cookie/dist/js.cookie.mjs"); class Wai { constructor(element) { this.element = element; let font = document.body.style.getPropertyValue('--default-font-size'); if (font === '') { font = js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].get('nt_font_size'); } if (typeof font === 'undefined') font = '16px'; this.fontSize = parseInt(font); this.contrast = null; this.defaultFont = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--default-font-size')); this.fontIncrease = this.element.querySelector('[data-element="font-increase"]'); this.fontDefault = this.element.querySelector('[data-element="font-default"]'); this.fontDescrease = this.element.querySelector('[data-element="font-decrease"]'); this.contrastDefault = this.element.querySelector('[data-element="contrast-default"]'); this.contrastHigh = this.element.querySelector('[data-element="contrast-high"]'); this.contrastNegative = this.element.querySelector('[data-element="contrast-negative"]'); this.setDefaultFont = this.setDefaultFont.bind(this); this.decreaseFont = this.decreaseFont.bind(this); this.increaseFont = this.increaseFont.bind(this); this.setDefaultContrast = this.setDefaultContrast.bind(this); this.setHighContrast = this.setHighContrast.bind(this); this.setNegativeContrast = this.setNegativeContrast.bind(this); this.fontDefault.addEventListener('click', this.setDefaultFont); this.fontIncrease.addEventListener('click', this.increaseFont); this.fontDescrease.addEventListener('click', this.decreaseFont); this.contrastDefault.addEventListener('click', this.setDefaultContrast); this.contrastHigh.addEventListener('click', this.setHighContrast); this.contrastNegative.addEventListener('click', this.setNegativeContrast); } setDefaultFont(event) { event.preventDefault(); document.body.style.removeProperty('--default-font-size'); js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].remove('nt_font_size', { path: '/' }); this.fontSize = null; } increaseFont(event) { event.preventDefault(); if (this.fontSize == null) this.fontSize = this.defaultFont; if (this.fontSize < 22) { this.fontSize++; document.body.style.setProperty('--default-font-size', this.fontSize + 'px'); js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set('nt_font_size', this.fontSize + 'px', { SameSite: 'lax' }); } } decreaseFont(event) { event.preventDefault(); if (this.fontSize == null) this.fontSize = this.defaultFont; if (this.fontSize > 12) { this.fontSize--; document.body.style.setProperty('--default-font-size', this.fontSize + 'px'); js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set('nt_font_size', this.fontSize + 'px', { SameSite: 'lax' }); } } setDefaultContrast(event) { event.preventDefault(); js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].remove('nt_contrast'); document.body.style.removeProperty('--main-background'); document.body.style.removeProperty('--footer-background'); document.body.style.removeProperty('--default-font-color'); document.body.style.removeProperty('--header-text-color'); document.body.style.removeProperty('--footer-text-color'); //@todo remove body props this.contrast = null; } setHighContrast(event) { event.preventDefault(); if (this.contrast !== 'high') { this.contrast = 'high'; //@todo set body props js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set('nt_contrast', 'high', { SameSite: 'lax' }); } } setNegativeContrast(event) { event.preventDefault(); if (this.contrast !== 'negative') { this.contrast = 'negative'; document.body.style.setProperty('--main-background', '#000000'); document.body.style.setProperty('--footer-background', '#000000'); document.body.style.setProperty('--default-font-color', '#ffff00'); document.body.style.setProperty('--header-text-color', '#ffff00'); document.body.style.setProperty('--footer-text-color', '#ffff00'); document.body.style.setProperty('--hyperlink-hover-color', '#ffff00'); //@todo set body props js_cookie__WEBPACK_IMPORTED_MODULE_0__["default"].set('nt_contrast', 'negative', { SameSite: 'lax' }); } } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Wai); /***/ }), /***/ "./node_modules/@netivo/base-scripts/index.js": /*!****************************************************!*\ !*** ./node_modules/@netivo/base-scripts/index.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Form: () => (/* reexport safe */ _javascript_form__WEBPACK_IMPORTED_MODULE_1__["default"]), /* harmony export */ extend: () => (/* reexport safe */ _javascript_extend__WEBPACK_IMPORTED_MODULE_2__["default"]), /* harmony export */ initMap: () => (/* reexport safe */ _javascript_map__WEBPACK_IMPORTED_MODULE_0__["default"]) /* harmony export */ }); /* harmony import */ var _javascript_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./javascript/map */ "./node_modules/@netivo/base-scripts/javascript/map.js"); /* harmony import */ var _javascript_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./javascript/form */ "./node_modules/@netivo/base-scripts/javascript/form.js"); /* harmony import */ var _javascript_extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./javascript/extend */ "./node_modules/@netivo/base-scripts/javascript/extend.js"); /***/ }), /***/ "./node_modules/@netivo/base-scripts/javascript/extend.js": /*!****************************************************************!*\ !*** ./node_modules/@netivo/base-scripts/javascript/extend.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); const extend = function () { let extended = {}; let deep = false; let i = 0; let length = arguments.length; if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) { deep = arguments[0]; i++; } let merge = function (obj) { for ( let prop in obj ) { if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) { if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) { extended[prop] = extend( true, extended[prop], obj[prop] ); } else { extended[prop] = obj[prop]; } } } }; for ( ; i < length; i++ ) { let obj = arguments[i]; merge(obj); } return extended; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (extend); /***/ }), /***/ "./node_modules/@netivo/base-scripts/javascript/form.js": /*!**************************************************************!*\ !*** ./node_modules/@netivo/base-scripts/javascript/form.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _extend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./extend */ "./node_modules/@netivo/base-scripts/javascript/extend.js"); let defaultOptions = { handler: null, action: '', data: form => { return new Promise((resolve, reject) => { resolve({}); }); }, beforeSubmit: form => { return true; }, success: (form, response) => {}, error: (form, error) => {} } class Form { constructor(selector, options) { this.options = (0,_extend__WEBPACK_IMPORTED_MODULE_0__["default"])(defaultOptions, options); this.selector = selector; this._submitForm = this._submitForm.bind(this); this.selector.addEventListener('submit', this._submitForm); } _submitForm(event){ if(typeof event !== 'undefined') event.preventDefault(); let cont = this.options.beforeSubmit(this.selector); if(cont) { this.options.data(this.selector).then(data => { this._sendForm(this.options.action, data) .then(response => { this.options.success(this.selector, response); }) .catch(error => { this.options.error(this.selector, error); }) }).catch(error => { this.options.error(this.selector, error); }); } } _sendForm(url, data) { let formBody = Object.keys(data).map(key => { if (typeof data[key] === "object" && !Array.isArray(data[key]) && data[key] !== null) { return Object.keys(data[key]).map(k => { return key + '[' + k + ']=' + data[key][k]; }).join('&'); } return key + '=' + data[key] }).join('&'); return fetch(url, { method: 'POST', cache: 'no-cache', credentials: "same-origin", redirect: "follow", headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: formBody }).then(response => { if (!response.ok) { return response.json().then(function(response) { throw Error(response.message); }) } else { return response.json(); } }); } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Form); /***/ }), /***/ "./node_modules/@netivo/base-scripts/javascript/map.js": /*!*************************************************************!*\ !*** ./node_modules/@netivo/base-scripts/javascript/map.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); const initMap = function() { const preparePoints = (mapElement) => { let lat = ('lat' in mapElement.dataset) ? mapElement.dataset.lat.split(';') : null; let lng = ('lng' in mapElement.dataset) ? mapElement.dataset.lng.split(';') : null; if(lat.length === lng.length){ let zoom = (isNaN(parseInt(mapElement.dataset.zoom))) ? 14 : parseInt(mapElement.dataset.zoom); let title = ('title' in mapElement.dataset) ? mapElement.dataset.title.split(';') : null; let content = ('content' in mapElement.dataset) ? mapElement.dataset.content.split(';') : null; let markerIcon = ('marker' in mapElement.dataset) ? mapElement.dataset.marker.split(';') : null; let data = { zoom: zoom, points: [] }; lat.forEach((p1, i) => { let tmp = { lat: parseFloat(p1), lng: parseFloat(lng[i]) }; if(title !== null) { if (i in title) { tmp.title = title[i]; } } if(content !== null) { if (i in content) { tmp.content = content[i]; } } if(markerIcon !== null) { if (i in markerIcon) { tmp.marker = markerIcon[i]; } else tmp.marker = markerIcon[0]; } data.points.push(tmp); }); return data; } return null; } const getMapCenter = (points) =>{ let center = { lat: 0, lng: 0 }; points.forEach(point => { center.lat += point.lat; center.lng += point.lng; }); center.lat = center.lat/points.length; center.lng = center.lng/points.length; return center; } let maps = document.querySelectorAll('.js-map'); if(maps.length > 0){ maps.forEach(mapElement => { let mapPoints = preparePoints(mapElement); if(mapPoints !== null){ let mapOptions = { center: getMapCenter(mapPoints.points), zoom: mapPoints.zoom, scrollwheel: false, scaleControl: false, disableDefaultUI: false, } let map = new google.maps.Map(mapElement, mapOptions); mapPoints.points.forEach(point => { let markerOptions = { position: {lat: point.lat, lng: point.lng}, map: map }; if('marker' in point){ markerOptions.icon = point.marker; } if('title' in point){ markerOptions.title = point.title; } let marker = new google.maps.Marker(markerOptions); if('content' in point){ let infoWindow = new google.maps.InfoWindow({ content: point.content }); marker.addListener('click', () => { infoWindow.open(map, marker); }); } }); } else { console.log('Niezgodna ilość punktów do naniesienia na mapę.'); mapElement.innerHTML = "Przepraszamy, nie możemy wyświetlić mapy
"; } }); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (initMap); /***/ }), /***/ "./node_modules/@splidejs/splide/dist/js/splide.esm.js": /*!*************************************************************!*\ !*** ./node_modules/@splidejs/splide/dist/js/splide.esm.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ CLASSES: () => (/* binding */ CLASSES), /* harmony export */ CLASS_ACTIVE: () => (/* binding */ CLASS_ACTIVE), /* harmony export */ CLASS_ARROW: () => (/* binding */ CLASS_ARROW), /* harmony export */ CLASS_ARROWS: () => (/* binding */ CLASS_ARROWS), /* harmony export */ CLASS_ARROW_NEXT: () => (/* binding */ CLASS_ARROW_NEXT), /* harmony export */ CLASS_ARROW_PREV: () => (/* binding */ CLASS_ARROW_PREV), /* harmony export */ CLASS_CLONE: () => (/* binding */ CLASS_CLONE), /* harmony export */ CLASS_CONTAINER: () => (/* binding */ CLASS_CONTAINER), /* harmony export */ CLASS_FOCUS_IN: () => (/* binding */ CLASS_FOCUS_IN), /* harmony export */ CLASS_INITIALIZED: () => (/* binding */ CLASS_INITIALIZED), /* harmony export */ CLASS_LIST: () => (/* binding */ CLASS_LIST), /* harmony export */ CLASS_LOADING: () => (/* binding */ CLASS_LOADING), /* harmony export */ CLASS_NEXT: () => (/* binding */ CLASS_NEXT), /* harmony export */ CLASS_OVERFLOW: () => (/* binding */ CLASS_OVERFLOW), /* harmony export */ CLASS_PAGINATION: () => (/* binding */ CLASS_PAGINATION), /* harmony export */ CLASS_PAGINATION_PAGE: () => (/* binding */ CLASS_PAGINATION_PAGE), /* harmony export */ CLASS_PREV: () => (/* binding */ CLASS_PREV), /* harmony export */ CLASS_PROGRESS: () => (/* binding */ CLASS_PROGRESS), /* harmony export */ CLASS_PROGRESS_BAR: () => (/* binding */ CLASS_PROGRESS_BAR), /* harmony export */ CLASS_ROOT: () => (/* binding */ CLASS_ROOT), /* harmony export */ CLASS_SLIDE: () => (/* binding */ CLASS_SLIDE), /* harmony export */ CLASS_SPINNER: () => (/* binding */ CLASS_SPINNER), /* harmony export */ CLASS_SR: () => (/* binding */ CLASS_SR), /* harmony export */ CLASS_TOGGLE: () => (/* binding */ CLASS_TOGGLE), /* harmony export */ CLASS_TOGGLE_PAUSE: () => (/* binding */ CLASS_TOGGLE_PAUSE), /* harmony export */ CLASS_TOGGLE_PLAY: () => (/* binding */ CLASS_TOGGLE_PLAY), /* harmony export */ CLASS_TRACK: () => (/* binding */ CLASS_TRACK), /* harmony export */ CLASS_VISIBLE: () => (/* binding */ CLASS_VISIBLE), /* harmony export */ DEFAULTS: () => (/* binding */ DEFAULTS), /* harmony export */ EVENT_ACTIVE: () => (/* binding */ EVENT_ACTIVE), /* harmony export */ EVENT_ARROWS_MOUNTED: () => (/* binding */ EVENT_ARROWS_MOUNTED), /* harmony export */ EVENT_ARROWS_UPDATED: () => (/* binding */ EVENT_ARROWS_UPDATED), /* harmony export */ EVENT_AUTOPLAY_PAUSE: () => (/* binding */ EVENT_AUTOPLAY_PAUSE), /* harmony export */ EVENT_AUTOPLAY_PLAY: () => (/* binding */ EVENT_AUTOPLAY_PLAY), /* harmony export */ EVENT_AUTOPLAY_PLAYING: () => (/* binding */ EVENT_AUTOPLAY_PLAYING), /* harmony export */ EVENT_CLICK: () => (/* binding */ EVENT_CLICK), /* harmony export */ EVENT_DESTROY: () => (/* binding */ EVENT_DESTROY), /* harmony export */ EVENT_DRAG: () => (/* binding */ EVENT_DRAG), /* harmony export */ EVENT_DRAGGED: () => (/* binding */ EVENT_DRAGGED), /* harmony export */ EVENT_DRAGGING: () => (/* binding */ EVENT_DRAGGING), /* harmony export */ EVENT_END_INDEX_CHANGED: () => (/* binding */ EVENT_END_INDEX_CHANGED), /* harmony export */ EVENT_HIDDEN: () => (/* binding */ EVENT_HIDDEN), /* harmony export */ EVENT_INACTIVE: () => (/* binding */ EVENT_INACTIVE), /* harmony export */ EVENT_LAZYLOAD_LOADED: () => (/* binding */ EVENT_LAZYLOAD_LOADED), /* harmony export */ EVENT_MOUNTED: () => (/* binding */ EVENT_MOUNTED), /* harmony export */ EVENT_MOVE: () => (/* binding */ EVENT_MOVE), /* harmony export */ EVENT_MOVED: () => (/* binding */ EVENT_MOVED), /* harmony export */ EVENT_NAVIGATION_MOUNTED: () => (/* binding */ EVENT_NAVIGATION_MOUNTED), /* harmony export */ EVENT_OVERFLOW: () => (/* binding */ EVENT_OVERFLOW), /* harmony export */ EVENT_PAGINATION_MOUNTED: () => (/* binding */ EVENT_PAGINATION_MOUNTED), /* harmony export */ EVENT_PAGINATION_UPDATED: () => (/* binding */ EVENT_PAGINATION_UPDATED), /* harmony export */ EVENT_READY: () => (/* binding */ EVENT_READY), /* harmony export */ EVENT_REFRESH: () => (/* binding */ EVENT_REFRESH), /* harmony export */ EVENT_RESIZE: () => (/* binding */ EVENT_RESIZE), /* harmony export */ EVENT_RESIZED: () => (/* binding */ EVENT_RESIZED), /* harmony export */ EVENT_SCROLL: () => (/* binding */ EVENT_SCROLL), /* harmony export */ EVENT_SCROLLED: () => (/* binding */ EVENT_SCROLLED), /* harmony export */ EVENT_SHIFTED: () => (/* binding */ EVENT_SHIFTED), /* harmony export */ EVENT_SLIDE_KEYDOWN: () => (/* binding */ EVENT_SLIDE_KEYDOWN), /* harmony export */ EVENT_UPDATED: () => (/* binding */ EVENT_UPDATED), /* harmony export */ EVENT_VISIBLE: () => (/* binding */ EVENT_VISIBLE), /* harmony export */ EventBinder: () => (/* binding */ EventBinder), /* harmony export */ EventInterface: () => (/* binding */ EventInterface), /* harmony export */ FADE: () => (/* binding */ FADE), /* harmony export */ LOOP: () => (/* binding */ LOOP), /* harmony export */ LTR: () => (/* binding */ LTR), /* harmony export */ RTL: () => (/* binding */ RTL), /* harmony export */ RequestInterval: () => (/* binding */ RequestInterval), /* harmony export */ SLIDE: () => (/* binding */ SLIDE), /* harmony export */ STATUS_CLASSES: () => (/* binding */ STATUS_CLASSES), /* harmony export */ Splide: () => (/* binding */ Splide), /* harmony export */ SplideRenderer: () => (/* binding */ SplideRenderer), /* harmony export */ State: () => (/* binding */ State), /* harmony export */ TTB: () => (/* binding */ TTB), /* harmony export */ Throttle: () => (/* binding */ Throttle), /* harmony export */ "default": () => (/* binding */ Splide) /* harmony export */ }); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } /*! * Splide.js * Version : 4.1.4 * License : MIT * Copyright: 2022 Naotoshi Fujita */ var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)"; var CREATED = 1; var MOUNTED = 2; var IDLE = 3; var MOVING = 4; var SCROLLING = 5; var DRAGGING = 6; var DESTROYED = 7; var STATES = { CREATED: CREATED, MOUNTED: MOUNTED, IDLE: IDLE, MOVING: MOVING, SCROLLING: SCROLLING, DRAGGING: DRAGGING, DESTROYED: DESTROYED }; function empty(array) { array.length = 0; } function slice(arrayLike, start, end) { return Array.prototype.slice.call(arrayLike, start, end); } function apply(func) { return func.bind.apply(func, [null].concat(slice(arguments, 1))); } var nextTick = setTimeout; var noop = function noop() {}; function raf(func) { return requestAnimationFrame(func); } function typeOf(type, subject) { return typeof subject === type; } function isObject(subject) { return !isNull(subject) && typeOf("object", subject); } var isArray = Array.isArray; var isFunction = apply(typeOf, "function"); var isString = apply(typeOf, "string"); var isUndefined = apply(typeOf, "undefined"); function isNull(subject) { return subject === null; } function isHTMLElement(subject) { try { return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement; } catch (e) { return false; } } function toArray(value) { return isArray(value) ? value : [value]; } function forEach(values, iteratee) { toArray(values).forEach(iteratee); } function includes(array, value) { return array.indexOf(value) > -1; } function push(array, items) { array.push.apply(array, toArray(items)); return array; } function toggleClass(elm, classes, add) { if (elm) { forEach(classes, function (name) { if (name) { elm.classList[add ? "add" : "remove"](name); } }); } } function addClass(elm, classes) { toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); } function append(parent, children) { forEach(children, parent.appendChild.bind(parent)); } function before(nodes, ref) { forEach(nodes, function (node) { var parent = (ref || node).parentNode; if (parent) { parent.insertBefore(node, ref); } }); } function matches(elm, selector) { return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); } function children(parent, selector) { var children2 = parent ? slice(parent.children) : []; return selector ? children2.filter(function (child) { return matches(child, selector); }) : children2; } function child(parent, selector) { return selector ? children(parent, selector)[0] : parent.firstElementChild; } var ownKeys = Object.keys; function forOwn(object, iteratee, right) { if (object) { (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) { key !== "__proto__" && iteratee(object[key], key); }); } return object; } function assign(object) { slice(arguments, 1).forEach(function (source) { forOwn(source, function (value, key) { object[key] = source[key]; }); }); return object; } function merge(object) { slice(arguments, 1).forEach(function (source) { forOwn(source, function (value, key) { if (isArray(value)) { object[key] = value.slice(); } else if (isObject(value)) { object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value); } else { object[key] = value; } }); }); return object; } function omit(object, keys) { forEach(keys || ownKeys(object), function (key) { delete object[key]; }); } function removeAttribute(elms, attrs) { forEach(elms, function (elm) { forEach(attrs, function (attr) { elm && elm.removeAttribute(attr); }); }); } function setAttribute(elms, attrs, value) { if (isObject(attrs)) { forOwn(attrs, function (value2, name) { setAttribute(elms, name, value2); }); } else { forEach(elms, function (elm) { isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); }); } } function create(tag, attrs, parent) { var elm = document.createElement(tag); if (attrs) { isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); } parent && append(parent, elm); return elm; } function style(elm, prop, value) { if (isUndefined(value)) { return getComputedStyle(elm)[prop]; } if (!isNull(value)) { elm.style[prop] = "" + value; } } function display(elm, display2) { style(elm, "display", display2); } function focus(elm) { elm["setActive"] && elm["setActive"]() || elm.focus({ preventScroll: true }); } function getAttribute(elm, attr) { return elm.getAttribute(attr); } function hasClass(elm, className) { return elm && elm.classList.contains(className); } function rect(target) { return target.getBoundingClientRect(); } function remove(nodes) { forEach(nodes, function (node) { if (node && node.parentNode) { node.parentNode.removeChild(node); } }); } function parseHtml(html) { return child(new DOMParser().parseFromString(html, "text/html").body); } function prevent(e, stopPropagation) { e.preventDefault(); if (stopPropagation) { e.stopPropagation(); e.stopImmediatePropagation(); } } function query(parent, selector) { return parent && parent.querySelector(selector); } function queryAll(parent, selector) { return selector ? slice(parent.querySelectorAll(selector)) : []; } function removeClass(elm, classes) { toggleClass(elm, classes, false); } function timeOf(e) { return e.timeStamp; } function unit(value) { return isString(value) ? value : value ? value + "px" : ""; } var PROJECT_CODE = "splide"; var DATA_ATTRIBUTE = "data-" + PROJECT_CODE; function assert(condition, message) { if (!condition) { throw new Error("[" + PROJECT_CODE + "] " + (message || "")); } } var min = Math.min, max = Math.max, floor = Math.floor, ceil = Math.ceil, abs = Math.abs; function approximatelyEqual(x, y, epsilon) { return abs(x - y) < epsilon; } function between(number, x, y, exclusive) { var minimum = min(x, y); var maximum = max(x, y); return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum; } function clamp(number, x, y) { var minimum = min(x, y); var maximum = max(x, y); return min(max(minimum, number), maximum); } function sign(x) { return +(x > 0) - +(x < 0); } function camelToKebab(string) { return string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); } function format(string, replacements) { forEach(replacements, function (replacement) { string = string.replace("%s", "" + replacement); }); return string; } function pad(number) { return number < 10 ? "0" + number : "" + number; } var ids = {}; function uniqueId(prefix) { return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1); } function EventBinder() { var listeners = []; function bind(targets, events, callback, options) { forEachEvent(targets, events, function (target, event, namespace) { var isEventTarget = ("addEventListener" in target); var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); listeners.push([target, event, namespace, callback, remover]); }); } function unbind(targets, events, callback) { forEachEvent(targets, events, function (target, event, namespace) { listeners = listeners.filter(function (listener) { if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { listener[4](); return false; } return true; }); }); } function dispatch(target, type, detail) { var e; var bubbles = true; if (typeof CustomEvent === "function") { e = new CustomEvent(type, { bubbles: bubbles, detail: detail }); } else { e = document.createEvent("CustomEvent"); e.initCustomEvent(type, bubbles, false, detail); } target.dispatchEvent(e); return e; } function forEachEvent(targets, events, iteratee) { forEach(targets, function (target) { target && forEach(events, function (events2) { events2.split(" ").forEach(function (eventNS) { var fragment = eventNS.split("."); iteratee(target, fragment[0], fragment[1]); }); }); }); } function destroy() { listeners.forEach(function (data) { data[4](); }); empty(listeners); } return { bind: bind, unbind: unbind, dispatch: dispatch, destroy: destroy }; } var EVENT_MOUNTED = "mounted"; var EVENT_READY = "ready"; var EVENT_MOVE = "move"; var EVENT_MOVED = "moved"; var EVENT_CLICK = "click"; var EVENT_ACTIVE = "active"; var EVENT_INACTIVE = "inactive"; var EVENT_VISIBLE = "visible"; var EVENT_HIDDEN = "hidden"; var EVENT_REFRESH = "refresh"; var EVENT_UPDATED = "updated"; var EVENT_RESIZE = "resize"; var EVENT_RESIZED = "resized"; var EVENT_DRAG = "drag"; var EVENT_DRAGGING = "dragging"; var EVENT_DRAGGED = "dragged"; var EVENT_SCROLL = "scroll"; var EVENT_SCROLLED = "scrolled"; var EVENT_OVERFLOW = "overflow"; var EVENT_DESTROY = "destroy"; var EVENT_ARROWS_MOUNTED = "arrows:mounted"; var EVENT_ARROWS_UPDATED = "arrows:updated"; var EVENT_PAGINATION_MOUNTED = "pagination:mounted"; var EVENT_PAGINATION_UPDATED = "pagination:updated"; var EVENT_NAVIGATION_MOUNTED = "navigation:mounted"; var EVENT_AUTOPLAY_PLAY = "autoplay:play"; var EVENT_AUTOPLAY_PLAYING = "autoplay:playing"; var EVENT_AUTOPLAY_PAUSE = "autoplay:pause"; var EVENT_LAZYLOAD_LOADED = "lazyload:loaded"; var EVENT_SLIDE_KEYDOWN = "sk"; var EVENT_SHIFTED = "sh"; var EVENT_END_INDEX_CHANGED = "ei"; function EventInterface(Splide2) { var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); var binder = EventBinder(); function on(events, callback) { binder.bind(bus, toArray(events).join(" "), function (e) { callback.apply(callback, isArray(e.detail) ? e.detail : []); }); } function emit(event) { binder.dispatch(bus, event, slice(arguments, 1)); } if (Splide2) { Splide2.event.on(EVENT_DESTROY, binder.destroy); } return assign(binder, { bus: bus, on: on, off: apply(binder.unbind, bus), emit: emit }); } function RequestInterval(interval, onInterval, onUpdate, limit) { var now = Date.now; var startTime; var rate = 0; var id; var paused = true; var count = 0; function update() { if (!paused) { rate = interval ? min((now() - startTime) / interval, 1) : 1; onUpdate && onUpdate(rate); if (rate >= 1) { onInterval(); startTime = now(); if (limit && ++count >= limit) { return pause(); } } id = raf(update); } } function start(resume) { resume || cancel(); startTime = now() - (resume ? rate * interval : 0); paused = false; id = raf(update); } function pause() { paused = true; } function rewind() { startTime = now(); rate = 0; if (onUpdate) { onUpdate(rate); } } function cancel() { id && cancelAnimationFrame(id); rate = 0; id = 0; paused = true; } function set(time) { interval = time; } function isPaused() { return paused; } return { start: start, rewind: rewind, pause: pause, cancel: cancel, set: set, isPaused: isPaused }; } function State(initialState) { var state = initialState; function set(value) { state = value; } function is(states) { return includes(toArray(states), state); } return { set: set, is: is }; } function Throttle(func, duration) { var interval = RequestInterval(duration || 0, func, null, 1); return function () { interval.isPaused() && interval.start(); }; } function Media(Splide2, Components2, options) { var state = Splide2.state; var breakpoints = options.breakpoints || {}; var reducedMotion = options.reducedMotion || {}; var binder = EventBinder(); var queries = []; function setup() { var isMin = options.mediaQuery === "min"; ownKeys(breakpoints).sort(function (n, m) { return isMin ? +n - +m : +m - +n; }).forEach(function (key) { register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)"); }); register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION); update(); } function destroy(completely) { if (completely) { binder.destroy(); } } function register(options2, query) { var queryList = matchMedia(query); binder.bind(queryList, "change", update); queries.push([options2, queryList]); } function update() { var destroyed = state.is(DESTROYED); var direction = options.direction; var merged = queries.reduce(function (merged2, entry) { return merge(merged2, entry[1].matches ? entry[0] : {}); }, {}); omit(options); set(merged); if (options.destroy) { Splide2.destroy(options.destroy === "completely"); } else if (destroyed) { destroy(true); Splide2.mount(); } else { direction !== options.direction && Splide2.refresh(); } } function reduce(enable) { if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) { enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion)); } } function set(opts, base, notify) { merge(options, opts); base && merge(Object.getPrototypeOf(options), opts); if (notify || !state.is(CREATED)) { Splide2.emit(EVENT_UPDATED, options); } } return { setup: setup, destroy: destroy, reduce: reduce, set: set }; } var ARROW = "Arrow"; var ARROW_LEFT = ARROW + "Left"; var ARROW_RIGHT = ARROW + "Right"; var ARROW_UP = ARROW + "Up"; var ARROW_DOWN = ARROW + "Down"; var LTR = "ltr"; var RTL = "rtl"; var TTB = "ttb"; var ORIENTATION_MAP = { width: ["height"], left: ["top", "right"], right: ["bottom", "left"], x: ["y"], X: ["Y"], Y: ["X"], ArrowLeft: [ARROW_UP, ARROW_RIGHT], ArrowRight: [ARROW_DOWN, ARROW_LEFT] }; function Direction(Splide2, Components2, options) { function resolve(prop, axisOnly, direction) { direction = direction || options.direction; var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1; return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) { var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match; return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement; }); } function orient(value) { return value * (options.direction === RTL ? 1 : -1); } return { resolve: resolve, orient: orient }; } var ROLE = "role"; var TAB_INDEX = "tabindex"; var DISABLED = "disabled"; var ARIA_PREFIX = "aria-"; var ARIA_CONTROLS = ARIA_PREFIX + "controls"; var ARIA_CURRENT = ARIA_PREFIX + "current"; var ARIA_SELECTED = ARIA_PREFIX + "selected"; var ARIA_LABEL = ARIA_PREFIX + "label"; var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby"; var ARIA_HIDDEN = ARIA_PREFIX + "hidden"; var ARIA_ORIENTATION = ARIA_PREFIX + "orientation"; var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription"; var ARIA_LIVE = ARIA_PREFIX + "live"; var ARIA_BUSY = ARIA_PREFIX + "busy"; var ARIA_ATOMIC = ARIA_PREFIX + "atomic"; var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION]; var CLASS_PREFIX = PROJECT_CODE + "__"; var STATUS_CLASS_PREFIX = "is-"; var CLASS_ROOT = PROJECT_CODE; var CLASS_TRACK = CLASS_PREFIX + "track"; var CLASS_LIST = CLASS_PREFIX + "list"; var CLASS_SLIDE = CLASS_PREFIX + "slide"; var CLASS_CLONE = CLASS_SLIDE + "--clone"; var CLASS_CONTAINER = CLASS_SLIDE + "__container"; var CLASS_ARROWS = CLASS_PREFIX + "arrows"; var CLASS_ARROW = CLASS_PREFIX + "arrow"; var CLASS_ARROW_PREV = CLASS_ARROW + "--prev"; var CLASS_ARROW_NEXT = CLASS_ARROW + "--next"; var CLASS_PAGINATION = CLASS_PREFIX + "pagination"; var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page"; var CLASS_PROGRESS = CLASS_PREFIX + "progress"; var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar"; var CLASS_TOGGLE = CLASS_PREFIX + "toggle"; var CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play"; var CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause"; var CLASS_SPINNER = CLASS_PREFIX + "spinner"; var CLASS_SR = CLASS_PREFIX + "sr"; var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized"; var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active"; var CLASS_PREV = STATUS_CLASS_PREFIX + "prev"; var CLASS_NEXT = STATUS_CLASS_PREFIX + "next"; var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible"; var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading"; var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in"; var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow"; var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW]; var CLASSES = { slide: CLASS_SLIDE, clone: CLASS_CLONE, arrows: CLASS_ARROWS, arrow: CLASS_ARROW, prev: CLASS_ARROW_PREV, next: CLASS_ARROW_NEXT, pagination: CLASS_PAGINATION, page: CLASS_PAGINATION_PAGE, spinner: CLASS_SPINNER }; function closest(from, selector) { if (isFunction(from.closest)) { return from.closest(selector); } var elm = from; while (elm && elm.nodeType === 1) { if (matches(elm, selector)) { break; } elm = elm.parentElement; } return elm; } var FRICTION = 5; var LOG_INTERVAL = 200; var POINTER_DOWN_EVENTS = "touchstart mousedown"; var POINTER_MOVE_EVENTS = "touchmove mousemove"; var POINTER_UP_EVENTS = "touchend touchcancel mouseup click"; function Elements(Splide2, Components2, options) { var _EventInterface = EventInterface(Splide2), on = _EventInterface.on, bind = _EventInterface.bind; var root = Splide2.root; var i18n = options.i18n; var elements = {}; var slides = []; var rootClasses = []; var trackClasses = []; var track; var list; var isUsingKey; function setup() { collect(); init(); update(); } function mount() { on(EVENT_REFRESH, destroy); on(EVENT_REFRESH, setup); on(EVENT_UPDATED, update); bind(document, POINTER_DOWN_EVENTS + " keydown", function (e) { isUsingKey = e.type === "keydown"; }, { capture: true }); bind(root, "focusin", function () { toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey); }); } function destroy(completely) { var attrs = ALL_ATTRIBUTES.concat("style"); empty(slides); removeClass(root, rootClasses); removeClass(track, trackClasses); removeAttribute([track, list], attrs); removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]); } function update() { removeClass(root, rootClasses); removeClass(track, trackClasses); rootClasses = getClasses(CLASS_ROOT); trackClasses = getClasses(CLASS_TRACK); addClass(root, rootClasses); addClass(track, trackClasses); setAttribute(root, ARIA_LABEL, options.label); setAttribute(root, ARIA_LABELLEDBY, options.labelledby); } function collect() { track = find("." + CLASS_TRACK); list = child(track, "." + CLASS_LIST); assert(track && list, "A track/list element is missing."); push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")")); forOwn({ arrows: CLASS_ARROWS, pagination: CLASS_PAGINATION, prev: CLASS_ARROW_PREV, next: CLASS_ARROW_NEXT, bar: CLASS_PROGRESS_BAR, toggle: CLASS_TOGGLE }, function (className, key) { elements[key] = find("." + className); }); assign(elements, { root: root, track: track, list: list, slides: slides }); } function init() { var id = root.id || uniqueId(PROJECT_CODE); var role = options.role; root.id = id; track.id = track.id || id + "-track"; list.id = list.id || id + "-list"; if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) { setAttribute(root, ROLE, role); } setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel); setAttribute(list, ROLE, "presentation"); } function find(selector) { var elm = query(root, selector); return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0; } function getClasses(base) { return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE]; } return assign(elements, { setup: setup, mount: mount, destroy: destroy }); } var SLIDE = "slide"; var LOOP = "loop"; var FADE = "fade"; function Slide$1(Splide2, index, slideIndex, slide) { var event = EventInterface(Splide2); var on = event.on, emit = event.emit, bind = event.bind; var Components = Splide2.Components, root = Splide2.root, options = Splide2.options; var isNavigation = options.isNavigation, updateOnMove = options.updateOnMove, i18n = options.i18n, pagination = options.pagination, slideFocus = options.slideFocus; var resolve = Components.Direction.resolve; var styles = getAttribute(slide, "style"); var label = getAttribute(slide, ARIA_LABEL); var isClone = slideIndex > -1; var container = child(slide, "." + CLASS_CONTAINER); var destroyed; function mount() { if (!isClone) { slide.id = root.id + "-slide" + pad(index + 1); setAttribute(slide, ROLE, pagination ? "tabpanel" : "group"); setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide); setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length])); } listen(); } function listen() { bind(slide, "click", apply(emit, EVENT_CLICK, self)); bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self)); on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update); on(EVENT_NAVIGATION_MOUNTED, initNavigation); if (updateOnMove) { on(EVENT_MOVE, onMove); } } function destroy() { destroyed = true; event.destroy(); removeClass(slide, STATUS_CLASSES); removeAttribute(slide, ALL_ATTRIBUTES); setAttribute(slide, "style", styles); setAttribute(slide, ARIA_LABEL, label || ""); } function initNavigation() { var controls = Splide2.splides.map(function (target) { var Slide2 = target.splide.Components.Slides.getAt(index); return Slide2 ? Slide2.slide.id : ""; }).join(" "); setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1)); setAttribute(slide, ARIA_CONTROLS, controls); setAttribute(slide, ROLE, slideFocus ? "button" : ""); slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION); } function onMove() { if (!destroyed) { update(); } } function update() { if (!destroyed) { var curr = Splide2.index; updateActivity(); updateVisibility(); toggleClass(slide, CLASS_PREV, index === curr - 1); toggleClass(slide, CLASS_NEXT, index === curr + 1); } } function updateActivity() { var active = isActive(); if (active !== hasClass(slide, CLASS_ACTIVE)) { toggleClass(slide, CLASS_ACTIVE, active); setAttribute(slide, ARIA_CURRENT, isNavigation && active || ""); emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self); } } function updateVisibility() { var visible = isVisible(); var hidden = !visible && (!isActive() || isClone); if (!Splide2.state.is([MOVING, SCROLLING])) { setAttribute(slide, ARIA_HIDDEN, hidden || ""); } setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : ""); if (slideFocus) { setAttribute(slide, TAB_INDEX, hidden ? -1 : 0); } if (visible !== hasClass(slide, CLASS_VISIBLE)) { toggleClass(slide, CLASS_VISIBLE, visible); emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self); } if (!visible && document.activeElement === slide) { var Slide2 = Components.Slides.getAt(Splide2.index); Slide2 && focus(Slide2.slide); } } function style$1(prop, value, useContainer) { style(useContainer && container || slide, prop, value); } function isActive() { var curr = Splide2.index; return curr === index || options.cloneStatus && curr === slideIndex; } function isVisible() { if (Splide2.is(FADE)) { return isActive(); } var trackRect = rect(Components.Elements.track); var slideRect = rect(slide); var left = resolve("left", true); var right = resolve("right", true); return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]); } function isWithin(from, distance) { var diff = abs(from - index); if (!isClone && (options.rewind || Splide2.is(LOOP))) { diff = min(diff, Splide2.length - diff); } return diff <= distance; } var self = { index: index, slideIndex: slideIndex, slide: slide, container: container, isClone: isClone, mount: mount, destroy: destroy, update: update, style: style$1, isWithin: isWithin }; return self; } function Slides(Splide2, Components2, options) { var _EventInterface2 = EventInterface(Splide2), on = _EventInterface2.on, emit = _EventInterface2.emit, bind = _EventInterface2.bind; var _Components2$Elements = Components2.Elements, slides = _Components2$Elements.slides, list = _Components2$Elements.list; var Slides2 = []; function mount() { init(); on(EVENT_REFRESH, destroy); on(EVENT_REFRESH, init); } function init() { slides.forEach(function (slide, index) { register(slide, index, -1); }); } function destroy() { forEach$1(function (Slide2) { Slide2.destroy(); }); empty(Slides2); } function update() { forEach$1(function (Slide2) { Slide2.update(); }); } function register(slide, index, slideIndex) { var object = Slide$1(Splide2, index, slideIndex, slide); object.mount(); Slides2.push(object); Slides2.sort(function (Slide1, Slide2) { return Slide1.index - Slide2.index; }); } function get(excludeClones) { return excludeClones ? filter(function (Slide2) { return !Slide2.isClone; }) : Slides2; } function getIn(page) { var Controller = Components2.Controller; var index = Controller.toIndex(page); var max = Controller.hasFocus() ? 1 : options.perPage; return filter(function (Slide2) { return between(Slide2.index, index, index + max - 1); }); } function getAt(index) { return filter(index)[0]; } function add(items, index) { forEach(items, function (slide) { if (isString(slide)) { slide = parseHtml(slide); } if (isHTMLElement(slide)) { var ref = slides[index]; ref ? before(slide, ref) : append(list, slide); addClass(slide, options.classes.slide); observeImages(slide, apply(emit, EVENT_RESIZE)); } }); emit(EVENT_REFRESH); } function remove$1(matcher) { remove(filter(matcher).map(function (Slide2) { return Slide2.slide; })); emit(EVENT_REFRESH); } function forEach$1(iteratee, excludeClones) { get(excludeClones).forEach(iteratee); } function filter(matcher) { return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) { return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index); }); } function style(prop, value, useContainer) { forEach$1(function (Slide2) { Slide2.style(prop, value, useContainer); }); } function observeImages(elm, callback) { var images = queryAll(elm, "img"); var length = images.length; if (length) { images.forEach(function (img) { bind(img, "load error", function () { if (! --length) { callback(); } }); }); } else { callback(); } } function getLength(excludeClones) { return excludeClones ? slides.length : Slides2.length; } function isEnough() { return Slides2.length > options.perPage; } return { mount: mount, destroy: destroy, update: update, register: register, get: get, getIn: getIn, getAt: getAt, add: add, remove: remove$1, forEach: forEach$1, filter: filter, style: style, getLength: getLength, isEnough: isEnough }; } function Layout(Splide2, Components2, options) { var _EventInterface3 = EventInterface(Splide2), on = _EventInterface3.on, bind = _EventInterface3.bind, emit = _EventInterface3.emit; var Slides = Components2.Slides; var resolve = Components2.Direction.resolve; var _Components2$Elements2 = Components2.Elements, root = _Components2$Elements2.root, track = _Components2$Elements2.track, list = _Components2$Elements2.list; var getAt = Slides.getAt, styleSlides = Slides.style; var vertical; var rootRect; var overflow; function mount() { init(); bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE))); on([EVENT_UPDATED, EVENT_REFRESH], init); on(EVENT_RESIZE, resize); } function init() { vertical = options.direction === TTB; style(root, "maxWidth", unit(options.width)); style(track, resolve("paddingLeft"), cssPadding(false)); style(track, resolve("paddingRight"), cssPadding(true)); resize(true); } function resize(force) { var newRect = rect(root); if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) { style(track, "height", cssTrackHeight()); styleSlides(resolve("marginRight"), unit(options.gap)); styleSlides("width", cssSlideWidth()); styleSlides("height", cssSlideHeight(), true); rootRect = newRect; emit(EVENT_RESIZED); if (overflow !== (overflow = isOverflow())) { toggleClass(root, CLASS_OVERFLOW, overflow); emit(EVENT_OVERFLOW, overflow); } } } function cssPadding(right) { var padding = options.padding; var prop = resolve(right ? "right" : "left"); return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; } function cssTrackHeight() { var height = ""; if (vertical) { height = cssHeight(); assert(height, "height or heightRatio is missing."); height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")"; } return height; } function cssHeight() { return unit(options.height || rect(list).width * options.heightRatio); } function cssSlideWidth() { return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize()); } function cssSlideHeight() { return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight()); } function cssSlideSize() { var gap = unit(options.gap); return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; } function listSize() { return rect(list)[resolve("width")]; } function slideSize(index, withoutGap) { var Slide = getAt(index || 0); return Slide ? rect(Slide.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0; } function totalSize(index, withoutGap) { var Slide = getAt(index); if (Slide) { var right = rect(Slide.slide)[resolve("right")]; var left = rect(list)[resolve("left")]; return abs(right - left) + (withoutGap ? 0 : getGap()); } return 0; } function sliderSize(withoutGap) { return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap); } function getGap() { var Slide = getAt(0); return Slide && parseFloat(style(Slide.slide, resolve("marginRight"))) || 0; } function getPadding(right) { return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0; } function isOverflow() { return Splide2.is(FADE) || sliderSize(true) > listSize(); } return { mount: mount, resize: resize, listSize: listSize, slideSize: slideSize, sliderSize: sliderSize, totalSize: totalSize, getPadding: getPadding, isOverflow: isOverflow }; } var MULTIPLIER = 2; function Clones(Splide2, Components2, options) { var event = EventInterface(Splide2); var on = event.on; var Elements = Components2.Elements, Slides = Components2.Slides; var resolve = Components2.Direction.resolve; var clones = []; var cloneCount; function mount() { on(EVENT_REFRESH, remount); on([EVENT_UPDATED, EVENT_RESIZE], observe); if (cloneCount = computeCloneCount()) { generate(cloneCount); Components2.Layout.resize(true); } } function remount() { destroy(); mount(); } function destroy() { remove(clones); empty(clones); event.destroy(); } function observe() { var count = computeCloneCount(); if (cloneCount !== count) { if (cloneCount < count || !count) { event.emit(EVENT_REFRESH); } } } function generate(count) { var slides = Slides.get().slice(); var length = slides.length; if (length) { while (slides.length < count) { push(slides, slides); } push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) { var isHead = index < count; var clone = cloneDeep(Slide.slide, index); isHead ? before(clone, slides[0].slide) : append(Elements.list, clone); push(clones, clone); Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index); }); } } function cloneDeep(elm, index) { var clone = elm.cloneNode(true); addClass(clone, options.classes.clone); clone.id = Splide2.root.id + "-clone" + pad(index + 1); return clone; } function computeCloneCount() { var clones2 = options.clones; if (!Splide2.is(LOOP)) { clones2 = 0; } else if (isUndefined(clones2)) { var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0); var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize); clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER; } return clones2; } return { mount: mount, destroy: destroy }; } function Move(Splide2, Components2, options) { var _EventInterface4 = EventInterface(Splide2), on = _EventInterface4.on, emit = _EventInterface4.emit; var set = Splide2.state.set; var _Components2$Layout = Components2.Layout, slideSize = _Components2$Layout.slideSize, getPadding = _Components2$Layout.getPadding, totalSize = _Components2$Layout.totalSize, listSize = _Components2$Layout.listSize, sliderSize = _Components2$Layout.sliderSize; var _Components2$Directio = Components2.Direction, resolve = _Components2$Directio.resolve, orient = _Components2$Directio.orient; var _Components2$Elements3 = Components2.Elements, list = _Components2$Elements3.list, track = _Components2$Elements3.track; var Transition; function mount() { Transition = Components2.Transition; on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition); } function reposition() { if (!Components2.Controller.isBusy()) { Components2.Scroll.cancel(); jump(Splide2.index); Components2.Slides.update(); } } function move(dest, index, prev, callback) { if (dest !== index && canShift(dest > prev)) { cancel(); translate(shift(getPosition(), dest > prev), true); } set(MOVING); emit(EVENT_MOVE, index, prev, dest); Transition.start(index, function () { set(IDLE); emit(EVENT_MOVED, index, prev, dest); callback && callback(); }); } function jump(index) { translate(toPosition(index, true)); } function translate(position, preventLoop) { if (!Splide2.is(FADE)) { var destination = preventLoop ? position : loop(position); style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)"); position !== destination && emit(EVENT_SHIFTED); } } function loop(position) { if (Splide2.is(LOOP)) { var index = toIndex(position); var exceededMax = index > Components2.Controller.getEnd(); var exceededMin = index < 0; if (exceededMin || exceededMax) { position = shift(position, exceededMax); } } return position; } function shift(position, backwards) { var excess = position - getLimit(backwards); var size = sliderSize(); position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1); return position; } function cancel() { translate(getPosition(), true); Transition.cancel(); } function toIndex(position) { var Slides = Components2.Slides.get(); var index = 0; var minDistance = Infinity; for (var i = 0; i < Slides.length; i++) { var slideIndex = Slides[i].index; var distance = abs(toPosition(slideIndex, true) - position); if (distance <= minDistance) { minDistance = distance; index = slideIndex; } else { break; } } return index; } function toPosition(index, trimming) { var position = orient(totalSize(index - 1) - offset(index)); return trimming ? trim(position) : position; } function getPosition() { var left = resolve("left"); return rect(list)[left] - rect(track)[left] + orient(getPadding(false)); } function trim(position) { if (options.trimSpace && Splide2.is(SLIDE)) { position = clamp(position, 0, orient(sliderSize(true) - listSize())); } return position; } function offset(index) { var focus = options.focus; return focus === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0; } function getLimit(max) { return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace); } function canShift(backwards) { var shifted = orient(shift(getPosition(), backwards)); return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")]; } function exceededLimit(max, position) { position = isUndefined(position) ? getPosition() : position; var exceededMin = max !== true && orient(position) < orient(getLimit(false)); var exceededMax = max !== false && orient(position) > orient(getLimit(true)); return exceededMin || exceededMax; } return { mount: mount, move: move, jump: jump, translate: translate, shift: shift, cancel: cancel, toIndex: toIndex, toPosition: toPosition, getPosition: getPosition, getLimit: getLimit, exceededLimit: exceededLimit, reposition: reposition }; } function Controller(Splide2, Components2, options) { var _EventInterface5 = EventInterface(Splide2), on = _EventInterface5.on, emit = _EventInterface5.emit; var Move = Components2.Move; var getPosition = Move.getPosition, getLimit = Move.getLimit, toPosition = Move.toPosition; var _Components2$Slides = Components2.Slides, isEnough = _Components2$Slides.isEnough, getLength = _Components2$Slides.getLength; var omitEnd = options.omitEnd; var isLoop = Splide2.is(LOOP); var isSlide = Splide2.is(SLIDE); var getNext = apply(getAdjacent, false); var getPrev = apply(getAdjacent, true); var currIndex = options.start || 0; var endIndex; var prevIndex = currIndex; var slideCount; var perMove; var perPage; function mount() { init(); on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init); on(EVENT_RESIZED, onResized); } function init() { slideCount = getLength(true); perMove = options.perMove; perPage = options.perPage; endIndex = getEnd(); var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1); if (index !== currIndex) { currIndex = index; Move.reposition(); } } function onResized() { if (endIndex !== getEnd()) { emit(EVENT_END_INDEX_CHANGED); } } function go(control, allowSameIndex, callback) { if (!isBusy()) { var dest = parse(control); var index = loop(dest); if (index > -1 && (allowSameIndex || index !== currIndex)) { setIndex(index); Move.move(dest, index, prevIndex, callback); } } } function scroll(destination, duration, snap, callback) { Components2.Scroll.scroll(destination, duration, snap, function () { var index = loop(Move.toIndex(getPosition())); setIndex(omitEnd ? min(index, endIndex) : index); callback && callback(); }); } function parse(control) { var index = currIndex; if (isString(control)) { var _ref = control.match(/([+\-<>])(\d+)?/) || [], indicator = _ref[1], number = _ref[2]; if (indicator === "+" || indicator === "-") { index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex); } else if (indicator === ">") { index = number ? toIndex(+number) : getNext(true); } else if (indicator === "<") { index = getPrev(true); } } else { index = isLoop ? control : clamp(control, 0, endIndex); } return index; } function getAdjacent(prev, destination) { var number = perMove || (hasFocus() ? 1 : perPage); var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus())); if (dest === -1 && isSlide) { if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) { return prev ? 0 : endIndex; } } return destination ? dest : loop(dest); } function computeDestIndex(dest, from, snapPage) { if (isEnough() || hasFocus()) { var index = computeMovableDestIndex(dest); if (index !== dest) { from = dest; dest = index; snapPage = false; } if (dest < 0 || dest > endIndex) { if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) { dest = toIndex(toPage(dest)); } else { if (isLoop) { dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest; } else if (options.rewind) { dest = dest < 0 ? endIndex : 0; } else { dest = -1; } } } else { if (snapPage && dest !== from) { dest = toIndex(toPage(from) + (dest < from ? -1 : 1)); } } } else { dest = -1; } return dest; } function computeMovableDestIndex(dest) { if (isSlide && options.trimSpace === "move" && dest !== currIndex) { var position = getPosition(); while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) { dest < currIndex ? --dest : ++dest; } } return dest; } function loop(index) { return isLoop ? (index + slideCount) % slideCount || 0 : index; } function getEnd() { var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage); while (omitEnd && end-- > 0) { if (toPosition(slideCount - 1, true) !== toPosition(end, true)) { end++; break; } } return clamp(end, 0, slideCount - 1); } function toIndex(page) { return clamp(hasFocus() ? page : perPage * page, 0, endIndex); } function toPage(index) { return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage); } function toDest(destination) { var closest = Move.toIndex(destination); return isSlide ? clamp(closest, 0, endIndex) : closest; } function setIndex(index) { if (index !== currIndex) { prevIndex = currIndex; currIndex = index; } } function getIndex(prev) { return prev ? prevIndex : currIndex; } function hasFocus() { return !isUndefined(options.focus) || options.isNavigation; } function isBusy() { return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition; } return { mount: mount, go: go, scroll: scroll, getNext: getNext, getPrev: getPrev, getAdjacent: getAdjacent, getEnd: getEnd, setIndex: setIndex, getIndex: getIndex, toIndex: toIndex, toPage: toPage, toDest: toDest, hasFocus: hasFocus, isBusy: isBusy }; } var XML_NAME_SPACE = "http://www.w3.org/2000/svg"; var PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z"; var SIZE = 40; function Arrows(Splide2, Components2, options) { var event = EventInterface(Splide2); var on = event.on, bind = event.bind, emit = event.emit; var classes = options.classes, i18n = options.i18n; var Elements = Components2.Elements, Controller = Components2.Controller; var placeholder = Elements.arrows, track = Elements.track; var wrapper = placeholder; var prev = Elements.prev; var next = Elements.next; var created; var wrapperClasses; var arrows = {}; function mount() { init(); on(EVENT_UPDATED, remount); } function remount() { destroy(); mount(); } function init() { var enabled = options.arrows; if (enabled && !(prev && next)) { createArrows(); } if (prev && next) { assign(arrows, { prev: prev, next: next }); display(wrapper, enabled ? "" : "none"); addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction); if (enabled) { listen(); update(); setAttribute([prev, next], ARIA_CONTROLS, track.id); emit(EVENT_ARROWS_MOUNTED, prev, next); } } } function destroy() { event.destroy(); removeClass(wrapper, wrapperClasses); if (created) { remove(placeholder ? [prev, next] : wrapper); prev = next = null; } else { removeAttribute([prev, next], ALL_ATTRIBUTES); } } function listen() { on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update); bind(next, "click", apply(go, ">")); bind(prev, "click", apply(go, "<")); } function go(control) { Controller.go(control, true); } function createArrows() { wrapper = placeholder || create("div", classes.arrows); prev = createArrow(true); next = createArrow(false); created = true; append(wrapper, [prev, next]); !placeholder && before(wrapper, track); } function createArrow(prev2) { var arrow = "