diff --git a/_dev/custom.css b/_dev/custom.css new file mode 100644 index 0000000..48cfc9d --- /dev/null +++ b/_dev/custom.css @@ -0,0 +1 @@ +@import "./node_modules/jquery-offcanvas/dist/jquery-offcanvas.min.css" diff --git a/_dev/elegance.css b/_dev/elegance.css index d9bdcca..6f95e36 100644 --- a/_dev/elegance.css +++ b/_dev/elegance.css @@ -5,11 +5,17 @@ body { @apply bg-white; @apply text-gray-600; - @apply font-normal; + @apply font-light; } a { - apply text-gray-600; + @apply text-gray-600; +} + +a:hover { + @apply text-blue-900; + @apply underline; + @apply underline-offset-2; } .icon-tabler { diff --git a/_dev/js/cart.js b/_dev/js/cart.js new file mode 100644 index 0000000..7271878 --- /dev/null +++ b/_dev/js/cart.js @@ -0,0 +1,374 @@ +import $ from 'jquery'; +import prestashop from 'prestashop'; +import debounce from './components/debounce'; + +prestashop.cart = prestashop.cart || {}; + +prestashop.cart.active_inputs = null; + +const spinnerSelector = 'input[name="product-quantity-spin"]'; +let hasError = false; +let isUpdateOperation = false; +let errorMsg = ''; + +const CheckUpdateQuantityOperations = { + switchErrorStat: () => { + /** + * if errorMsg is not empty or if notifications are shown, we have error to display + * if hasError is true, quantity was not updated : we don't disable checkout button + */ + const $checkoutBtn = $(prestashop.themeSelectors.checkout.btn); + + if ($(prestashop.themeSelectors.notifications.dangerAlert).length || (errorMsg !== '' && !hasError)) { + $checkoutBtn.addClass('disabled'); + } + + if (errorMsg !== '') { + const strError = ` + + `; + $(prestashop.themeSelectors.notifications.container).html(strError); + errorMsg = ''; + isUpdateOperation = false; + if (hasError) { + // if hasError is true, quantity was not updated : allow checkout + $checkoutBtn.removeClass('disabled'); + } + } else if (!hasError && isUpdateOperation) { + hasError = false; + isUpdateOperation = false; + $(prestashop.themeSelectors.notifications.container).html(''); + $checkoutBtn.removeClass('disabled'); + } + }, + checkUpdateOperation: (resp) => { + /** + * resp.hasError can be not defined but resp.errors not empty: quantity is updated but order cannot be placed + * when resp.hasError=true, quantity is not updated + */ + const {hasError: hasErrorOccurred, errors: errorData} = resp; + hasError = hasErrorOccurred ?? false; + const errors = errorData ?? ''; + + // 1.7.2.x returns errors as string, 1.7.3.x returns array + if (errors instanceof Array) { + errorMsg = errors.join(' '); + } else { + errorMsg = errors; + } + + isUpdateOperation = true; + }, +}; + +/** + * Attach Bootstrap TouchSpin event handlers + */ +function createSpin() { + $.each($(spinnerSelector), (index, spinner) => { + $(spinner).TouchSpin({ + verticalbuttons: true, + verticalupclass: 'material-icons touchspin-up', + verticaldownclass: 'material-icons touchspin-down', + buttondown_class: 'btn btn-touchspin js-touchspin js-increase-product-quantity', + buttonup_class: 'btn btn-touchspin js-touchspin js-decrease-product-quantity', + min: parseInt($(spinner).attr('min'), 10), + max: 1000000, + }); + }); + + $(prestashop.themeSelectors.touchspin).off('touchstart.touchspin'); + + CheckUpdateQuantityOperations.switchErrorStat(); +} + +const preventCustomModalOpen = (event) => { + if (window.shouldPreventModal) { + event.preventDefault(); + + return false; + } + + return true; +}; + +$(document).ready(() => { + const productLineInCartSelector = prestashop.themeSelectors.cart.productLineQty; + const promises = []; + + prestashop.on('updateCart', () => { + $(prestashop.themeSelectors.cart.quickview).modal('hide'); + }); + + prestashop.on('updatedCart', () => { + window.shouldPreventModal = false; + + $(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => { + preventCustomModalOpen(modalEvent); + }); + + createSpin(); + }); + + createSpin(); + + const $body = $('body'); + + function isTouchSpin(namespace) { + return namespace === 'on.startupspin' || namespace === 'on.startdownspin'; + } + + function shouldIncreaseProductQuantity(namespace) { + return namespace === 'on.startupspin'; + } + + function findCartLineProductQuantityInput($target) { + const $input = $target.parents(prestashop.themeSelectors.cart.touchspin).find(productLineInCartSelector); + + if ($input.is(':focus')) { + return null; + } + + return $input; + } + + function camelize(subject) { + const actionTypeParts = subject.split('-'); + let i; + let part; + let camelizedSubject = ''; + + for (i = 0; i < actionTypeParts.length; i += 1) { + part = actionTypeParts[i]; + + if (i !== 0) { + part = part.substring(0, 1).toUpperCase() + part.substring(1); + } + + camelizedSubject += part; + } + + return camelizedSubject; + } + + function parseCartAction($target, namespace) { + if (!isTouchSpin(namespace)) { + return { + url: $target.attr('href'), + type: camelize($target.data('link-action')), + }; + } + + const $input = findCartLineProductQuantityInput($target); + + if (!$input) { + return false; + } + + let cartAction = {}; + + if (shouldIncreaseProductQuantity(namespace)) { + cartAction = { + url: $input.data('up-url'), + type: 'increaseProductQuantity', + }; + } else { + cartAction = { + url: $input.data('down-url'), + type: 'decreaseProductQuantity', + }; + } + + return cartAction; + } + + const abortPreviousRequests = () => { + let promise; + while (promises.length > 0) { + promise = promises.pop(); + promise.abort(); + } + }; + + const getTouchSpinInput = ($button) => $($button.parents(prestashop.themeSelectors.cart.touchspin).find('input')); + + $(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => { + preventCustomModalOpen(modalEvent); + }); + + const handleCartAction = (event) => { + abortPreviousRequests(); + window.shouldPreventModal = true; + event.preventDefault(); + + const $target = $(event.currentTarget); + const {dataset} = event.currentTarget; + const cartAction = parseCartAction($target, event.namespace); + const requestData = { + ajax: '1', + action: 'update', + }; + + if (!cartAction) { + return; + } + + $.ajax({ + url: cartAction.url, + method: 'POST', + data: requestData, + dataType: 'json', + beforeSend(jqXHR) { + promises.push(jqXHR); + }, + }) + .then((resp) => { + const $quantityInput = getTouchSpinInput($target); + CheckUpdateQuantityOperations.checkUpdateOperation(resp); + $quantityInput.val(resp.quantity); + + // Refresh cart preview + prestashop.emit('updateCart', { + reason: dataset, + resp, + }); + }) + .fail((resp) => { + prestashop.emit('handleError', { + eventType: 'updateProductInCart', + resp, + cartAction: cartAction.type, + }); + }); + }; + + $body.on('click', prestashop.themeSelectors.cart.actions, handleCartAction); + + function sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, requestData, $target) { + abortPreviousRequests(); + window.shouldPreventModal = true; + + return $.ajax({ + url: updateQuantityInCartUrl, + method: 'POST', + data: requestData, + dataType: 'json', + beforeSend(jqXHR) { + promises.push(jqXHR); + }, + }) + .then((resp) => { + CheckUpdateQuantityOperations.checkUpdateOperation(resp); + + $target.val(resp.quantity); + const dataset = ($target && $target.dataset) ? $target.dataset : resp; + + // Refresh cart preview + prestashop.emit('updateCart', { + reason: dataset, + resp, + }); + }) + .fail((resp) => { + prestashop.emit('handleError', { + eventType: 'updateProductQuantityInCart', + resp, + }); + }); + } + + function getQuantityChangeType($quantity) { + return $quantity > 0 ? 'up' : 'down'; + } + + function getRequestData(quantity) { + return { + ajax: '1', + qty: Math.abs(quantity), + action: 'update', + op: getQuantityChangeType(quantity), + }; + } + + function updateProductQuantityInCart(event) { + const $target = $(event.currentTarget); + const updateQuantityInCartUrl = $target.data('update-url'); + const baseValue = $target.attr('value'); + + // There should be a valid product quantity in cart + const targetValue = $target.val(); + /* eslint-disable */ + if (targetValue != parseInt(targetValue, 10) || targetValue < 0 || isNaN(targetValue)) { + window.shouldPreventModal = false; + $target.val(baseValue); + return; + } + /* eslint-enable */ + // There should be a new product quantity in cart + const qty = targetValue - baseValue; + + if (qty === 0) { + return; + } + + if (targetValue === '0') { + $target.closest('.product-line-actions').find('[data-link-action="delete-from-cart"]').click(); + } else { + $target.attr('value', targetValue); + sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, getRequestData(qty), $target); + } + } + + $body.on('touchspin.on.stopspin', spinnerSelector, debounce(updateProductQuantityInCart)); + + $body.on('focusout keyup', productLineInCartSelector, (event) => { + if (event.type === 'keyup') { + if (event.keyCode === 13) { + isUpdateOperation = true; + updateProductQuantityInCart(event); + } + + return false; + } + + if (!isUpdateOperation) { + updateProductQuantityInCart(event); + } + + return false; + }); + + const $timeoutEffect = 400; + + $body.on('hidden.bs.collapse', prestashop.themeSelectors.cart.promoCode, () => { + $(prestashop.themeSelectors.cart.displayPromo).show($timeoutEffect); + }); + + $body.on('click', prestashop.themeSelectors.cart.promoCodeButton, (event) => { + event.preventDefault(); + + $(prestashop.themeSelectors.cart.promoCode).collapse('toggle'); + }); + + $body.on('click', prestashop.themeSelectors.cart.displayPromo, (event) => { + $(event.currentTarget).hide($timeoutEffect); + }); + + $body.on('click', prestashop.themeSelectors.cart.discountCode, (event) => { + event.stopPropagation(); + + const $code = $(event.currentTarget); + const $discountInput = $(prestashop.themeSelectors.cart.discountName); + + $discountInput.val($code.text()); + // Show promo code field + $(prestashop.themeSelectors.cart.promoCode).collapse('show'); + $(prestashop.themeSelectors.cart.displayPromo).hide($timeoutEffect); + + return false; + }); +}); diff --git a/_dev/js/checkout.js b/_dev/js/checkout.js new file mode 100644 index 0000000..2803290 --- /dev/null +++ b/_dev/js/checkout.js @@ -0,0 +1,81 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; + +function setUpCheckout() { + $(prestashop.themeSelectors.checkout.termsLink).on('click', (event) => { + event.preventDefault(); + let url = $(event.target).attr('href'); + + if (url) { + // TODO: Handle request if no pretty URL + url += '?content_only=1'; + $.get(url, (content) => { + $(prestashop.themeSelectors.modal) + .find(prestashop.themeSelectors.modalContent) + .html($(content).find('.page-cms').contents()); + }).fail((resp) => { + prestashop.emit('handleError', {eventType: 'clickTerms', resp}); + }); + } + + $(prestashop.themeSelectors.modal).modal('show'); + }); + + $(prestashop.themeSelectors.checkout.giftCheckbox).on('click', () => { + $('#gift').slideToggle(); + }); +} + +function toggleImage() { + // Arrow show/hide details Checkout page + $(prestashop.themeSelectors.checkout.imagesLink).on('click', function () { + const icon = $(this).find('i.material-icons'); + + if (icon.text() === 'expand_more') { + icon.text('expand_less'); + } else { + icon.text('expand_more'); + } + }); +} + +$(document).ready(() => { + if ($('body#checkout').length === 1) { + setUpCheckout(); + toggleImage(); + } + + prestashop.on('updatedDeliveryForm', (params) => { + if (typeof params.deliveryOption === 'undefined' || params.deliveryOption.length === 0) { + return; + } + // Hide all carrier extra content ... + $(prestashop.themeSelectors.checkout.carrierExtraContent).hide(); + // and show the one related to the selected carrier + params.deliveryOption.next(prestashop.themeSelectors.checkout.carrierExtraContent).slideDown(); + }); +}); diff --git a/_dev/js/components/block-cart.js b/_dev/js/components/block-cart.js new file mode 100644 index 0000000..2405374 --- /dev/null +++ b/_dev/js/components/block-cart.js @@ -0,0 +1,50 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import prestashop from 'prestashop'; +import $ from 'jquery'; + +prestashop.blockcart = prestashop.blockcart || {}; + +prestashop.blockcart.showModal = (html) => { + function getBlockCartModal() { + return $('#blockcart-modal'); + } + + let $blockCartModal = getBlockCartModal(); + + if ($blockCartModal.length) { + $blockCartModal.remove(); + } + + $('body').append(html); + + $blockCartModal = getBlockCartModal(); + $blockCartModal.modal('show').on('hidden.bs.modal', (event) => { + prestashop.emit('updateProduct', { + reason: event.currentTarget.dataset, + event, + }); + }); +}; diff --git a/modules/ps_advertising/ps_advertising.tpl b/_dev/js/components/debounce.js similarity index 52% rename from modules/ps_advertising/ps_advertising.tpl rename to _dev/js/components/debounce.js index 8853778..5d07ae8 100644 --- a/modules/ps_advertising/ps_advertising.tpl +++ b/_dev/js/components/debounce.js @@ -1,10 +1,11 @@ -{** - * 2007-2019 PrestaShop and Contributors +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License 3.0 (AFL-3.0) - * that is bundled with this package in the file LICENSE.txt. + * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/AFL-3.0 * If you did not receive a copy of the license and are unable to @@ -15,14 +16,18 @@ * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your - * needs please refer to https://www.prestashop.com for more information. + * needs please refer to https://devdocs.prestashop.com/ for more information. * - * @author PrestaShop SA - * @copyright 2007-2019 PrestaShop SA and Contributors + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) - * International Registered Trademark & Property of PrestaShop SA - *} + */ -
- {$adv_title} -
+export default function debounce(func, timeout = 300) { + let timer; + + return (...args) => { + clearTimeout(timer); + timer = setTimeout(() => { func.apply(this, args); }, timeout); + }; +} diff --git a/_dev/js/components/drop-down.js b/_dev/js/components/drop-down.js new file mode 100644 index 0000000..8bd9de9 --- /dev/null +++ b/_dev/js/components/drop-down.js @@ -0,0 +1,59 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; + +export default class DropDown { + constructor(el) { + this.el = el; + } + + init() { + this.el.on('show.bs.dropdown', (e, el) => { + if (el) { + $(`#${el}`).find('.dropdown-menu').first().stop(true, true) + .slideDown(); + } else { + $(e.target).find('.dropdown-menu').first().stop(true, true) + .slideDown(); + } + }); + + this.el.on('hide.bs.dropdown', (e, el) => { + if (el) { + $(`#${el}`).find('.dropdown-menu').first().stop(true, true) + .slideUp(); + } else { + $(e.target).find('.dropdown-menu').first().stop(true, true) + .slideUp(); + } + }); + + this.el.find('select.link').each((idx, el) => { + $(el).on('change', function () { + window.location = $(this).val(); + }); + }); + } +} diff --git a/_dev/js/components/form.js b/_dev/js/components/form.js new file mode 100644 index 0000000..01383c6 --- /dev/null +++ b/_dev/js/components/form.js @@ -0,0 +1,55 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; + +export default class Form { + init() { + this.parentFocus(); + this.togglePasswordVisibility(); + } + + parentFocus() { + $('.js-child-focus').on('focus', function () { + $(this).closest('.js-parent-focus').addClass('focus'); + }); + $('.js-child-focus').on('focusout', function () { + $(this).closest('.js-parent-focus').removeClass('focus'); + }); + } + + togglePasswordVisibility() { + $('button[data-action="show-password"]').on('click', function () { + const elm = $(this).closest('.input-group').children('input.js-visible-password'); + + if (elm.attr('type') === 'password') { + elm.attr('type', 'text'); + $(this).text($(this).data('textHide')); + } else { + elm.attr('type', 'password'); + $(this).text($(this).data('textShow')); + } + }); + } +} diff --git a/_dev/js/components/product-miniature.js b/_dev/js/components/product-miniature.js new file mode 100644 index 0000000..0a11a57 --- /dev/null +++ b/_dev/js/components/product-miniature.js @@ -0,0 +1,47 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; + +export default class ProductMinitature { + init() { + $('.js-product-miniature').each((index, element) => { + // Limit number of shown colors + if ($(element).find('.color').length > 5) { + let count = 0; + + $(element) + .find('.color') + .each((colorIndex, colorElement) => { + if (colorIndex > 4) { + $(colorElement).hide(); + count += 1; + } + }); + + $(element).find('.js-count').append(`+${count}`); + } + }); + } +} diff --git a/_dev/js/components/product-select.js b/_dev/js/components/product-select.js new file mode 100644 index 0000000..4d7d561 --- /dev/null +++ b/_dev/js/components/product-select.js @@ -0,0 +1,97 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +// eslint-disable-next-line +import 'velocity-animate'; +// import updateSources from 'update-sources'; + +export default class ProductSelect { + init() { + const MAX_THUMBS = 5; + const $arrows = $('.js-modal-arrows'); + const $thumbnails = $('.js-modal-product-images'); + + $('body') + .on('click', '.js-modal-thumb', (event) => { + // Swap active classes on thumbnail + if ($('.js-modal-thumb').hasClass('selected')) { + $('.js-modal-thumb').removeClass('selected'); + } + $(event.currentTarget).addClass('selected'); + + // Get data from thumbnail and update cover src, alt and title + $(prestashop.themeSelectors.product.modalProductCover).attr('src', $(event.target).data('image-large-src')); + $(prestashop.themeSelectors.product.modalProductCover).attr('title', $(event.target).attr('title')); + $(prestashop.themeSelectors.product.modalProductCover).attr('alt', $(event.target).attr('alt')); + + // Get data from thumbnail and update cover sources + // updateSources( + // $(prestashop.themeSelectors.product.modalProductCover), + // $(event.target).data('image-large-sources'), + // ); + }) + .on('click', 'aside#thumbnails', (event) => { + if (event.target.id === 'thumbnails') { + $('#product-modal').modal('hide'); + } + }); + + if ($('.js-modal-product-images li').length <= MAX_THUMBS) { + $arrows.css('opacity', '.2'); + } else { + $arrows.on('click', (event) => { + if ($(event.target).hasClass('arrow-up') && $thumbnails.position().top < 0) { + this.move('up'); + $('.js-modal-arrow-down').css('opacity', '1'); + } else if ( + $(event.target).hasClass('arrow-down') + && $thumbnails.position().top + $thumbnails.height() > $('.js-modal-mask').height() + ) { + this.move('down'); + $('.js-modal-arrow-up').css('opacity', '1'); + } + }); + } + } + + move(direction) { + const THUMB_MARGIN = 10; + const $thumbnails = $('.js-modal-product-images'); + const thumbHeight = $('.js-modal-product-images li img').height() + THUMB_MARGIN; + const currentPosition = $thumbnails.position().top; + $thumbnails.velocity( + { + translateY: direction === 'up' ? currentPosition + thumbHeight : currentPosition - thumbHeight, + }, + () => { + if ($thumbnails.position().top >= 0) { + $('.js-modal-arrow-up').css('opacity', '.2'); + } else if ($thumbnails.position().top + $thumbnails.height() <= $('.js-modal-mask').height()) { + $('.js-modal-arrow-down').css('opacity', '.2'); + } + }, + ); + } +} diff --git a/_dev/js/components/top-menu.js b/_dev/js/components/top-menu.js new file mode 100644 index 0000000..d9aeec4 --- /dev/null +++ b/_dev/js/components/top-menu.js @@ -0,0 +1,80 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; +import DropDown from './drop-down'; + +export default class TopMenu extends DropDown { + init() { + let elmtClass; + const self = this; + this.el.find('li').on('mouseenter mouseleave', (e) => { + if (this.el.parent().hasClass('mobile')) { + return; + } + const currentTargetClass = $(e.currentTarget).attr('class'); + + if (elmtClass !== currentTargetClass) { + const classesSelected = Array.prototype.slice + .call(e.currentTarget.classList) + .map((elem) => (typeof elem === 'string' ? `.${elem}` : false)); + + elmtClass = classesSelected.join(''); + + if (elmtClass && $(e.target).data('depth') === 0) { + $(`${elmtClass} .js-sub-menu`).css({ + top: $(`${elmtClass}`).height() + $(`${elmtClass}`).position().top, + }); + } + } + }); + $('#menu-icon').on('click', () => { + $('#mobile_top_menu_wrapper').toggle(); + self.toggleMobileMenu(); + }); + + this.el.on('click', (e) => { + if (this.el.parent().hasClass('mobile')) { + return; + } + e.stopPropagation(); + }); + + prestashop.on('responsive update', () => { + $('.js-sub-menu').removeAttr('style'); + self.toggleMobileMenu(); + }); + super.init(); + } + + toggleMobileMenu() { + $('#header').toggleClass('is-open'); + if ($('#mobile_top_menu_wrapper').is(':visible')) { + $('#notifications, #wrapper, #footer').hide(); + } else { + $('#notifications, #wrapper, #footer').show(); + } + } +} diff --git a/_dev/js/components/update-sources.js b/_dev/js/components/update-sources.js new file mode 100644 index 0000000..cdb6b98 --- /dev/null +++ b/_dev/js/components/update-sources.js @@ -0,0 +1,43 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; + +export default function updateSources(img, sources) { + if (sources === undefined) { + return; + } + + // Get source siblings of the img tag + const imgSiblingWebp = $(img).siblings('source[type="image/webp"]'); + const imgSiblingAvif = $(img).siblings('source[type="image/avif"]'); + + // Update them if they exist and we have a source for them + if (sources.webp !== undefined && imgSiblingWebp.length) { + imgSiblingWebp.attr('srcset', sources.webp); + } + if (sources.avif !== undefined && imgSiblingAvif.length) { + imgSiblingAvif.attr('srcset', sources.avif); + } +} diff --git a/_dev/js/components/usePasswordPolicy.js b/_dev/js/components/usePasswordPolicy.js new file mode 100644 index 0000000..799db52 --- /dev/null +++ b/_dev/js/components/usePasswordPolicy.js @@ -0,0 +1,198 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ + +import {sprintf} from 'sprintf-js'; + +const {passwordPolicy: PasswordPolicyMap} = prestashop.themeSelectors; + +const PASSWORD_POLICY_ERROR = 'The password policy elements are undefined.'; + +const getPasswordStrengthFeedback = ( + strength, +) => { + switch (strength) { + case 0: + return { + color: 'bg-danger', + }; + + case 1: + return { + color: 'bg-danger', + }; + + case 2: + return { + color: 'bg-warning', + }; + + case 3: + return { + color: 'bg-success', + }; + + case 4: + return { + color: 'bg-success', + }; + + default: + throw new Error('Invalid password strength indicator.'); + } +}; + +const watchPassword = async ( + elementInput, + feedbackContainer, + hints, +) => { + const {prestashop} = window; + const passwordValue = elementInput.value; + const elementIcon = feedbackContainer.querySelector(PasswordPolicyMap.requirementScoreIcon); + const result = await prestashop.checkPasswordScore(passwordValue); + const feedback = getPasswordStrengthFeedback(result.score); + const passwordLength = passwordValue.length; + const popoverContent = []; + + $(elementInput).popover('dispose'); + + feedbackContainer.style.display = passwordValue === '' ? 'none' : 'block'; + + if (result.feedback.warning !== '') { + if (result.feedback.warning in hints) { + popoverContent.push(hints[result.feedback.warning]); + } + } + + result.feedback.suggestions.forEach((suggestion) => { + if (suggestion in hints) { + popoverContent.push(hints[suggestion]); + } + }); + + $(elementInput).popover({ + html: true, + placement: 'top', + content: popoverContent.join('
'), + }).popover('show'); + + const passwordLengthValid = passwordLength >= parseInt(elementInput.dataset.minlength, 10) + && passwordLength <= parseInt(elementInput.dataset.maxlength, 10); + const passwordScoreValid = parseInt(elementInput.dataset.minscore, 10) <= result.score; + + feedbackContainer.querySelector(PasswordPolicyMap.requirementLengthIcon).classList.toggle( + 'text-success', + passwordLengthValid, + ); + + elementIcon.classList.toggle( + 'text-success', + passwordScoreValid, + ); + + // Change input border color depending on the validity + elementInput + .classList.remove('border-success', 'border-danger'); + elementInput + .classList.add(passwordScoreValid && passwordLengthValid ? 'border-success' : 'border-danger'); + elementInput + .classList.add('form-control', 'border'); + + const percentage = (result.score * 20) + 20; + const progressBar = feedbackContainer.querySelector(PasswordPolicyMap.progressBar); + + // increase and decrease progress bar + if (progressBar) { + progressBar.style.width = `${percentage}%`; + progressBar.classList.remove('bg-success', 'bg-danger', 'bg-warning'); + progressBar.classList.add(feedback.color); + } +}; + +// Not testable because it manipulates SVG elements, unsupported by JSDom +const usePasswordPolicy = (selector) => { + const elements = document.querySelectorAll(selector); + elements.forEach((element) => { + const inputColumn = element?.querySelector(PasswordPolicyMap.inputColumn); + const elementInput = element?.querySelector('input'); + const templateElement = document.createElement('div'); + const feedbackTemplate = document.querySelector(PasswordPolicyMap.template); + let feedbackContainer; + + if (feedbackTemplate && element && inputColumn && elementInput) { + templateElement.innerHTML = feedbackTemplate.innerHTML; + inputColumn.append(templateElement); + feedbackContainer = element.querySelector(PasswordPolicyMap.container); + + if (feedbackContainer) { + const hintElement = document.querySelector(PasswordPolicyMap.hint); + + if (hintElement) { + const hints = JSON.parse(hintElement.innerHTML); + + // eslint-disable-next-line max-len + const passwordRequirementsLength = feedbackContainer.querySelector(PasswordPolicyMap.requirementLength); + // eslint-disable-next-line max-len + const passwordRequirementsScore = feedbackContainer.querySelector(PasswordPolicyMap.requirementScore); + const passwordLengthText = passwordRequirementsLength?.querySelector('span'); + const passwordRequirementsText = passwordRequirementsScore?.querySelector('span'); + + if (passwordLengthText && passwordRequirementsLength && passwordRequirementsLength.dataset.translation) { + passwordLengthText.innerText = sprintf( + passwordRequirementsLength.dataset.translation, + elementInput.dataset.minlength, + elementInput.dataset.maxlength, + ); + } + + if (passwordRequirementsText && passwordRequirementsScore && passwordRequirementsScore.dataset.translation) { + passwordRequirementsText.innerText = sprintf( + passwordRequirementsScore.dataset.translation, + hints[elementInput.dataset.minscore], + ); + } + + // eslint-disable-next-line max-len + elementInput.addEventListener('keyup', () => watchPassword(elementInput, feedbackContainer, hints)); + elementInput.addEventListener('blur', () => { + $(elementInput).popover('dispose'); + }); + } + } + } + + if (element) { + return { + element, + }; + } + + return { + error: new Error(PASSWORD_POLICY_ERROR), + }; + }); +}; + +export default usePasswordPolicy; diff --git a/_dev/js/customer.js b/_dev/js/customer.js new file mode 100644 index 0000000..65e38d2 --- /dev/null +++ b/_dev/js/customer.js @@ -0,0 +1,43 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; + +function initRmaItemSelector() { + $(`${prestashop.themeSelectors.order.returnForm} table thead input[type=checkbox]`).on('click', function () { + const checked = $(this).prop('checked'); + $(`${prestashop.themeSelectors.order.returnForm} table tbody input[type=checkbox]`).each((_, checkbox) => { + $(checkbox).prop('checked', checked); + }); + }); +} + +function setupCustomerScripts() { + if ($('body#order-detail')) { + initRmaItemSelector(); + } +} + +$(document).ready(setupCustomerScripts); diff --git a/_dev/js/facets.js b/_dev/js/facets.js new file mode 100644 index 0000000..4913f92 --- /dev/null +++ b/_dev/js/facets.js @@ -0,0 +1 @@ +import $ from "jquery"; diff --git a/_dev/js/lib/bootstrap-filestyle.min.js b/_dev/js/lib/bootstrap-filestyle.min.js new file mode 100644 index 0000000..9d91ff4 --- /dev/null +++ b/_dev/js/lib/bootstrap-filestyle.min.js @@ -0,0 +1,25 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +(function($){var nextId=0;var Filestyle=function(element,options){this.options=options;this.$elementFilestyle=[];this.$element=$(element)};Filestyle.prototype={clear:function(){this.$element.val("");this.$elementFilestyle.find(":text").val("");this.$elementFilestyle.find(".badge").remove()},destroy:function(){this.$element.removeAttr("style").removeData("filestyle");this.$elementFilestyle.remove()},disabled:function(value){if(value===true){if(!this.options.disabled){this.$element.attr("disabled","true");this.$elementFilestyle.find("label").attr("disabled","true");this.options.disabled=true}}else{if(value===false){if(this.options.disabled){this.$element.removeAttr("disabled");this.$elementFilestyle.find("label").removeAttr("disabled");this.options.disabled=false}}else{return this.options.disabled}}},buttonBefore:function(value){if(value===true){if(!this.options.buttonBefore){this.options.buttonBefore=true;if(this.options.input){this.$elementFilestyle.remove();this.constructor();this.pushNameFiles()}}}else{if(value===false){if(this.options.buttonBefore){this.options.buttonBefore=false;if(this.options.input){this.$elementFilestyle.remove();this.constructor();this.pushNameFiles()}}}else{return this.options.buttonBefore}}},icon:function(value){if(value===true){if(!this.options.icon){this.options.icon=true;this.$elementFilestyle.find("label").prepend(this.htmlIcon())}}else{if(value===false){if(this.options.icon){this.options.icon=false;this.$elementFilestyle.find(".icon-span-filestyle").remove()}}else{return this.options.icon}}},input:function(value){if(value===true){if(!this.options.input){this.options.input=true;if(this.options.buttonBefore){this.$elementFilestyle.append(this.htmlInput())}else{this.$elementFilestyle.prepend(this.htmlInput())}this.$elementFilestyle.find(".badge").remove();this.pushNameFiles();this.$elementFilestyle.find(".group-span-filestyle").addClass("input-group-btn")}}else{if(value===false){if(this.options.input){this.options.input=false;this.$elementFilestyle.find(":text").remove();var files=this.pushNameFiles();if(files.length>0&&this.options.badge){this.$elementFilestyle.find("label").append(' '+files.length+"")}this.$elementFilestyle.find(".group-span-filestyle").removeClass("input-group-btn")}}else{return this.options.input}}},size:function(value){if(value!==undefined){var btn=this.$elementFilestyle.find("label"),input=this.$elementFilestyle.find("input");btn.removeClass("btn-lg btn-sm");input.removeClass("input-lg input-sm");if(value!="nr"){btn.addClass("btn-"+value);input.addClass("input-"+value)}}else{return this.options.size}},placeholder:function(value){if(value!==undefined){this.options.placeholder=value;this.$elementFilestyle.find("input").attr("placeholder",value)}else{return this.options.placeholder}},buttonText:function(value){if(value!==undefined){this.options.buttonText=value;this.$elementFilestyle.find("label .buttonText").html(this.options.buttonText)}else{return this.options.buttonText}},buttonName:function(value){if(value!==undefined){this.options.buttonName=value;this.$elementFilestyle.find("label").attr({"class":"btn "+this.options.buttonName})}else{return this.options.buttonName}},iconName:function(value){if(value!==undefined){this.$elementFilestyle.find(".icon-span-filestyle").attr({"class":"icon-span-filestyle "+this.options.iconName})}else{return this.options.iconName}},htmlIcon:function(){if(this.options.icon){return' '}else{return""}},htmlInput:function(){if(this.options.input){return' '}else{return""}},pushNameFiles:function(){var content="",files=[];if(this.$element[0].files===undefined){files[0]={name:this.$element[0]&&this.$element[0].value}}else{files=this.$element[0].files}for(var i=0;i";html=_self.options.buttonBefore?btn+_self.htmlInput():_self.htmlInput()+btn;_self.$elementFilestyle=$('
'+html+"
");_self.$elementFilestyle.find(".group-span-filestyle").attr("tabindex","0").keypress(function(e){if(e.keyCode===13||e.charCode===32){_self.$elementFilestyle.find("label").click();return false}});_self.$element.css({position:"absolute",clip:"rect(0px 0px 0px 0px)"}).attr("tabindex","-1").after(_self.$elementFilestyle);if(_self.options.disabled){_self.$element.attr("disabled","true")}_self.$element.change(function(){var files=_self.pushNameFiles();if(_self.options.input==false&&_self.options.badge){if(_self.$elementFilestyle.find(".badge").length==0){_self.$elementFilestyle.find("label").append(' '+files.length+"")}else{if(files.length==0){_self.$elementFilestyle.find(".badge").remove()}else{_self.$elementFilestyle.find(".badge").html(files.length)}}}else{_self.$elementFilestyle.find(".badge").remove()}});if(window.navigator.userAgent.search(/firefox/i)>-1){_self.$elementFilestyle.find("label").click(function(){_self.$element.click();return false})}}};var old=$.fn.filestyle;$.fn.filestyle=function(option,value){var get="",element=this.each(function(){if($(this).attr("type")==="file"){var $this=$(this),data=$this.data("filestyle"),options=$.extend({},$.fn.filestyle.defaults,option,typeof option==="object"&&option);if(!data){$this.data("filestyle",(data=new Filestyle(this,options)));data.constructor()}if(typeof option==="string"){get=data[option](value)}}});if(typeof get!==undefined){return get}else{return element}};$.fn.filestyle.defaults={buttonText:"Choose file",iconName:"glyphicon glyphicon-folder-open",buttonName:"btn-default",size:"nr",input:true,badge:true,icon:true,buttonBefore:false,disabled:false,placeholder:""};$.fn.filestyle.noConflict=function(){$.fn.filestyle=old;return this};$(function(){$(".filestyle").each(function(){var $this=$(this),options={input:$this.attr("data-input")==="false"?false:true,icon:$this.attr("data-icon")==="false"?false:true,buttonBefore:$this.attr("data-buttonBefore")==="true"?true:false,disabled:$this.attr("data-disabled")==="true"?true:false,size:$this.attr("data-size"),buttonText:$this.attr("data-buttonText"),buttonName:$this.attr("data-buttonName"),iconName:$this.attr("data-iconName"),badge:$this.attr("data-badge")==="false"?false:true,placeholder:$this.attr("data-placeholder")};$this.filestyle(options)})})})(window.jQuery); diff --git a/_dev/js/lib/jquery.scrollbox.min.js b/_dev/js/lib/jquery.scrollbox.min.js new file mode 100644 index 0000000..6c791e7 --- /dev/null +++ b/_dev/js/lib/jquery.scrollbox.min.js @@ -0,0 +1,25 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +(function($){$.fn.scrollbox=function(config){var defConfig={linear:false,startDelay:2,delay:3,step:5,speed:32,switchItems:1,direction:"vertical",distance:"auto",autoPlay:true,onMouseOverPause:true,paused:false,queue:null,listElement:"ul",listItemElement:"li",infiniteLoop:true,switchAmount:0,afterForward:null,afterBackward:null,triggerStackable:false};config=$.extend(defConfig,config);config.scrollOffset=config.direction==="vertical"?"scrollTop":"scrollLeft";if(config.queue){config.queue=$("#"+config.queue)}return this.each(function(){var container=$(this),containerUL,scrollingId=null,nextScrollId=null,paused=false,releaseStack,backward,forward,resetClock,scrollForward,scrollBackward,forwardHover,pauseHover,switchCount=0,stackedTriggerIndex=0;if(config.onMouseOverPause){container.bind("mouseover",function(){paused=true});container.bind("mouseout",function(){paused=false})}containerUL=container.children(config.listElement+":first-child");if(config.infiniteLoop===false&&config.switchAmount===0){config.switchAmount=containerUL.children().length}scrollForward=function(){if(paused){return}var curLi,i,newScrollOffset,scrollDistance,theStep;curLi=containerUL.children(config.listItemElement+":first-child");scrollDistance=config.distance!=="auto"?config.distance:config.direction==="vertical"?curLi.outerHeight(true):curLi.outerWidth(true);if(!config.linear){theStep=Math.max(3,parseInt((scrollDistance-container[0][config.scrollOffset])*.3,10));newScrollOffset=Math.min(container[0][config.scrollOffset]+theStep,scrollDistance)}else{newScrollOffset=Math.min(container[0][config.scrollOffset]+config.step,scrollDistance)}container[0][config.scrollOffset]=newScrollOffset;if(newScrollOffset>=scrollDistance){for(i=0;i0){containerUL.append(config.queue.find(config.listItemElement)[0]);containerUL.children(config.listItemElement+":first-child").remove()}else{containerUL.append(containerUL.children(config.listItemElement+":first-child"))}++switchCount}container[0][config.scrollOffset]=0;clearInterval(scrollingId);scrollingId=null;if($.isFunction(config.afterForward)){config.afterForward.call(container,{switchCount:switchCount,currentFirstChild:containerUL.children(config.listItemElement+":first-child")})}if(config.triggerStackable&&stackedTriggerIndex!==0){releaseStack();return}if(config.infiniteLoop===false&&switchCount>=config.switchAmount){return}if(config.autoPlay){nextScrollId=setTimeout(forward,config.delay*1e3)}}};scrollBackward=function(){if(paused){return}var curLi,i,newScrollOffset,scrollDistance,theStep;if(container[0][config.scrollOffset]===0){for(i=0;i0){stackedTriggerIndex--;nextScrollId=setTimeout(forward,0)}else{stackedTriggerIndex++;nextScrollId=setTimeout(backward,0)}};forward=function(){clearInterval(scrollingId);scrollingId=setInterval(scrollForward,config.speed)};backward=function(){clearInterval(scrollingId);scrollingId=setInterval(scrollBackward,config.speed)};forwardHover=function(){config.autoPlay=true;paused=false;clearInterval(scrollingId);scrollingId=setInterval(scrollForward,config.speed)};pauseHover=function(){paused=true};resetClock=function(delay){config.delay=delay||config.delay;clearTimeout(nextScrollId);if(config.autoPlay){nextScrollId=setTimeout(forward,config.delay*1e3)}};if(config.autoPlay){nextScrollId=setTimeout(forward,config.startDelay*1e3)}container.bind("resetClock",function(delay){resetClock(delay)});container.bind("forward",function(){if(config.triggerStackable){if(scrollingId!==null){stackedTriggerIndex++}else{forward()}}else{clearTimeout(nextScrollId);forward()}});container.bind("backward",function(){if(config.triggerStackable){if(scrollingId!==null){stackedTriggerIndex--}else{backward()}}else{clearTimeout(nextScrollId);backward()}});container.bind("pauseHover",function(){pauseHover()});container.bind("forwardHover",function(){forwardHover()});container.bind("speedUp",function(event,speed){if(speed==="undefined"){speed=Math.max(1,parseInt(config.speed/2,10))}config.speed=speed});container.bind("speedDown",function(event,speed){if(speed==="undefined"){speed=config.speed*2}config.speed=speed});container.bind("updateConfig",function(event,options){config=$.extend(config,options)})})}})(jQuery); diff --git a/_dev/js/listing.js b/_dev/js/listing.js new file mode 100644 index 0000000..e3fe44d --- /dev/null +++ b/_dev/js/listing.js @@ -0,0 +1,262 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; +// eslint-disable-next-line +import "velocity-animate"; +import updateSources from './components/update-sources'; +import ProductMinitature from './components/product-miniature'; + +$(document).ready(() => { + const move = (direction) => { + const THUMB_MARGIN = 20; + const $thumbnails = $('.js-qv-product-images'); + const thumbHeight = $('.js-qv-product-images li img').height() + THUMB_MARGIN; + const currentPosition = $thumbnails.position().top; + $thumbnails.velocity( + { + translateY: + direction === 'up' + ? currentPosition + thumbHeight + : currentPosition - thumbHeight, + }, + () => { + if ($thumbnails.position().top >= 0) { + $('.arrow-up').css('opacity', '.2'); + } else if ( + $thumbnails.position().top + $thumbnails.height() + <= $('.js-qv-mask').height() + ) { + $('.arrow-down').css('opacity', '.2'); + } + }, + ); + }; + + const productConfig = (qv) => { + const MAX_THUMBS = 4; + const $arrows = $(prestashop.themeSelectors.product.arrows); + const $thumbnails = qv.find('.js-qv-product-images'); + $(prestashop.themeSelectors.product.thumb).on('click', (event) => { + // Swap active classes on thumbnail + if ($(prestashop.themeSelectors.product.thumb).hasClass('selected')) { + $(prestashop.themeSelectors.product.thumb).removeClass('selected'); + } + $(event.currentTarget).addClass('selected'); + + // Get data from thumbnail and update cover src, alt and title + $(prestashop.themeSelectors.product.cover).attr('src', $(event.target).data('image-large-src')); + $(prestashop.themeSelectors.product.cover).attr('alt', $(event.target).attr('alt')); + $(prestashop.themeSelectors.product.cover).attr('title', $(event.target).attr('title')); + + // Get data from thumbnail and update cover sources + updateSources( + $(prestashop.themeSelectors.product.cover), + $(event.target).data('image-large-sources'), + ); + }); + if ($thumbnails.find('li').length <= MAX_THUMBS) { + $arrows.hide(); + } else { + $arrows.on('click', (event) => { + if ( + $(event.target).hasClass('arrow-up') + && $('.js-qv-product-images').position().top < 0 + ) { + move('up'); + $(prestashop.themeSelectors.arrowDown).css('opacity', '1'); + } else if ( + $(event.target).hasClass('arrow-down') + && $thumbnails.position().top + $thumbnails.height() + > $('.js-qv-mask').height() + ) { + move('down'); + $(prestashop.themeSelectors.arrowUp).css('opacity', '1'); + } + }); + } + qv.find(prestashop.selectors.quantityWanted).TouchSpin({ + verticalbuttons: true, + verticalupclass: 'material-icons touchspin-up', + verticaldownclass: 'material-icons touchspin-down', + buttondown_class: 'btn btn-touchspin js-touchspin', + buttonup_class: 'btn btn-touchspin js-touchspin', + min: 1, + max: 1000000, + }); + + $(prestashop.themeSelectors.touchspin).off('touchstart.touchspin'); + }; + + prestashop.on('clickQuickView', (elm) => { + const data = { + action: 'quickview', + id_product: elm.dataset.idProduct, + id_product_attribute: elm.dataset.idProductAttribute, + }; + $.post(prestashop.urls.pages.product, data, null, 'json') + .then((resp) => { + $('body').append(resp.quickview_html); + const productModal = $( + `#quickview-modal-${resp.product.id}-${resp.product.id_product_attribute}`, + ); + productModal.modal('show'); + productConfig(productModal); + productModal.on('hidden.bs.modal', () => { + productModal.remove(); + }); + }) + .fail((resp) => { + prestashop.emit('handleError', { + eventType: 'clickQuickView', + resp, + }); + }); + }); + + $('body').on( + 'click', + prestashop.themeSelectors.listing.searchFilterToggler, + () => { + $(prestashop.themeSelectors.listing.searchFiltersWrapper).removeClass( + 'hidden-sm-down', + ); + $(prestashop.themeSelectors.contentWrapper).addClass('hidden-sm-down'); + $(prestashop.themeSelectors.footer).addClass('hidden-sm-down'); + }, + ); + $( + `${prestashop.themeSelectors.listing.searchFilterControls} ${prestashop.themeSelectors.clear}`, + ).on('click', () => { + $(prestashop.themeSelectors.listing.searchFiltersWrapper).addClass( + 'hidden-sm-down', + ); + $(prestashop.themeSelectors.contentWrapper).removeClass('hidden-sm-down'); + $(prestashop.themeSelectors.footer).removeClass('hidden-sm-down'); + }); + $(`${prestashop.themeSelectors.listing.searchFilterControls} .ok`).on( + 'click', + () => { + $(prestashop.themeSelectors.listing.searchFiltersWrapper).addClass( + 'hidden-sm-down', + ); + $(prestashop.themeSelectors.contentWrapper).removeClass('hidden-sm-down'); + $(prestashop.themeSelectors.footer).removeClass('hidden-sm-down'); + }, + ); + + const parseSearchUrl = function (event) { + if (event.target.dataset.searchUrl !== undefined) { + return event.target.dataset.searchUrl; + } + + if ($(event.target).parent()[0].dataset.searchUrl === undefined) { + throw new Error('Can not parse search URL'); + } + + return $(event.target).parent()[0].dataset.searchUrl; + }; + + function updateProductListDOM(data) { + $(prestashop.themeSelectors.listing.searchFilters).replaceWith( + data.rendered_facets, + ); + $(prestashop.themeSelectors.listing.activeSearchFilters).replaceWith( + data.rendered_active_filters, + ); + $(prestashop.themeSelectors.listing.listTop).replaceWith( + data.rendered_products_top, + ); + + const renderedProducts = $(data.rendered_products); + const productSelectors = $(prestashop.themeSelectors.listing.product); + + if (productSelectors.length > 0) { + productSelectors.removeClass().addClass(productSelectors.first().attr('class')); + } else { + productSelectors.removeClass().addClass(renderedProducts.first().attr('class')); + } + + $(prestashop.themeSelectors.listing.list).replaceWith(renderedProducts); + + $(prestashop.themeSelectors.listing.listBottom).replaceWith( + data.rendered_products_bottom, + ); + if (data.rendered_products_header) { + $(prestashop.themeSelectors.listing.listHeader).replaceWith( + data.rendered_products_header, + ); + } + + const productMinitature = new ProductMinitature(); + productMinitature.init(); + } + + $('body').on( + 'change', + `${prestashop.themeSelectors.listing.searchFilters} input[data-search-url]`, + (event) => { + prestashop.emit('updateFacets', parseSearchUrl(event)); + }, + ); + + $('body').on( + 'click', + prestashop.themeSelectors.listing.searchFiltersClearAll, + (event) => { + prestashop.emit('updateFacets', parseSearchUrl(event)); + }, + ); + + $('body').on('click', prestashop.themeSelectors.listing.searchLink, (event) => { + event.preventDefault(); + prestashop.emit( + 'updateFacets', + $(event.target) + .closest('a') + .get(0).href, + ); + }); + + window.addEventListener('popstate', (e) => { + if (e.state && e.state.current_url) { + window.location.href = e.state.current_url; + } + }); + + $('body').on( + 'change', + `${prestashop.themeSelectors.listing.searchFilters} select`, + (event) => { + const form = $(event.target).closest('form'); + prestashop.emit('updateFacets', `?${form.serialize()}`); + }, + ); + + prestashop.on('updateProductList', (data) => { + updateProductListDOM(data); + window.scrollTo(0, 0); + }); +}); diff --git a/_dev/js/product.js b/_dev/js/product.js new file mode 100644 index 0000000..67decd8 --- /dev/null +++ b/_dev/js/product.js @@ -0,0 +1,191 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; +import ProductSelect from './components/product-select'; +import updateSources from './components/update-sources'; + +$(document).ready(() => { + function coverImage() { + const productCover = $(prestashop.themeSelectors.product.cover); + const modalProductCover = $(prestashop.themeSelectors.product.modalProductCover); + let thumbSelected = $(prestashop.themeSelectors.product.selected); + + const swipe = (selectedThumb, thumbParent) => { + const newSelectedThumb = thumbParent.find(prestashop.themeSelectors.product.thumb); + + // Swap active classes on thumbnail + selectedThumb.removeClass('selected'); + newSelectedThumb.addClass('selected'); + + // Update sources of both cover and modal cover + modalProductCover.prop('src', newSelectedThumb.data('image-large-src')); + productCover.prop('src', newSelectedThumb.data('image-medium-src')); + + // Get data from thumbnail and update cover src, alt and title + productCover.attr('title', newSelectedThumb.attr('title')); + modalProductCover.attr('title', newSelectedThumb.attr('title')); + productCover.attr('alt', newSelectedThumb.attr('alt')); + modalProductCover.attr('alt', newSelectedThumb.attr('alt')); + + // Get data from thumbnail and update cover sources + updateSources(productCover, newSelectedThumb.data('image-medium-sources')); + updateSources(modalProductCover, newSelectedThumb.data('image-large-sources')); + }; + + $(prestashop.themeSelectors.product.thumb).on('click', (event) => { + thumbSelected = $(prestashop.themeSelectors.product.selected); + swipe(thumbSelected, $(event.target).closest(prestashop.themeSelectors.product.thumbContainer)); + }); + + productCover.swipe({ + swipe: (event, direction) => { + thumbSelected = $(prestashop.themeSelectors.product.selected); + const parentThumb = thumbSelected.closest(prestashop.themeSelectors.product.thumbContainer); + + if (direction === 'right') { + if (parentThumb.prev().length > 0) { + swipe(thumbSelected, parentThumb.prev()); + } else if (parentThumb.next().length > 0) { + swipe(thumbSelected, parentThumb.next()); + } + } else if (direction === 'left') { + if (parentThumb.next().length > 0) { + swipe(thumbSelected, parentThumb.next()); + } else if (parentThumb.prev().length > 0) { + swipe(thumbSelected, parentThumb.prev()); + } + } + }, + allowPageScroll: 'vertical', + }); + } + + function imageScrollBox() { + if ($('#main .js-qv-product-images li').length > 2) { + $('#main .js-qv-mask').addClass('scroll'); + $('.scroll-box-arrows').addClass('scroll'); + $('#main .js-qv-mask').scrollbox({ + direction: 'h', + distance: 113, + autoPlay: false, + }); + $('.scroll-box-arrows .left').click(() => { + $('#main .js-qv-mask').trigger('backward'); + }); + $('.scroll-box-arrows .right').click(() => { + $('#main .js-qv-mask').trigger('forward'); + }); + } else { + $('#main .js-qv-mask').removeClass('scroll'); + $('.scroll-box-arrows').removeClass('scroll'); + } + } + + function createInputFile() { + $(prestashop.themeSelectors.fileInput).on('change', (event) => { + const target = $(event.currentTarget)[0]; + const file = (target) ? target.files[0] : null; + + if (target && file) { + $(target).prev().text(file.name); + } + }); + } + + function createProductSpin() { + const $quantityInput = $(prestashop.selectors.quantityWanted); + + $quantityInput.TouchSpin({ + verticalbuttons: true, + verticalupclass: 'material-icons touchspin-up', + verticaldownclass: 'material-icons touchspin-down', + buttondown_class: 'btn btn-touchspin js-touchspin', + buttonup_class: 'btn btn-touchspin js-touchspin', + min: parseInt($quantityInput.attr('min'), 10), + max: 1000000, + }); + + $(prestashop.themeSelectors.touchspin).off('touchstart.touchspin'); + + $quantityInput.on('focusout', () => { + if ($quantityInput.val() === '' || $quantityInput.val() < $quantityInput.attr('min')) { + $quantityInput.val($quantityInput.attr('min')); + $quantityInput.trigger('change'); + } + }); + + $('body').on('change keyup', prestashop.selectors.quantityWanted, (e) => { + if ($quantityInput.val() !== '') { + $(e.currentTarget).trigger('touchspin.stopspin'); + prestashop.emit('updateProduct', { + eventType: 'updatedProductQuantity', + event: e, + }); + } + }); + } + + function addJsProductTabActiveSelector() { + const nav = $(prestashop.themeSelectors.product.tabs); + nav.on('show.bs.tab', (e) => { + const target = $(e.target); + target.addClass(prestashop.themeSelectors.product.activeNavClass); + $(target.attr('href')).addClass(prestashop.themeSelectors.product.activeTabClass); + }); + nav.on('hide.bs.tab', (e) => { + const target = $(e.target); + target.removeClass(prestashop.themeSelectors.product.activeNavClass); + $(target.attr('href')).removeClass(prestashop.themeSelectors.product.activeTabClass); + }); + } + + createProductSpin(); + createInputFile(); + coverImage(); + imageScrollBox(); + addJsProductTabActiveSelector(); + + prestashop.on('updatedProduct', (event) => { + createInputFile(); + coverImage(); + if (event && event.product_minimal_quantity) { + const minimalProductQuantity = parseInt(event.product_minimal_quantity, 10); + const quantityInputSelector = prestashop.selectors.quantityWanted; + const quantityInput = $(quantityInputSelector); + + // @see http://www.virtuosoft.eu/code/bootstrap-touchspin/ about Bootstrap TouchSpin + quantityInput.trigger('touchspin.updatesettings', { + min: minimalProductQuantity, + }); + } + imageScrollBox(); + $($(prestashop.themeSelectors.product.activeTabs).attr('href')).addClass('active').removeClass('fade'); + $(prestashop.themeSelectors.product.imagesModal).replaceWith(event.product_images_modal); + + const productSelect = new ProductSelect(); + productSelect.init(); + }); +}); diff --git a/_dev/js/responsive.js b/_dev/js/responsive.js new file mode 100644 index 0000000..f925d09 --- /dev/null +++ b/_dev/js/responsive.js @@ -0,0 +1,80 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import $ from 'jquery'; +import prestashop from 'prestashop'; + +prestashop.responsive = prestashop.responsive || {}; + +prestashop.responsive.current_width = window.innerWidth; +prestashop.responsive.min_width = 768; +prestashop.responsive.mobile = prestashop.responsive.current_width < prestashop.responsive.min_width; + +function swapChildren(obj1, obj2) { + const temp = obj2.children().detach(); + obj2.empty().append(obj1.children().detach()); + obj1.append(temp); +} + +function toggleMobileStyles() { + if (prestashop.responsive.mobile) { + $("*[id^='_desktop_']").each((idx, el) => { + const target = $(`#${el.id.replace('_desktop_', '_mobile_')}`); + + if (target.length) { + swapChildren($(el), target); + } + }); + } else { + $("*[id^='_mobile_']").each((idx, el) => { + const target = $(`#${el.id.replace('_mobile_', '_desktop_')}`); + + if (target.length) { + swapChildren($(el), target); + } + }); + } + prestashop.emit('responsive update', { + mobile: prestashop.responsive.mobile, + }); +} + +$(window).on('resize', () => { + const cw = prestashop.responsive.current_width; + const mw = prestashop.responsive.min_width; + const w = window.innerWidth; + const toggle = (cw >= mw && w < mw) || (cw < mw && w >= mw); + + prestashop.responsive.current_width = w; + prestashop.responsive.mobile = prestashop.responsive.current_width < prestashop.responsive.min_width; + if (toggle) { + toggleMobileStyles(); + } +}); + +$(document).ready(() => { + if (prestashop.responsive.mobile) { + toggleMobileStyles(); + } +}); diff --git a/_dev/js/selectors.js b/_dev/js/selectors.js new file mode 100644 index 0000000..d0a7e8c --- /dev/null +++ b/_dev/js/selectors.js @@ -0,0 +1,109 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +import prestashop from 'prestashop'; +import $ from 'jquery'; + +const passwordPolicy = { + template: '#password-feedback', + hint: '.js-hint-password', + container: '.password-strength-feedback', + strengthText: '.password-strength-text', + requirementScore: '.password-requirements-score', + requirementLength: '.password-requirements-length', + requirementScoreIcon: '.password-requirements-score i', + requirementLengthIcon: '.password-requirements-length i', + progressBar: '.progress-bar', + inputColumn: '.js-input-column', +}; + +prestashop.themeSelectors = { + product: { + tabs: '.tabs .nav-link', + activeNavClass: 'js-product-nav-active', + activeTabClass: 'js-product-tab-active', + activeTabs: '.tabs .nav-link.active, .js-product-nav-active', + imagesModal: '.js-product-images-modal', + thumb: '.js-thumb', + thumbContainer: '.thumb-container, .js-thumb-container', + arrows: '.js-arrows', + selected: '.selected, .js-thumb-selected', + modalProductCover: '.js-modal-product-cover', + cover: '.js-qv-product-cover', + customizationModal: '.js-customization-modal', + }, + listing: { + searchFilterToggler: '#search_filter_toggler, .js-search-toggler', + searchFiltersWrapper: '#search_filters_wrapper', + searchFilterControls: '#search_filter_controls', + searchFilters: '#search_filters', + activeSearchFilters: '#js-active-search-filters', + listTop: '#js-product-list-top', + product: '.js-product', + list: '#js-product-list', + listBottom: '#js-product-list-bottom', + listHeader: '#js-product-list-header', + searchFiltersClearAll: '.js-search-filters-clear-all', + searchLink: '.js-search-link', + }, + order: { + returnForm: '#order-return-form, .js-order-return-form', + }, + arrowDown: '.arrow-down, .js-arrow-down', + arrowUp: '.arrow-up, .js-arrow-up', + clear: '.clear', + fileInput: '.js-file-input', + contentWrapper: '#content-wrapper, .js-content-wrapper', + footer: '#footer, .js-footer', + modalContent: '.js-modal-content', + modal: '#modal, .js-checkout-modal', + touchspin: '.js-touchspin', + checkout: { + termsLink: '.js-terms a', + giftCheckbox: '.js-gift-checkbox', + imagesLink: '.card-block .cart-summary-products p a, .js-show-details', + carrierExtraContent: '.carrier-extra-content, .js-carrier-extra-content', + btn: '.checkout a', + }, + cart: { + productLineQty: '.js-cart-line-product-quantity', + quickview: '.quickview', + touchspin: '.bootstrap-touchspin', + promoCode: '#promo-code', + displayPromo: '.display-promo', + promoCodeButton: '.promo-code-button', + discountCode: '.js-discount .code', + discountName: '[name=discount_name]', + actions: '[data-link-action="delete-from-cart"], [data-link-action="remove-voucher"]', + }, + notifications: { + dangerAlert: '#notifications article.alert-danger', + container: '#notifications .notifications-container', + }, + passwordPolicy, +}; + +$(document).ready(() => { + prestashop.emit('themeSelectorsInit'); +}); diff --git a/_dev/js/theme.js b/_dev/js/theme.js new file mode 100644 index 0000000..e64d3c8 --- /dev/null +++ b/_dev/js/theme.js @@ -0,0 +1,151 @@ +/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */ +/* eslint-disable */ +import "jquery-offcanvas/dist/jquery.offcanvas.min.css"; +import touchspin from "bootstrap-touchspin"; +import "jquery-touchswipe"; +import "./selectors"; + +import "./responsive"; +import "./checkout"; +import "./customer"; +import "./listing"; +import "./product"; +import "./cart"; +import "./facets"; + +import prestashop from "prestashop"; +import EventEmitter from "events"; +import DropDown from "./components/drop-down"; +import Form from "./components/form"; +import usePasswordPolicy from "./components/usePasswordPolicy"; +import ProductMinitature from "./components/product-miniature"; +import ProductSelect from "./components/product-select"; +import TopMenu from "./components/top-menu"; + +import "./components/block-cart"; +import $ from "jquery"; +import jo from "jquery-offcanvas"; +jo(window, $); +touchspin(window, $); +/* eslint-enable */ + +// "inherit" EventEmitter +// eslint-disable-next-line +for (const i in EventEmitter.prototype) { + prestashop[i] = EventEmitter.prototype[i]; +} + +$(function () { + const dropDownEl = $(".js-dropdown"); + const form = new Form(); + const topMenuEl = $('.js-top-menu ul[data-depth="0"]'); + const dropDown = new DropDown(dropDownEl); + const topMenu = new TopMenu(topMenuEl); + const productMinitature = new ProductMinitature(); + const productSelect = new ProductSelect(); + dropDown.init(); + form.init(); + topMenu.init(); + productMinitature.init(); + productSelect.init(); + usePasswordPolicy(".field-password-policy"); + + $('.carousel[data-touch="true"]').swipe({ + swipe(event, direction) { + if (direction === "left") { + $(this).carousel("next"); + } + if (direction === "right") { + $(this).carousel("prev"); + } + }, + allowPageScroll: "vertical", + }); + + // $("#products_top_sidebar").offcanvas({ + // effect: "slide-in-over", + // overlay: true, + // classes: { + // element: "absolute top-0 z-50", + // }, + // }); + // + // $("#show_filters").on("click", function () { + // $("#products_top_sidebar").offcanvas("toggle"); + // }); + + function ThAccordion() {} + + $.extend(ThAccordion.prototype, { + init() {}, + }); + + $.fn["thaccordion"] = function () { + var selectors = { + root: ".th-accordion", + item: ".th-accordion-item", + trigger: ".th-accordion-item-trigger", + content: ".th-accordion-item-content", + }; + let selection = null; + let items = this.find(selectors.item); + + function collapseAll() { + items.each(function () { + $(this).find(selectors.content).hide(500); + }); + } + + function open() { + collapseAll(); + $(selection).find(selectors.content).show(500); + } + + function isOpen(item) { + return $(item).find(selectors.content).is(":visible"); + } + + collapseAll(); + + items.each(function () { + var self = this; + $(this) + .find(selectors.trigger) + .on("click", function () { + if (selection === self) { + selection = null; + } else { + selection = self; + if (!isOpen(selection)) { + open(); + } + } + }); + }); + }; + + $(".th-accordion").thaccordion(); +}); diff --git a/_dev/package.json b/_dev/package.json index 7012fa7..59efccd 100644 --- a/_dev/package.json +++ b/_dev/package.json @@ -5,11 +5,24 @@ "license": "MIT", "devDependencies": { "livereload": "^0.9.3", - "tailwindcss": "^3.3.5" + "tailwindcss": "^3.3.5", + "vite": "^4.5.0" }, "scripts": { "dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch", "dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"", - "dev": "yarn run dev:livereload & yarn run dev:tailwind" + "dev:js": "vite build --watch", + "dev": "yarn run dev:livereload & yarn run dev:tailwind & yarn run dev:js" + }, + "dependencies": { + "@tailwindcss/forms": "^0.5.6", + "bootstrap-touchspin": "^4.7.3", + "events": "^3.3.0", + "jquery": "3.5.1", + "jquery-offcanvas": "^3.4.7", + "jquery-touchswipe": "^1.6.19", + "postcss-import": "^15.1.0", + "sprintf-js": "^1.1.3", + "velocity-animate": "^1.5.2" } } diff --git a/_dev/postcss.config.js b/_dev/postcss.config.js new file mode 100644 index 0000000..8f7c3f5 --- /dev/null +++ b/_dev/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + "postcss-import": {}, + tailwindcss: {}, + }, +}; diff --git a/_dev/tailwind.config.js b/_dev/tailwind.config.js index c2ef0e9..455fa67 100644 --- a/_dev/tailwind.config.js +++ b/_dev/tailwind.config.js @@ -1,12 +1,11 @@ /** @type {import('tailwindcss').Config} */ module.exports = { - content: ["../templates/**/*.tpl", "../modules/**/*.tpl"], - theme: { - fontFamily: { - sans: ["Cairo"], - serif: ["Cairo"] - } + content: ["../templates/**/*.tpl", "../modules/**/*.tpl"], + theme: { + fontFamily: { + sans: ["Cairo"], + serif: ["Cairo"], }, - plugins: [], -} - + }, + plugins: [require("@tailwindcss/forms")], +}; diff --git a/_dev/vite.config.js b/_dev/vite.config.js new file mode 100644 index 0000000..a7ae609 --- /dev/null +++ b/_dev/vite.config.js @@ -0,0 +1,28 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + sourcemap: "inline", + minify: false, + lib: { + entry: "./js/theme.js", + name: "theme", + formats: ["iife"], + fileName: function () { + return "theme.js"; + }, + }, + outDir: "../assets/js/", + rollupOptions: { + external: ["$", "jquery", "prestashop"], + output: { + globals: { + $: "$", + jquery: "jQuery", + prestashop: "prestashop", + }, + }, + }, + write: true, + }, +}); diff --git a/_dev/yarn-error.log b/_dev/yarn-error.log new file mode 100644 index 0000000..fc5e38b --- /dev/null +++ b/_dev/yarn-error.log @@ -0,0 +1,822 @@ +Arguments: + /Users/dineshsalunke/.local/share/nvm/v16.20.0/bin/node /Users/dineshsalunke/.local/share/nvm/v16.20.0/bin/yarn add update-sources + +PATH: + /Users/dineshsalunke/.bun/bin:/Users/dineshsalunke/.local/bin:/Users/dineshsalunke/.local/share/nvm/v16.20.0/bin:/Users/dineshsalunke/.cargo/bin:/opt/homebrew/bin:/bin:/Users/dineshsalunke/go/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/go/bin + +Yarn version: + 1.22.19 + +Node version: + 16.20.0 + +Platform: + darwin arm64 + +Trace: + Error: https://registry.yarnpkg.com/update-sources: Not found + at Request.params.callback [as _callback] (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:66145:18) + at Request.self.callback (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:140890:22) + at Request.emit (node:events:513:28) + at Request. (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:141862:10) + at Request.emit (node:events:513:28) + at IncomingMessage. (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:141784:12) + at Object.onceWrapper (node:events:627:28) + at IncomingMessage.emit (node:events:525:35) + at endReadableNT (node:internal/streams/readable:1358:12) + at processTicksAndRejections (node:internal/process/task_queues:83:21) + +npm manifest: + { + "name": "elegance", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "devDependencies": { + "livereload": "^0.9.3", + "tailwindcss": "^3.3.5", + "vite": "^4.5.0" + }, + "scripts": { + "dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch", + "dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"", + "dev:js": "vite dev", + "dev": "yarn run dev:livereload & yarn run dev:tailwind & yarn run dev:js" + }, + "dependencies": { + "bootstrap-touchspin": "^4.7.3", + "events": "^3.3.0", + "jquery": "^3.7.1", + "jquery-touchswipe": "^1.6.19", + "sprintf-js": "^1.1.3", + "velocity-animate": "^1.5.2" + } + } + +yarn manifest: + No manifest + +Lockfile: + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + # yarn lockfile v1 + + + "@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + + "@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + + "@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + + "@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + + "@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + + "@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + + "@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + + "@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + + "@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + + "@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + + "@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + + "@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + + "@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + + "@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + + "@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + + "@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + + "@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + + "@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + + "@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + + "@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + + "@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + + "@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + + "@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + + "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + + "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + + "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + + "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + + "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + + "@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + + "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + + "@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + + any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + + anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + + arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + + balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + + binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + + bootstrap-touchspin@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/bootstrap-touchspin/-/bootstrap-touchspin-4.7.3.tgz#0316a3e7a390eb8811996cc14ab13ff0efb647de" + integrity sha512-VVyPKI05ybS4ciB0OJ8g4Jx4SU3rlrWa/ItSxIi7BWNVa0jUYt3eujeOiBWpkuEGukECwiAbwuzh3a+xLtxueQ== + + brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + + braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + + camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + + chokidar@^3.5.0, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + + commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + + concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + + cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + + didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + + dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + + esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + + events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + + fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + + fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + + fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + + fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + + fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + + function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + + glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + + glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + + glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + + hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + + inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + + inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + + is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + + is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + + is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + + is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + + is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + + jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + + jquery-touchswipe@^1.6.19: + version "1.6.19" + resolved "https://registry.yarnpkg.com/jquery-touchswipe/-/jquery-touchswipe-1.6.19.tgz#dfd5ddaec0b78212dd500d29707129b9c7fd6cd4" + integrity sha512-b0BGje9reNRU3u6ksAK9QqnX7yBRgLNe/wYG7DOfyDlhBlYjayIT8bSOHmcuvptIDW/ubM9CTW/mnZf9Rohuow== + + jquery@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + + lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + + lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + + livereload-js@^3.3.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.4.1.tgz#ba90fbc708ed1b9a024bb89c4ee12c96ea03d66f" + integrity sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g== + + livereload@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/livereload/-/livereload-0.9.3.tgz#a714816375ed52471408bede8b49b2ee6a0c55b1" + integrity sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw== + dependencies: + chokidar "^3.5.0" + livereload-js "^3.3.1" + opts ">= 1.2.0" + ws "^7.4.3" + + merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + + micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + + minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + + mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + + nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + + normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + + object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + + object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + + once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + + "opts@>= 1.2.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1" + integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== + + path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + + path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + + picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + + pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + + pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + + postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + + postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + + postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + + postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + + postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + + postcss-value-parser@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + + postcss@^8.4.23, postcss@^8.4.27: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + + queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + + read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + + readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + + resolve@^1.1.7, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + + reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + + rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + + run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + + source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + + sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + + sucrase@^3.32.0: + version "3.34.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + + supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + + tailwindcss@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" + integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.19.1" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + + thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + + "thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + + to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + + ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + + util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + + velocity-animate@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105" + integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg== + + vite@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + + wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + + ws@^7.4.3: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + + yaml@^2.1.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== diff --git a/_dev/yarn.lock b/_dev/yarn.lock index 0dc65d7..f461601 100644 --- a/_dev/yarn.lock +++ b/_dev/yarn.lock @@ -7,6 +7,116 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -60,6 +170,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@tailwindcss/forms@^0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.6.tgz#29c6c2b032b363e0c5110efed1499867f6d7e868" + integrity sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA== + dependencies: + mini-svg-data-uri "^1.2.3" + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -88,6 +205,11 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bootstrap-touchspin@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/bootstrap-touchspin/-/bootstrap-touchspin-4.7.3.tgz#0316a3e7a390eb8811996cc14ab13ff0efb647de" + integrity sha512-VVyPKI05ybS4ciB0OJ8g4Jx4SU3rlrWa/ItSxIi7BWNVa0jUYt3eujeOiBWpkuEGukECwiAbwuzh3a+xLtxueQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -148,6 +270,39 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + fast-glob@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -270,6 +425,21 @@ jiti@^1.19.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jquery-offcanvas@^3.4.7: + version "3.4.7" + resolved "https://registry.yarnpkg.com/jquery-offcanvas/-/jquery-offcanvas-3.4.7.tgz#dde1f492f5904ff76bdd98ba42f1e514fa52ed70" + integrity sha512-5E3ITQNKgyzJfXqa80Nm9QBCVng4IpbrlGqAuCMSll7yPjoqJgTBl4akZE5rZXJrIpPrp1wPIjPF8tAyuhTD6g== + +jquery-touchswipe@^1.6.19: + version "1.6.19" + resolved "https://registry.yarnpkg.com/jquery-touchswipe/-/jquery-touchswipe-1.6.19.tgz#dfd5ddaec0b78212dd500d29707129b9c7fd6cd4" + integrity sha512-b0BGje9reNRU3u6ksAK9QqnX7yBRgLNe/wYG7DOfyDlhBlYjayIT8bSOHmcuvptIDW/ubM9CTW/mnZf9Rohuow== + +jquery@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + lilconfig@^2.0.5, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -308,6 +478,11 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +mini-svg-data-uri@^1.2.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== + minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -430,7 +605,7 @@ postcss-value-parser@^4.0.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.23: +postcss@^8.4.23, postcss@^8.4.27: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -472,6 +647,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -484,6 +666,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sucrase@^3.32.0: version "3.34.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" @@ -561,6 +748,22 @@ util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +velocity-animate@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105" + integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg== + +vite@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" diff --git a/assets/css/theme.css b/assets/css/theme.css index f949145..5c53134 100644 --- a/assets/css/theme.css +++ b/assets/css/theme.css @@ -584,6 +584,10 @@ video { visibility: collapse; } +.fixed { + position: fixed; +} + .absolute { position: absolute; } @@ -604,6 +608,10 @@ video { left: 0px; } +.left-\[-300px\] { + left: -300px; +} + .left-\[100\%\] { left: 100%; } @@ -632,10 +640,18 @@ video { top: 50%; } +.top-4 { + top: 1rem; +} + .top-full { top: 100%; } +.z-10 { + z-index: 10; +} + .z-30 { z-index: 30; } @@ -655,11 +671,6 @@ video { margin-right: auto; } -.my-12 { - margin-top: 3rem; - margin-bottom: 3rem; -} - .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; @@ -695,6 +706,10 @@ video { margin-top: 0.25rem; } +.mt-12 { + margin-top: 3rem; +} + .mt-16 { margin-top: 4rem; } @@ -755,8 +770,12 @@ video { height: 6rem; } -.h-48 { - height: 12rem; +.h-5 { + height: 1.25rem; +} + +.h-5 { + height: 1.25rem; } .h-6 { @@ -775,8 +794,8 @@ video { height: 100%; } -.w-1\/3 { - width: 33.333333%; +.h-screen { + height: 100vh; } .w-1\/4 { @@ -795,10 +814,18 @@ video { width: 6rem; } +.w-40 { + width: 10rem; +} + .w-48 { width: 12rem; } +.w-5 { + width: 1.25rem; +} + .w-6 { width: 1.5rem; } @@ -878,6 +905,10 @@ video { align-items: center; } +.items-baseline { + align-items: baseline; +} + .justify-end { justify-content: flex-end; } @@ -914,6 +945,10 @@ video { gap: 2rem; } +.overflow-y-auto { + overflow-y: auto; +} + .truncate { overflow: hidden; text-overflow: ellipsis; @@ -968,10 +1003,18 @@ video { object-fit: cover; } +.p-2 { + padding: 0.5rem; +} + .p-3 { padding: 0.75rem; } +.p-4 { + padding: 1rem; +} + .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1068,6 +1111,11 @@ video { line-height: 1.75rem; } +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + .font-bold { font-weight: 700; } @@ -1147,12 +1195,28 @@ video { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } +.duration-1000 { + transition-duration: 1000ms; +} + body { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity)); --tw-text-opacity: 1; color: rgb(75 85 99 / var(--tw-text-opacity)); - font-weight: 400; + font-weight: 300; +} + +a { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity)); +} + +a:hover { + --tw-text-opacity: 1; + color: rgb(29 78 216 / var(--tw-text-opacity)); + text-decoration-line: underline; + text-underline-offset: 2px; } .icon-tabler { @@ -1196,19 +1260,28 @@ a:hover .icon-tabler { box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); } +.disabled\:bg-gray-700:disabled { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity)); +} + .group:hover .group-hover\:flex { display: flex; } -.group:hover .group-hover\:text-gray-950 { +.group:hover .group-hover\:text-blue-900 { --tw-text-opacity: 1; - color: rgb(3 7 18 / var(--tw-text-opacity)); + color: rgb(30 58 138 / var(--tw-text-opacity)); } @media (min-width: 640px) { .sm\:flex { display: flex; } + + .sm\:flex-row { + flex-direction: row; + } } @media (min-width: 768px) { @@ -1224,10 +1297,18 @@ a:hover .icon-tabler { width: 50%; } + .md\:w-1\/3 { + width: 33.333333%; + } + .md\:w-24 { width: 6rem; } + .md\:w-1\/3 { + width: 33.333333%; + } + .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -1235,6 +1316,18 @@ a:hover .icon-tabler { .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } + + .md\:flex-row { + flex-direction: row; + } + + .md\:flex-nowrap { + flex-wrap: nowrap; + } + + .md\:items-start { + align-items: flex-start; + } } @media (min-width: 1024px) { @@ -1242,12 +1335,12 @@ a:hover .icon-tabler { position: static; } - .lg\:right-0 { - right: 0px; + .lg\:left-0 { + left: 0px; } - .lg\:mt-36 { - margin-top: 9rem; + .lg\:right-0 { + right: 0px; } .lg\:flex { diff --git a/assets/js/style.css b/assets/js/style.css new file mode 100644 index 0000000..fbef532 --- /dev/null +++ b/assets/js/style.css @@ -0,0 +1,10 @@ +/** + * jQuery.offcanvas v3.4.7 - Easy to use jQuery offcanvas plugin. + * Copyright 2016 Lars Graubner - http://lgraubner.github.io/jquery-offcanvas/ + * License: MIT + */ +.offcanvas{position:relative} +.offcanvas-outer{left:0;overflow-x:hidden;position:absolute;top:0;width:100%} +.offcanvas-inner{position:relative} +.offcanvas-element{margin:0;overflow:hidden;position:absolute;top:0;z-index:2} +.offcanvas-overlay{display:none;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;z-index:1} \ No newline at end of file diff --git a/assets/js/theme.js b/assets/js/theme.js index d1b0e87..8c36fe8 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -1 +1,438 @@ -!function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=26)}([function(t,e){t.exports=jQuery},function(t,e){t.exports=prestashop},function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n5&&function(){var t=0;(0,a.default)(e).find(".color").each(function(e,n){e>4&&((0,a.default)(n).hide(),t++)}),(0,a.default)(e).find(".js-count").append("+"+t)}()})}}]),t}();e.default=s,t.exports=e.default},function(t,e,n){"use strict";var i,r;!function(t){function e(t){var e=t.length,i=n.type(t);return"function"!==i&&!n.isWindow(t)&&(!(1!==t.nodeType||!e)||("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t))}if(!t.jQuery){var n=function t(e,n){return new t.fn.init(e,n)};n.isWindow=function(t){return t&&t===t.window},n.type=function(t){return t?"object"==typeof t||"function"==typeof t?r[a.call(t)]||"object":typeof t:t+""},n.isArray=Array.isArray||function(t){return"array"===n.type(t)},n.isPlainObject=function(t){var e;if(!t||"object"!==n.type(t)||t.nodeType||n.isWindow(t))return!1;try{if(t.constructor&&!o.call(t,"constructor")&&!o.call(t.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}for(e in t);return void 0===e||o.call(t,e)},n.each=function(t,n,i){var r=0,o=t.length,a=e(t);if(i){if(a)for(;r0?r=a:n=a}while(Math.abs(o)>v&&++s=g?c(e,s):0===l?s:d(e,n,n+_)}function h(){E=!0,t===n&&i===r||f()}var m=4,g=.001,v=1e-7,y=10,b=11,_=1/(b-1),x="Float32Array"in e;if(4!==arguments.length)return!1;for(var w=0;w<4;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;t=Math.min(t,1),i=Math.min(i,1),t=Math.max(t,0),i=Math.max(i,0);var S=x?new Float32Array(b):new Array(b),E=!1,C=function(e){return E||h(),t===n&&i===r?e:0===e?0:1===e?1:l(p(e),n,r)};C.getControlPoints=function(){return[{x:t,y:n},{x:i,y:r}]};var T="generateBezier("+[t,n,i,r]+")";return C.toString=function(){return T},C}function f(t,e){var n=t;return _.isString(t)?E.Easings[t]||(n=!1):n=_.isArray(t)&&1===t.length?u.apply(null,t):_.isArray(t)&&2===t.length?C.apply(null,t.concat([e])):!(!_.isArray(t)||4!==t.length)&&c.apply(null,t),!1===n&&(n=E.Easings[E.defaults.easing]?E.defaults.easing:S),n}function d(t){if(t){var e=E.timestamp&&!0!==t?t:v.now(),n=E.State.calls.length;n>1e4&&(E.State.calls=r(E.State.calls),n=E.State.calls.length);for(var o=0;o4;t--){var e=n.createElement("div");if(e.innerHTML="\x3c!--[if IE "+t+"]>=0?e:Math.max(0,i+e),s=n<0?i+n:Math.min(n,i),l=s-a;if(l>0)if(o=new Array(l),this.charAt)for(r=0;r=0}:function(t,e){for(var n=0;n1e-4&&Math.abs(s.v)>1e-4))break;return o?function(t){return u[t*(u.length-1)|0]}:c}}();E.Easings={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},spring:function(t){return 1-Math.cos(4.5*t*Math.PI)*Math.exp(6*-t)}},h.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(t,e){E.Easings[e[0]]=c.apply(null,e[1])});var T=E.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],colorNames:{aliceblue:"240,248,255",antiquewhite:"250,235,215",aquamarine:"127,255,212",aqua:"0,255,255",azure:"240,255,255",beige:"245,245,220",bisque:"255,228,196",black:"0,0,0",blanchedalmond:"255,235,205",blueviolet:"138,43,226",blue:"0,0,255",brown:"165,42,42",burlywood:"222,184,135",cadetblue:"95,158,160",chartreuse:"127,255,0",chocolate:"210,105,30",coral:"255,127,80",cornflowerblue:"100,149,237",cornsilk:"255,248,220",crimson:"220,20,60",cyan:"0,255,255",darkblue:"0,0,139",darkcyan:"0,139,139",darkgoldenrod:"184,134,11",darkgray:"169,169,169",darkgrey:"169,169,169",darkgreen:"0,100,0",darkkhaki:"189,183,107",darkmagenta:"139,0,139",darkolivegreen:"85,107,47",darkorange:"255,140,0",darkorchid:"153,50,204",darkred:"139,0,0",darksalmon:"233,150,122",darkseagreen:"143,188,143",darkslateblue:"72,61,139",darkslategray:"47,79,79",darkturquoise:"0,206,209",darkviolet:"148,0,211",deeppink:"255,20,147",deepskyblue:"0,191,255",dimgray:"105,105,105",dimgrey:"105,105,105",dodgerblue:"30,144,255",firebrick:"178,34,34",floralwhite:"255,250,240",forestgreen:"34,139,34",fuchsia:"255,0,255",gainsboro:"220,220,220",ghostwhite:"248,248,255",gold:"255,215,0",goldenrod:"218,165,32",gray:"128,128,128",grey:"128,128,128",greenyellow:"173,255,47",green:"0,128,0",honeydew:"240,255,240",hotpink:"255,105,180",indianred:"205,92,92",indigo:"75,0,130",ivory:"255,255,240",khaki:"240,230,140",lavenderblush:"255,240,245",lavender:"230,230,250",lawngreen:"124,252,0",lemonchiffon:"255,250,205",lightblue:"173,216,230",lightcoral:"240,128,128",lightcyan:"224,255,255",lightgoldenrodyellow:"250,250,210",lightgray:"211,211,211",lightgrey:"211,211,211",lightgreen:"144,238,144",lightpink:"255,182,193",lightsalmon:"255,160,122",lightseagreen:"32,178,170",lightskyblue:"135,206,250",lightslategray:"119,136,153",lightsteelblue:"176,196,222",lightyellow:"255,255,224",limegreen:"50,205,50",lime:"0,255,0",linen:"250,240,230",magenta:"255,0,255",maroon:"128,0,0",mediumaquamarine:"102,205,170",mediumblue:"0,0,205",mediumorchid:"186,85,211",mediumpurple:"147,112,219",mediumseagreen:"60,179,113",mediumslateblue:"123,104,238",mediumspringgreen:"0,250,154",mediumturquoise:"72,209,204",mediumvioletred:"199,21,133",midnightblue:"25,25,112",mintcream:"245,255,250",mistyrose:"255,228,225",moccasin:"255,228,181",navajowhite:"255,222,173",navy:"0,0,128",oldlace:"253,245,230",olivedrab:"107,142,35",olive:"128,128,0",orangered:"255,69,0",orange:"255,165,0",orchid:"218,112,214",palegoldenrod:"238,232,170",palegreen:"152,251,152",paleturquoise:"175,238,238",palevioletred:"219,112,147",papayawhip:"255,239,213",peachpuff:"255,218,185",peru:"205,133,63",pink:"255,192,203",plum:"221,160,221",powderblue:"176,224,230",purple:"128,0,128",red:"255,0,0",rosybrown:"188,143,143",royalblue:"65,105,225",saddlebrown:"139,69,19",salmon:"250,128,114",sandybrown:"244,164,96",seagreen:"46,139,87",seashell:"255,245,238",sienna:"160,82,45",silver:"192,192,192",skyblue:"135,206,235",slateblue:"106,90,205",slategray:"112,128,144",snow:"255,250,250",springgreen:"0,255,127",steelblue:"70,130,180",tan:"210,180,140",teal:"0,128,128",thistle:"216,191,216",tomato:"255,99,71",turquoise:"64,224,208",violet:"238,130,238",wheat:"245,222,179",whitesmoke:"245,245,245",white:"255,255,255",yellowgreen:"154,205,50",yellow:"255,255,0"}},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var t=0;t=1?"":"alpha(opacity="+parseInt(100*parseFloat(n),10)+")"}else switch(t){case"name":return"opacity";case"extract":case"inject":return n}}},register:function(){function t(t,e,n){if("border-box"===T.getPropertyValue(e,"boxSizing").toString().toLowerCase()===(n||!1)){var i,r,o=0,a="width"===t?["Left","Right"]:["Top","Bottom"],s=["padding"+a[0],"padding"+a[1],"border"+a[0]+"Width","border"+a[1]+"Width"];for(i=0;i9)||E.State.isGingerbread||(T.Lists.transformsBase=T.Lists.transformsBase.concat(T.Lists.transforms3D));for(var n=0;n8)&&3===o.split(" ").length&&(o+=" 1"),o;case"inject":return/^rgb/.test(r)?r:(m<=8?4===r.split(" ").length&&(r=r.split(/\s+/).slice(0,3).join(" ")):3===r.split(" ").length&&(r+=" 1"),(m<=8?"rgb":"rgba")+"("+r.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")")}}}();T.Normalizations.registered.innerWidth=e("width",!0),T.Normalizations.registered.innerHeight=e("height",!0),T.Normalizations.registered.outerWidth=e("width"),T.Normalizations.registered.outerHeight=e("height")}},Names:{camelCase:function(t){return t.replace(/-(\w)/g,function(t,e){return e.toUpperCase()})},SVGAttribute:function(t){var e="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(m||E.State.isAndroid&&!E.State.isChrome)&&(e+="|transform"),new RegExp("^("+e+")$","i").test(t)},prefixCheck:function(t){if(E.State.prefixMatches[t])return[E.State.prefixMatches[t],!0];for(var e=["","Webkit","Moz","ms","O"],n=0,i=e.length;n=4&&"("===P?k++:(k&&k<5||k>=4&&")"===P&&--k<5)&&(k=0),0===D&&"r"===P||1===D&&"g"===P||2===D&&"b"===P||3===D&&"a"===P||D>=3&&"("===P?(3===D&&"a"===P&&(N=1),D++):N&&","===P?++N>3&&(D=N=0):(N&&D<(N?5:4)||D>=(N?4:3)&&")"===P&&--D<(N?5:4))&&(D=N=0)}}C===v.length&&A===m.length||(E.debug,a=i),a&&(I.length?(E.debug,v=I,m=O,b=x=""):a=i)}a||(y=S(r,v),v=y[0],x=y[1],y=S(r,m),m=y[0].replace(/^([+-\/*])=/,function(t,e){return w=e,""}),b=y[1],v=parseFloat(v)||0,m=parseFloat(m)||0,"%"===b&&(/^(fontSize|lineHeight)$/.test(r)?(m/=100,b="em"):/^scale/.test(r)?(m/=100,b=""):/(Red|Green|Blue)$/i.test(r)&&(m=m/100*255,b="")));if(/[\/*]/.test(w))b=x;else if(x!==b&&0!==v)if(0===m)b=x;else{s=s||function(){var i={myParent:t.parentNode||n.body,position:T.getPropertyValue(t,"position"),fontSize:T.getPropertyValue(t,"fontSize")},r=i.position===F.lastPosition&&i.myParent===F.lastParent,o=i.fontSize===F.lastFontSize;F.lastParent=i.myParent,F.lastPosition=i.position,F.lastFontSize=i.fontSize;var a={};if(o&&r)a.emToPx=F.lastEmToPx,a.percentToPxWidth=F.lastPercentToPxWidth,a.percentToPxHeight=F.lastPercentToPxHeight;else{var s=c&&c.isSVG?n.createElementNS("http://www.w3.org/2000/svg","rect"):n.createElement("div");E.init(s),i.myParent.appendChild(s),h.each(["overflow","overflowX","overflowY"],function(t,e){E.CSS.setPropertyValue(s,e,"hidden")}),E.CSS.setPropertyValue(s,"position",i.position),E.CSS.setPropertyValue(s,"fontSize",i.fontSize),E.CSS.setPropertyValue(s,"boxSizing","content-box"),h.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(t,e){E.CSS.setPropertyValue(s,e,"100%")}),E.CSS.setPropertyValue(s,"paddingLeft","100em"),a.percentToPxWidth=F.lastPercentToPxWidth=(parseFloat(T.getPropertyValue(s,"width",null,!0))||1)/100,a.percentToPxHeight=F.lastPercentToPxHeight=(parseFloat(T.getPropertyValue(s,"height",null,!0))||1)/100,a.emToPx=F.lastEmToPx=(parseFloat(T.getPropertyValue(s,"paddingLeft"))||1)/100,i.myParent.removeChild(s)}return null===F.remToPx&&(F.remToPx=parseFloat(T.getPropertyValue(n.body,"fontSize"))||16),null===F.vwToPx&&(F.vwToPx=parseFloat(e.innerWidth)/100,F.vhToPx=parseFloat(e.innerHeight)/100),a.remToPx=F.remToPx,a.vwToPx=F.vwToPx,a.vhToPx=F.vhToPx,E.debug,a}();var q=/margin|padding|left|right|width|text|word|letter/i.test(r)||/X$/.test(r)||"x"===r?"x":"y";switch(x){case"%":v*="x"===q?s.percentToPxWidth:s.percentToPxHeight;break;case"px":break;default:v*=s[x+"ToPx"]}switch(b){case"%":v*=1/("x"===q?s.percentToPxWidth:s.percentToPxHeight);break;case"px":break;default:v*=1/s[b+"ToPx"]}}switch(w){case"+":m=v+m;break;case"-":m=v-m;break;case"*":m*=v;break;case"/":m=v/m}u[r]={rootPropertyValue:d,startValue:v,currentValue:v,endValue:m,unitType:b,easing:g},a&&(u[r].pattern=a),E.debug};for(var L in x)if(x.hasOwnProperty(L)){var j=T.Names.camelCase(L),B=function(e,n){var i,o,a;return _.isFunction(e)&&(e=e.call(t,r,I)),_.isArray(e)?(i=e[0],!_.isArray(e[1])&&/^[\d-]/.test(e[1])||_.isFunction(e[1])||T.RegEx.isHex.test(e[1])?a=e[1]:_.isString(e[1])&&!T.RegEx.isHex.test(e[1])&&E.Easings[e[1]]||_.isArray(e[1])?(o=n?e[1]:f(e[1],l.duration),a=e[2]):a=e[1]||e[2]):i=e,n||(o=o||l.easing),_.isFunction(i)&&(i=i.call(t,r,I)),_.isFunction(a)&&(a=a.call(t,r,I)),[i||0,o,a]}(x[L]);if(b(T.Lists.colors,j)){var V=B[0],M=B[1],H=B[2];if(T.RegEx.isHex.test(V)){for(var W=["Red","Green","Blue"],U=T.Values.hexToRgb(V),q=H?T.Values.hexToRgb(H):i,z=0;z0?"up":"down"}function d(t){var e=(0,a.default)(t.currentTarget),n=e.data("update-url"),i=e.attr("value"),r=e.val();if(r!=parseInt(r)||r<0||isNaN(r))return void e.val(i);var o=r-i;0!==o&&(e.attr("value",r),s(n,c(o),e))}var h=".js-cart-line-product-quantity",m=[];l.default.on("updateCart",function(){(0,a.default)(".quickview").modal("hide")}),l.default.on("updatedCart",function(){r()}),r();var g=(0,a.default)("body"),v=function(){for(var t;m.length>0;)t=m.pop(),t.abort()},y=function(t){return(0,a.default)(t.parents(".bootstrap-touchspin").find("input"))},b=function(t){t.preventDefault();var e=(0,a.default)(t.currentTarget),n=t.currentTarget.dataset,i=o(e,t.namespace),r={ajax:"1",action:"update"};void 0!==i&&(v(),a.default.ajax({url:i.url,method:"POST",data:r,dataType:"json",beforeSend:function(t){m.push(t)}}).then(function(t){p.checkUpdateOpertation(t),y(e).val(t.quantity),l.default.emit("updateCart",{reason:n})}).fail(function(t){l.default.emit("handleError",{eventType:"updateProductInCart",resp:t,cartAction:i.type})}))};g.on("click",'[data-link-action="delete-from-cart"], [data-link-action="remove-voucher"]',b),g.on("touchspin.on.startdownspin",u,b),g.on("touchspin.on.startupspin",u,b),g.on("focusout keyup",h,function(t){if("keyup"===t.type)return 13===t.keyCode&&d(t),!1;d(t)});g.on("hidden.bs.collapse","#promo-code",function(){(0,a.default)(".display-promo").show(400)}),g.on("click",".promo-code-button",function(t){t.preventDefault(),(0,a.default)("#promo-code").collapse("toggle")}),g.on("click",".display-promo",function(t){(0,a.default)(t.currentTarget).hide(400)}),g.on("click",".js-discount .code",function(t){t.stopPropagation();var e=(0,a.default)(t.currentTarget);return(0,a.default)("[name=discount_name]").val(e.text()),(0,a.default)("#promo-code").collapse("show"),(0,a.default)(".display-promo").hide(400),!1})});var p={switchErrorStat:function(){var t=(0,a.default)(".checkout a");if(((0,a.default)("#notifications article.alert-danger").length||""!==d&&!c)&&t.addClass("disabled"),""!==d){var e=' ";(0,a.default)("#notifications .container").html(e),d="",f=!1,c&&t.removeClass("disabled")}else!c&&f&&(c=!1,f=!1,(0,a.default)("#notifications .container").html(""),t.removeClass("disabled"))},checkUpdateOpertation:function(t){c=t.hasOwnProperty("hasError");var e=t.errors||"";d=e instanceof Array?e.join(" "):e,f=!0}}},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(){(0,s.default)(".js-terms a").on("click",function(t){t.preventDefault();var e=(0,s.default)(t.target).attr("href");e&&(e+="?content_only=1",s.default.get(e,function(t){(0,s.default)("#modal").find(".js-modal-content").html((0,s.default)(t).find(".page-cms").contents())}).fail(function(t){u.default.emit("handleError",{eventType:"clickTerms",resp:t})})),(0,s.default)("#modal").modal("show")}),(0,s.default)(".js-gift-checkbox").on("click",function(t){(0,s.default)("#gift").collapse("toggle")})}function o(){(0,s.default)(".card-block .cart-summary-products p a").on("click",function(t){t=(0,s.default)(this).find("i.material-icons"),"expand_more"==t.text()?t.text("expand_less"):t.text("expand_more")})}var a=n(0),s=i(a),l=n(1),u=i(l);(0,s.default)(document).ready(function(){1===(0,s.default)("body#checkout").length&&(r(),o()),u.default.on("updatedDeliveryForm",function(t){void 0!==t.deliveryOption&&0!==t.deliveryOption.length&&((0,s.default)(".carrier-extra-content").hide(),t.deliveryOption.next(".carrier-extra-content").slideDown())})})},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}var r=n(1),o=i(r),a=n(0),s=i(a);o.default.blockcart=o.default.blockcart||{},o.default.blockcart.showModal=function(t){function e(){return(0,s.default)("#blockcart-modal")}var n=e();n.length&&n.remove(),(0,s.default)("body").append(t),n=e(),n.modal("show").on("hidden.bs.modal",function(t){o.default.emit("updateProduct",{reason:t.currentTarget.dataset,event:t})})}},function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n(0,a.default)(".js-modal-mask").height()&&(t.move("down"),(0,a.default)(".js-modal-arrow-up").css("opacity","1"))})}},{key:"move",value:function(t){var e=(0,a.default)(".js-modal-product-images"),n=(0,a.default)(".js-modal-product-images li img").height()+10,i=e.position().top;e.velocity({translateY:"up"===t?i+n:i-n},function(){e.position().top>=0?(0,a.default)(".js-modal-arrow-up").css("opacity",".2"):e.position().top+e.height()<=(0,a.default)(".js-modal-mask").height()&&(0,a.default)(".js-modal-arrow-down").css("opacity",".2")})}}]),t}();e.default=s,t.exports=e.default},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(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)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n0&&this.options.badge&&this.$elementFilestyle.find("label").append(' '+e.length+""),this.$elementFilestyle.find(".group-span-filestyle").removeClass("input-group-btn")}}},size:function(t){if(void 0===t)return this.options.size;var e=this.$elementFilestyle.find("label"),n=this.$elementFilestyle.find("input");e.removeClass("btn-lg btn-sm"),n.removeClass("input-lg input-sm"),"nr"!=t&&(e.addClass("btn-"+t),n.addClass("input-"+t))},placeholder:function(t){if(void 0===t)return this.options.placeholder;this.options.placeholder=t,this.$elementFilestyle.find("input").attr("placeholder",t)},buttonText:function(t){if(void 0===t)return this.options.buttonText;this.options.buttonText=t,this.$elementFilestyle.find("label .buttonText").html(this.options.buttonText)},buttonName:function(t){if(void 0===t)return this.options.buttonName;this.options.buttonName=t,this.$elementFilestyle.find("label").attr({class:"btn "+this.options.buttonName})},iconName:function(t){if(void 0===t)return this.options.iconName;this.$elementFilestyle.find(".icon-span-filestyle").attr({class:"icon-span-filestyle "+this.options.iconName})},htmlIcon:function(){return this.options.icon?' ':""},htmlInput:function(){return this.options.input?' ':""},pushNameFiles:function(){var t="",e=[];void 0===this.$element[0].files?e[0]={name:this.$element[0]&&this.$element[0].value}:e=this.$element[0].files;for(var n=0;n",i=n.options.buttonBefore?o+n.htmlInput():n.htmlInput()+o,n.$elementFilestyle=t('
'+i+"
"),n.$elementFilestyle.find(".group-span-filestyle").attr("tabindex","0").keypress(function(t){if(13===t.keyCode||32===t.charCode)return n.$elementFilestyle.find("label").click(),!1}),n.$element.css({position:"absolute",clip:"rect(0px 0px 0px 0px)"}).attr("tabindex","-1").after(n.$elementFilestyle),n.options.disabled&&n.$element.attr("disabled","true"),n.$element.change(function(){var t=n.pushNameFiles();0==n.options.input&&n.options.badge?0==n.$elementFilestyle.find(".badge").length?n.$elementFilestyle.find("label").append(' '+t.length+""):0==t.length?n.$elementFilestyle.find(".badge").remove():n.$elementFilestyle.find(".badge").html(t.length):n.$elementFilestyle.find(".badge").remove()}),window.navigator.userAgent.search(/firefox/i)>-1&&n.$elementFilestyle.find("label").click(function(){return n.$element.click(),!1})}};var i=t.fn.filestyle;t.fn.filestyle=function(e,i){var r="",o=this.each(function(){if("file"===t(this).attr("type")){var o=t(this),a=o.data("filestyle"),s=t.extend({},t.fn.filestyle.defaults,e,"object"==typeof e&&e);a||(o.data("filestyle",a=new n(this,s)),a.constructor()),"string"==typeof e&&(r=a[e](i))}});return void 0!==typeof r?r:o},t.fn.filestyle.defaults={buttonText:"Choose file",iconName:"glyphicon glyphicon-folder-open",buttonName:"btn-default",size:"nr",input:!0,badge:!0,icon:!0,buttonBefore:!1,disabled:!1,placeholder:""},t.fn.filestyle.noConflict=function(){return t.fn.filestyle=i,this},t(function(){t(".filestyle").each(function(){var e=t(this),n={input:"false"!==e.attr("data-input"),icon:"false"!==e.attr("data-icon"),buttonBefore:"true"===e.attr("data-buttonBefore"),disabled:"true"===e.attr("data-disabled"),size:e.attr("data-size"),buttonText:e.attr("data-buttonText"),buttonName:e.attr("data-buttonName"),iconName:e.attr("data-iconName"),badge:"false"!==e.attr("data-badge"),placeholder:e.attr("data-placeholder")};e.filestyle(n)})})}(window.jQuery)},function(t,e,n){"use strict";!function(t){t.fn.scrollbox=function(e){var n={linear:!1,startDelay:2,delay:3,step:5,speed:32,switchItems:1,direction:"vertical",distance:"auto",autoPlay:!0,onMouseOverPause:!0,paused:!1,queue:null,listElement:"ul",listItemElement:"li",infiniteLoop:!0,switchAmount:0,afterForward:null,afterBackward:null,triggerStackable:!1};return e=t.extend(n,e),e.scrollOffset="vertical"===e.direction?"scrollTop":"scrollLeft",e.queue&&(e.queue=t("#"+e.queue)),this.each(function(){var n,i,r,o,a,s,l,u,c,f=t(this),d=null,p=null,h=!1,m=0,g=0;e.onMouseOverPause&&(f.bind("mouseover",function(){h=!0}),f.bind("mouseout",function(){h=!1})),n=f.children(e.listElement+":first-child"),!1===e.infiniteLoop&&0===e.switchAmount&&(e.switchAmount=n.children().length),s=function(){if(!h){var r,a,s,l,u;if(r=n.children(e.listItemElement+":first-child"),l="auto"!==e.distance?e.distance:"vertical"===e.direction?r.outerHeight(!0):r.outerWidth(!0),e.linear?s=Math.min(f[0][e.scrollOffset]+e.step,l):(u=Math.max(3,parseInt(.3*(l-f[0][e.scrollOffset]),10)),s=Math.min(f[0][e.scrollOffset]+u,l)),f[0][e.scrollOffset]=s,s>=l){for(a=0;a0?(n.append(e.queue.find(e.listItemElement)[0]),n.children(e.listItemElement+":first-child").remove()):n.append(n.children(e.listItemElement+":first-child")),++m;if(f[0][e.scrollOffset]=0,clearInterval(d),d=null,t.isFunction(e.afterForward)&&e.afterForward.call(f,{switchCount:m,currentFirstChild:n.children(e.listItemElement+":first-child")}),e.triggerStackable&&0!==g)return void i();if(!1===e.infiniteLoop&&m>=e.switchAmount)return;e.autoPlay&&(p=setTimeout(o,1e3*e.delay))}}},l=function(){if(!h){var r,a,s,l,u;if(0===f[0][e.scrollOffset]){for(a=0;a0?(g--,p=setTimeout(o,0)):(g++,p=setTimeout(r,0)))},o=function(){clearInterval(d),d=setInterval(s,e.speed)},r=function(){clearInterval(d),d=setInterval(l,e.speed)},u=function(){e.autoPlay=!0,h=!1,clearInterval(d),d=setInterval(s,e.speed)},c=function(){h=!0},a=function(t){e.delay=t||e.delay,clearTimeout(p),e.autoPlay&&(p=setTimeout(o,1e3*e.delay))},e.autoPlay&&(p=setTimeout(o,1e3*e.startDelay)),f.bind("resetClock",function(t){a(t)}),f.bind("forward",function(){e.triggerStackable?null!==d?g++:o():(clearTimeout(p),o())}),f.bind("backward",function(){e.triggerStackable?null!==d?g--:r():(clearTimeout(p),r())}),f.bind("pauseHover",function(){c()}),f.bind("forwardHover",function(){u()}),f.bind("speedUp",function(t,n){"undefined"===n&&(n=Math.max(1,parseInt(e.speed/2,10))),e.speed=n}),f.bind("speedDown",function(t,n){"undefined"===n&&(n=2*e.speed),e.speed=n}),f.bind("updateConfig",function(n,i){e=t.extend(e,i)})})}}(jQuery)},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t){(0,a.default)("#search_filters").replaceWith(t.rendered_facets),(0,a.default)("#js-active-search-filters").replaceWith(t.rendered_active_filters),(0,a.default)("#js-product-list-top").replaceWith(t.rendered_products_top),(0,a.default)("#js-product-list").replaceWith(t.rendered_products),(0,a.default)("#js-product-list-bottom").replaceWith(t.rendered_products_bottom),t.rendered_products_header&&(0,a.default)("#js-product-list-header").replaceWith(t.rendered_products_header),(new c.default).init()}var o=n(0),a=i(o),s=n(1),l=i(s);n(4);var u=n(3),c=i(u);(0,a.default)(document).ready(function(){l.default.on("clickQuickView",function(e){var n={action:"quickview",id_product:e.dataset.idProduct,id_product_attribute:e.dataset.idProductAttribute};a.default.post(l.default.urls.pages.product,n,null,"json").then(function(e){(0,a.default)("body").append(e.quickview_html);var n=(0,a.default)("#quickview-modal-"+e.product.id+"-"+e.product.id_product_attribute);n.modal("show"),t(n),n.on("hidden.bs.modal",function(){n.remove()})}).fail(function(t){l.default.emit("handleError",{eventType:"clickQuickView",resp:t})})});var t=function(t){var n=(0,a.default)(".js-arrows"),i=t.find(".js-qv-product-images");(0,a.default)(".js-thumb").on("click",function(t){(0,a.default)(".js-thumb").hasClass("selected")&&(0,a.default)(".js-thumb").removeClass("selected"),(0,a.default)(t.currentTarget).addClass("selected"),(0,a.default)(".js-qv-product-cover").attr("src",(0,a.default)(t.target).data("image-large-src"))}),i.find("li").length<=4?n.hide():n.on("click",function(t){(0,a.default)(t.target).hasClass("arrow-up")&&(0,a.default)(".js-qv-product-images").position().top<0?(e("up"),(0,a.default)(".arrow-down").css("opacity","1")):(0,a.default)(t.target).hasClass("arrow-down")&&i.position().top+i.height()>(0,a.default)(".js-qv-mask").height()&&(e("down"),(0,a.default)(".arrow-up").css("opacity","1"))}),t.find("#quantity_wanted").TouchSpin({verticalbuttons:!0,verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:1,max:1e6})},e=function(t){var e=(0,a.default)(".js-qv-product-images"),n=(0,a.default)(".js-qv-product-images li img").height()+20,i=e.position().top;e.velocity({translateY:"up"===t?i+n:i-n},function(){e.position().top>=0?(0,a.default)(".arrow-up").css("opacity",".2"):e.position().top+e.height()<=(0,a.default)(".js-qv-mask").height()&&(0,a.default)(".arrow-down").css("opacity",".2")})};(0,a.default)("body").on("click","#search_filter_toggler",function(){(0,a.default)("#search_filters_wrapper").removeClass("hidden-sm-down"),(0,a.default)("#content-wrapper").addClass("hidden-sm-down"),(0,a.default)("#footer").addClass("hidden-sm-down")}),(0,a.default)("#search_filter_controls .clear").on("click",function(){(0,a.default)("#search_filters_wrapper").addClass("hidden-sm-down"),(0,a.default)("#content-wrapper").removeClass("hidden-sm-down"),(0,a.default)("#footer").removeClass("hidden-sm-down")}),(0,a.default)("#search_filter_controls .ok").on("click",function(){(0,a.default)("#search_filters_wrapper").addClass("hidden-sm-down"),(0,a.default)("#content-wrapper").removeClass("hidden-sm-down"),(0,a.default)("#footer").removeClass("hidden-sm-down")});var n=function(t){if(void 0!==t.target.dataset.searchUrl)return t.target.dataset.searchUrl;if(void 0===(0,a.default)(t.target).parent()[0].dataset.searchUrl)throw new Error("Can not parse search URL");return(0,a.default)(t.target).parent()[0].dataset.searchUrl};(0,a.default)("body").on("change","#search_filters input[data-search-url]",function(t){l.default.emit("updateFacets",n(t))}),(0,a.default)("body").on("click",".js-search-filters-clear-all",function(t){l.default.emit("updateFacets",n(t))}),(0,a.default)("body").on("click",".js-search-link",function(t){t.preventDefault(),l.default.emit("updateFacets",(0,a.default)(t.target).closest("a").get(0).href)}),(0,a.default)("body").on("change","#search_filters select",function(t){var e=(0,a.default)(t.target).closest("form");l.default.emit("updateFacets","?"+e.serialize())}),l.default.on("updateProductList",function(t){r(t),window.scrollTo(0,0)})})},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}var r=n(0),o=i(r),a=n(1),s=i(a);(0,o.default)(document).ready(function(){function t(){(0,o.default)(".js-thumb").on("click",function(t){(0,o.default)(".js-modal-product-cover").attr("src",(0,o.default)(t.target).data("image-large-src")),(0,o.default)(".selected").removeClass("selected"),(0,o.default)(t.target).addClass("selected"),(0,o.default)(".js-qv-product-cover").prop("src",(0,o.default)(t.currentTarget).data("image-large-src"))})}function e(){(0,o.default)("#main .js-qv-product-images li").length>2?((0,o.default)("#main .js-qv-mask").addClass("scroll"),(0,o.default)(".scroll-box-arrows").addClass("scroll"),(0,o.default)("#main .js-qv-mask").scrollbox({direction:"h",distance:113,autoPlay:!1}),(0,o.default)(".scroll-box-arrows .left").click(function(){(0,o.default)("#main .js-qv-mask").trigger("backward")}),(0,o.default)(".scroll-box-arrows .right").click(function(){(0,o.default)("#main .js-qv-mask").trigger("forward")})):((0,o.default)("#main .js-qv-mask").removeClass("scroll"),(0,o.default)(".scroll-box-arrows").removeClass("scroll"))}function n(){(0,o.default)(".js-file-input").on("change",function(t){var e=void 0,n=void 0;(e=(0,o.default)(t.currentTarget)[0])&&(n=e.files[0])&&(0,o.default)(e).prev().text(n.name)})}!function(){var t=(0,o.default)("#quantity_wanted");t.TouchSpin({verticalbuttons:!0,verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:parseInt(t.attr("min"),10),max:1e6}),(0,o.default)("body").on("change keyup","#quantity_wanted",function(t){(0,o.default)(t.currentTarget).trigger("touchspin.stopspin"),s.default.emit("updateProduct",{eventType:"updatedProductQuantity",event:t})})}(),n(),t(),e(),s.default.on("updatedProduct",function(i){if(n(),t(),i&&i.product_minimal_quantity){var r=parseInt(i.product_minimal_quantity,10);(0,o.default)("#quantity_wanted").trigger("touchspin.updatesettings",{min:r})}e(),(0,o.default)((0,o.default)(".tabs .nav-link.active").attr("href")).addClass("active").removeClass("fade"),(0,o.default)(".js-product-images-modal").replaceWith(i.product_images_modal)})})},function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){var n=e.children().detach();e.empty().append(t.children().detach()),t.append(n)}function o(){u.default.responsive.mobile?(0,s.default)("*[id^='_desktop_']").each(function(t,e){var n=(0,s.default)("#"+e.id.replace("_desktop_","_mobile_"));n.length&&r((0,s.default)(e),n)}):(0,s.default)("*[id^='_mobile_']").each(function(t,e){var n=(0,s.default)("#"+e.id.replace("_mobile_","_desktop_"));n.length&&r((0,s.default)(e),n)}),u.default.emit("responsive update",{mobile:u.default.responsive.mobile})}var a=n(0),s=i(a),l=n(1),u=i(l);u.default.responsive=u.default.responsive||{},u.default.responsive.current_width=window.innerWidth,u.default.responsive.min_width=768,u.default.responsive.mobile=u.default.responsive.current_width=e&&n=e;u.default.responsive.current_width=n,u.default.responsive.mobile=u.default.responsive.current_width'+T.prefix+"",s=''+T.postfix+"";r.hasClass("input-group-btn")?(n='",r.append(n)):(n='",t(n).insertBefore(L)),o.hasClass("input-group-btn")?(i='",o.prepend(i)):(i='",t(i).insertAfter(L)),t(a).insertBefore(L),t(s).insertAfter(L),A=e}function p(){var e;e=T.verticalbuttons?'
'+T.prefix+''+T.postfix+'
':'
'+T.prefix+''+T.postfix+'
",A=t(e).insertBefore(L),t(".bootstrap-touchspin-prefix",A).after(L),L.hasClass("input-sm")?A.addClass("input-group-sm"):L.hasClass("input-lg")&&A.addClass("input-group-lg")}function h(){I={down:t(".bootstrap-touchspin-down",A),up:t(".bootstrap-touchspin-up",A),input:t("input",A),prefix:t(".bootstrap-touchspin-prefix",A).addClass(T.prefix_extraclass),postfix:t(".bootstrap-touchspin-postfix",A).addClass(T.postfix_extraclass)}}function m(){""===T.prefix&&I.prefix.hide(),""===T.postfix&&I.postfix.hide()}function g(){L.on("keydown",function(t){var e=t.keyCode||t.which;38===e?("up"!==V&&(x(),E()),t.preventDefault()):40===e&&("down"!==V&&(w(),S()),t.preventDefault())}),L.on("keyup",function(t){var e=t.keyCode||t.which;38===e?C():40===e&&C()}),L.on("blur",function(){b()}),I.down.on("keydown",function(t){var e=t.keyCode||t.which;32!==e&&13!==e||("down"!==V&&(w(),S()),t.preventDefault())}),I.down.on("keyup",function(t){var e=t.keyCode||t.which;32!==e&&13!==e||C()}),I.up.on("keydown",function(t){var e=t.keyCode||t.which;32!==e&&13!==e||("up"!==V&&(x(),E()),t.preventDefault())}),I.up.on("keyup",function(t){var e=t.keyCode||t.which;32!==e&&13!==e||C()}),I.down.on("mousedown.touchspin",function(t){I.down.off("touchstart.touchspin"),L.is(":disabled")||(w(),S(),t.preventDefault(),t.stopPropagation())}),I.down.on("touchstart.touchspin",function(t){I.down.off("mousedown.touchspin"),L.is(":disabled")||(w(),S(),t.preventDefault(),t.stopPropagation())}),I.up.on("mousedown.touchspin",function(t){I.up.off("touchstart.touchspin"),L.is(":disabled")||(x(),E(),t.preventDefault(),t.stopPropagation())}),I.up.on("touchstart.touchspin",function(t){I.up.off("mousedown.touchspin"),L.is(":disabled")||(x(),E(),t.preventDefault(),t.stopPropagation())}),I.up.on("mouseout touchleave touchend touchcancel",function(t){V&&(t.stopPropagation(),C())}),I.down.on("mouseout touchleave touchend touchcancel",function(t){V&&(t.stopPropagation(),C())}),I.down.on("mousemove touchmove",function(t){V&&(t.stopPropagation(),t.preventDefault())}),I.up.on("mousemove touchmove",function(t){V&&(t.stopPropagation(),t.preventDefault())}),t(document).on(n(["mouseup","touchend","touchcancel"],i).join(" "),function(t){V&&(t.preventDefault(),C())}),t(document).on(n(["mousemove","touchmove","scroll","scrollstart"],i).join(" "),function(t){V&&(t.preventDefault(),C())}),L.on("mousewheel DOMMouseScroll",function(t){if(T.mousewheel&&L.is(":focus")){var e=t.originalEvent.wheelDelta||-t.originalEvent.deltaY||-t.originalEvent.detail;t.stopPropagation(),t.preventDefault(),e<0?w():x()}})}function v(){L.on("touchspin.uponce",function(){C(),x()}),L.on("touchspin.downonce",function(){C(),w()}),L.on("touchspin.startupspin",function(){E()}),L.on("touchspin.startdownspin",function(){S()}),L.on("touchspin.stopspin",function(){C()}),L.on("touchspin.updatesettings",function(t,e){s(e)})}function y(t){switch(T.forcestepdivisibility){case"round":return(Math.round(t/T.step)*T.step).toFixed(T.decimals);case"floor":return(Math.floor(t/T.step)*T.step).toFixed(T.decimals);case"ceil":return(Math.ceil(t/T.step)*T.step).toFixed(T.decimals);default:return t}}function b(){var t,e,n;if(""===(t=L.val()))return void(""!==T.replacementval&&(L.val(T.replacementval),L.trigger("change")));T.decimals>0&&"."===t||(e=parseFloat(t),isNaN(e)&&(e=""!==T.replacementval?T.replacementval:0),n=e,e.toString()!==t&&(n=e),eT.max&&(n=T.max),n=y(n),Number(t).toString()!==n.toString()&&(L.val(n),L.trigger("change")))}function _(){if(T.booster){var t=Math.pow(2,Math.floor(B/T.boostat))*T.step;return T.maxboostedstep&&t>T.maxboostedstep&&(t=T.maxboostedstep,O=Math.round(O/t)*t),Math.max(T.step,t)}return T.step}function x(){b(),O=parseFloat(I.input.val()),isNaN(O)&&(O=0);var t=O,e=_();O+=e,O>T.max&&(O=T.max,L.trigger("touchspin.on.max"),C()),I.input.val(Number(O).toFixed(T.decimals)),t!==O&&L.trigger("change")}function w(){b(),O=parseFloat(I.input.val()),isNaN(O)&&(O=0);var t=O,e=_();O-=e,O=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},r=function(){function t(t,e){for(var n=0;nthis._items.length-1||e<0)){if(this._isSliding)return void t(this._element).one(p.SLID,function(){return n.to(e)});if(i===e)return this.pause(),void this.cycle();var r=e>i?d.NEXT:d.PREVIOUS;this._slide(r,this._items[e])}},l.prototype.dispose=function(){t(this._element).off(s),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},l.prototype._getConfig=function(n){return n=t.extend({},c,n),o.typeCheckConfig(e,n,f),n},l.prototype._addEventListeners=function(){this._config.keyboard&&t(this._element).on(p.KEYDOWN,t.proxy(this._keydown,this)),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||t(this._element).on(p.MOUSEENTER,t.proxy(this.pause,this)).on(p.MOUSELEAVE,t.proxy(this.cycle,this))},l.prototype._keydown=function(t){if(t.preventDefault(),!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}},l.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(m.ITEM)),this._items.indexOf(e)},l.prototype._getItemByDirection=function(t,e){var n=t===d.NEXT,i=t===d.PREVIOUS,r=this._getItemIndex(e),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return e;var a=t===d.PREVIOUS?-1:1,s=(r+a)%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},l.prototype._triggerSlideEvent=function(e,n){var i=t.Event(p.SLIDE,{relatedTarget:e,direction:n});return t(this._element).trigger(i),i},l.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(m.ACTIVE).removeClass(h.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(h.ACTIVE)}},l.prototype._slide=function(e,n){var i=this,r=t(this._element).find(m.ACTIVE_ITEM)[0],a=n||r&&this._getItemByDirection(e,r),s=Boolean(this._interval),l=e===d.NEXT?h.LEFT:h.RIGHT;if(a&&t(a).hasClass(h.ACTIVE))return void(this._isSliding=!1);if(!this._triggerSlideEvent(a,l).isDefaultPrevented()&&r&&a){this._isSliding=!0,s&&this.pause(),this._setActiveIndicatorElement(a);var u=t.Event(p.SLID,{relatedTarget:a,direction:l});o.supportsTransitionEnd()&&t(this._element).hasClass(h.SLIDE)?(t(a).addClass(e),o.reflow(a),t(r).addClass(l),t(a).addClass(l),t(r).one(o.TRANSITION_END,function(){t(a).removeClass(l).removeClass(e),t(a).addClass(h.ACTIVE),t(r).removeClass(h.ACTIVE).removeClass(e).removeClass(l),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(u)},0)}).emulateTransitionEnd(600)):(t(r).removeClass(h.ACTIVE),t(a).addClass(h.ACTIVE),this._isSliding=!1,t(this._element).trigger(u)),s&&this.cycle()}},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),r=t.extend({},c,t(this).data());"object"===(void 0===e?"undefined":i(e))&&t.extend(r,e);var o="string"==typeof e?e:r.slide;if(n||(n=new l(this,r),t(this).data(a,n)),"number"==typeof e)n.to(e);else if("string"==typeof o){if(void 0===n[o])throw new Error('No method named "'+o+'"');n[o]()}else r.interval&&(n.pause(),n.cycle())})},l._dataApiClickHandler=function(e){var n=o.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(h.CAROUSEL)){var r=t.extend({},t(i).data(),t(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),l._jQueryInterface.call(t(i),r),s&&t(i).data(a).to(s),e.preventDefault()}}},r(l,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.5"}},{key:"Default",get:function(){return c}}]),l}();t(document).on(p.CLICK_DATA_API,m.DATA_SLIDE,g._dataApiClickHandler),t(window).on(p.LOAD_DATA_API,function(){t(m.DATA_RIDE).each(function(){var e=t(this);g._jQueryInterface.call(e,e.data())})}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=u,g._jQueryInterface}}(jQuery),function(t){var e="collapse",a="bs.collapse",s="."+a,l=t.fn[e],u={toggle:!0,parent:""},c={toggle:"boolean",parent:"string"},f={SHOW:"show"+s,SHOWN:"shown"+s,HIDE:"hide"+s,HIDDEN:"hidden"+s,CLICK_DATA_API:"click"+s+".data-api"},d={IN:"in",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},h={ACTIVES:".card > .in, .card > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function s(e,i){n(this,s),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 s.prototype.toggle=function(){t(this._element).hasClass(d.IN)?this.hide():this.show()},s.prototype.show=function(){var e=this;if(!this._isTransitioning&&!t(this._element).hasClass(d.IN)){var n=void 0,i=void 0;if(this._parent&&(n=t.makeArray(t(h.ACTIVES)),n.length||(n=null)),!(n&&(i=t(n).data(a))&&i._isTransitioning)){var r=t.Event(f.SHOW);if(t(this._element).trigger(r),!r.isDefaultPrevented()){n&&(s._jQueryInterface.call(t(n),"hide"),i||t(n).data(a,null));var l=this._getDimension();t(this._element).removeClass(d.COLLAPSE).addClass(d.COLLAPSING),this._element.style[l]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&t(this._triggerArray).removeClass(d.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var u=function(){t(e._element).removeClass(d.COLLAPSING).addClass(d.COLLAPSE).addClass(d.IN),e._element.style[l]="",e.setTransitioning(!1),t(e._element).trigger(f.SHOWN)};if(!o.supportsTransitionEnd())return void u();var c=l[0].toUpperCase()+l.slice(1),p="scroll"+c;t(this._element).one(o.TRANSITION_END,u).emulateTransitionEnd(600),this._element.style[l]=this._element[p]+"px"}}}},s.prototype.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(d.IN)){var n=t.Event(f.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension(),r=i===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[i]=this._element[r]+"px",o.reflow(this._element),t(this._element).addClass(d.COLLAPSING).removeClass(d.COLLAPSE).removeClass(d.IN),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&t(this._triggerArray).addClass(d.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var a=function(){e.setTransitioning(!1),t(e._element).removeClass(d.COLLAPSING).addClass(d.COLLAPSE).trigger(f.HIDDEN)};return this._element.style[i]="",o.supportsTransitionEnd()?void t(this._element).one(o.TRANSITION_END,a).emulateTransitionEnd(600):void a()}}},s.prototype.setTransitioning=function(t){this._isTransitioning=t},s.prototype.dispose=function(){t.removeData(this._element,a),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},s.prototype._getConfig=function(n){return n=t.extend({},u,n),n.toggle=Boolean(n.toggle),o.typeCheckConfig(e,n,c),n},s.prototype._getDimension=function(){return t(this._element).hasClass(p.WIDTH)?p.WIDTH:p.HEIGHT},s.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(s._getTargetFromElement(n),[n])}),n},s.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(d.IN);e.setAttribute("aria-expanded",i),n.length&&t(n).toggleClass(d.COLLAPSED,!i).attr("aria-expanded",i)}},s._getTargetFromElement=function(e){var n=o.getSelectorFromElement(e);return n?t(n)[0]:null},s._jQueryInterface=function(e){return this.each(function(){var n=t(this),r=n.data(a),o=t.extend({},u,n.data(),"object"===(void 0===e?"undefined":i(e))&&e);if(!r&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),r||(r=new s(this,o),n.data(a,r)),"string"==typeof e){if(void 0===r[e])throw new Error('No method named "'+e+'"');r[e]()}})},r(s,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.5"}},{key:"Default",get:function(){return u}}]),s}();t(document).on(f.CLICK_DATA_API,h.DATA_TOGGLE,function(e){e.preventDefault();var n=m._getTargetFromElement(this),i=t(n).data(a),r=i?"toggle":t(this).data();m._jQueryInterface.call(t(n),r)}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=l,m._jQueryInterface}}(jQuery),function(t){var e="dropdown",i="bs.dropdown",a="."+i,s=".data-api",l=t.fn[e],u={HIDE:"hide"+a,HIDDEN:"hidden"+a,SHOW:"show"+a,SHOWN:"shown"+a,CLICK:"click"+a,CLICK_DATA_API:"click"+a+s,KEYDOWN_DATA_API:"keydown"+a+s},c={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open"},f={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'},d=function(){function e(t){n(this,e),this._element=t,this._addEventListeners()}return e.prototype.toggle=function(){if(this.disabled||t(this).hasClass(c.DISABLED))return!1;var n=e._getParentFromElement(this),i=t(n).hasClass(c.OPEN);if(e._clearMenus(),i)return!1;if("ontouchstart"in document.documentElement&&!t(n).closest(f.NAVBAR_NAV).length){var r=document.createElement("div");r.className=c.BACKDROP,t(r).insertBefore(this),t(r).on("click",e._clearMenus)}var o={relatedTarget:this},a=t.Event(u.SHOW,o);return t(n).trigger(a),!a.isDefaultPrevented()&&(this.focus(),this.setAttribute("aria-expanded","true"),t(n).toggleClass(c.OPEN),t(n).trigger(t.Event(u.SHOWN,o)),!1)},e.prototype.dispose=function(){t.removeData(this._element,i),t(this._element).off(a),this._element=null},e.prototype._addEventListeners=function(){t(this._element).on(u.CLICK,this.toggle)},e._jQueryInterface=function(n){return this.each(function(){var r=t(this).data(i);if(r||t(this).data(i,r=new e(this)),"string"==typeof n){if(void 0===r[n])throw new Error('No method named "'+n+'"');r[n].call(this)}})},e._clearMenus=function(n){if(!n||3!==n.which){var i=t(f.BACKDROP)[0];i&&i.parentNode.removeChild(i);for(var r=t.makeArray(t(f.DATA_TOGGLE)),o=0;o0&&s--,40===n.which&&sdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},l.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},l.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}if(this._activeTarget&&t=this._offsets[r]&&(void 0===this._offsets[r+1]||t .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"},f=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(u.ACTIVE)){var n=void 0,i=void 0,r=t(this._element).closest(c.UL)[0],a=o.getSelectorFromElement(this._element);r&&(i=t.makeArray(t(r).find(c.ACTIVE)),i=i[i.length-1]);var s=t.Event(l.HIDE,{relatedTarget:this._element}),f=t.Event(l.SHOW,{relatedTarget:i});if(i&&t(i).trigger(s),t(this._element).trigger(f),!f.isDefaultPrevented()&&!s.isDefaultPrevented()){a&&(n=t(a)[0]),this._activate(this._element,r);var d=function(){var n=t.Event(l.HIDDEN,{relatedTarget:e._element}),r=t.Event(l.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(r)};n?this._activate(n,n.parentNode,d):d()}}},e.prototype.dispose=function(){t.removeClass(this._element,i),this._element=null},e.prototype._activate=function(e,n,i){var r=t(n).find(c.ACTIVE_CHILD)[0],a=i&&o.supportsTransitionEnd()&&(r&&t(r).hasClass(u.FADE)||Boolean(t(n).find(c.FADE_CHILD)[0])),s=t.proxy(this._transitionComplete,this,e,r,a,i);r&&a?t(r).one(o.TRANSITION_END,s).emulateTransitionEnd(150):s(),r&&t(r).removeClass(u.IN)},e.prototype._transitionComplete=function(e,n,i,r){if(n){t(n).removeClass(u.ACTIVE);var a=t(n).find(c.DROPDOWN_ACTIVE_CHILD)[0];a&&t(a).removeClass(u.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(u.ACTIVE),e.setAttribute("aria-expanded",!0),i?(o.reflow(e),t(e).addClass(u.IN)):t(e).removeClass(u.FADE),e.parentNode&&t(e.parentNode).hasClass(u.DROPDOWN_MENU)){var s=t(e).closest(c.DROPDOWN)[0];s&&t(s).find(c.DROPDOWN_TOGGLE).addClass(u.ACTIVE),e.setAttribute("aria-expanded",!0)}r&&r()},e._jQueryInterface=function(n){return this.each(function(){var r=t(this),o=r.data(i);if(o||(o=o=new e(this),r.data(i,o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},r(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.5"}}]),e}();t(document).on(l.CLICK_DATA_API,c.DATA_TOGGLE,function(e){e.preventDefault(),f._jQueryInterface.call(t(this),"show")}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=s,f._jQueryInterface}}(jQuery),function(t){if(void 0===window.Tether)throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");var e="tooltip",a="bs.tooltip",s="."+a,l=t.fn[e],u={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[]},c={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"},f={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},d={IN:"in",OUT:"out"},p={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,INSERTED:"inserted"+s,CLICK:"click"+s,FOCUSIN:"focusin"+s,FOCUSOUT:"focusout"+s,MOUSEENTER:"mouseenter"+s,MOUSELEAVE:"mouseleave"+s},h={FADE:"fade",IN:"in"},m={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},g={element:!1,enabled:!1},v={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},y=function(){function l(t,e){n(this,l),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return l.prototype.enable=function(){this._isEnabled=!0},l.prototype.disable=function(){this._isEnabled=!1},l.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},l.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(h.IN))return void this._leave(null,this);this._enter(null,this)}},l.prototype.dispose=function(){clearTimeout(this._timeout),this.cleanupTether(),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),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},l.prototype.show=function(){var e=this,n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var r=this.getTipElement(),a=o.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&t(r).addClass(h.FADE);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);t(r).data(this.constructor.DATA_KEY,this).appendTo(document.body),t(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:u,element:r,target:this.element,classes:g,classPrefix:"bs-tether",offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),o.reflow(r),this._tether.position(),t(r).addClass(h.IN);var c=function(){var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d.OUT&&e._leave(null,e)};if(o.supportsTransitionEnd()&&t(this.tip).hasClass(h.FADE))return void t(this.tip).one(o.TRANSITION_END,c).emulateTransitionEnd(l._TRANSITION_DURATION);c()}},l.prototype.hide=function(e){var n=this,i=this.getTipElement(),r=t.Event(this.constructor.Event.HIDE),a=function(){n._hoverState!==d.IN&&i.parentNode&&i.parentNode.removeChild(i),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),n.cleanupTether(),e&&e()};t(this.element).trigger(r),r.isDefaultPrevented()||(t(i).removeClass(h.IN),o.supportsTransitionEnd()&&t(this.tip).hasClass(h.FADE)?t(i).one(o.TRANSITION_END,a).emulateTransitionEnd(150):a(),this._hoverState="")},l.prototype.isWithContent=function(){return Boolean(this.getTitle())},l.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},l.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m.TOOLTIP_INNER),this.getTitle()),e.removeClass(h.FADE).removeClass(h.IN),this.cleanupTether()},l.prototype.setElementContent=function(e,n){var r=this.config.html;"object"===(void 0===n?"undefined":i(n))&&(n.nodeType||n.jquery)?r?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[r?"html":"text"](n)},l.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},l.prototype.cleanupTether=function(){this._tether&&this._tether.destroy()},l.prototype._getAttachment=function(t){return f[t.toUpperCase()]},l.prototype._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,t.proxy(e.toggle,e));else if(n!==v.MANUAL){var i=n===v.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,r=n===v.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,t.proxy(e._enter,e)).on(r,e.config.selector,t.proxy(e._leave,e))}}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},l.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",""))},l.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?v.FOCUS:v.HOVER]=!0),t(n.getTipElement()).hasClass(h.IN)||n._hoverState===d.IN?void(n._hoverState=d.IN):(clearTimeout(n._timeout),n._hoverState=d.IN,n.config.delay&&n.config.delay.show?void(n._timeout=setTimeout(function(){n._hoverState===d.IN&&n.show()},n.config.delay.show)):void n.show())},l.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?v.FOCUS:v.HOVER]=!1),!n._isWithActiveTrigger())return clearTimeout(n._timeout),n._hoverState=d.OUT,n.config.delay&&n.config.delay.hide?void(n._timeout=setTimeout(function(){n._hoverState===d.OUT&&n.hide()},n.config.delay.hide)):void n.hide()},l.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},l.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}),o.typeCheckConfig(e,n,this.constructor.DefaultType),n},l.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},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(a),r="object"===(void 0===e?"undefined":i(e))?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new l(this,r),t(this).data(a,n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},r(l,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.5"}},{key:"Default",get:function(){return u}},{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 s}},{key:"DefaultType",get:function(){return c}}]),l}();return t.fn[e]=y._jQueryInterface,t.fn[e].Constructor=y,t.fn[e].noConflict=function(){return t.fn[e]=l,y._jQueryInterface},y}(jQuery));!function(o){var s="popover",l="bs.popover",u="."+l,c=o.fn[s],f=o.extend({},a.Default,{placement:"right",trigger:"click",content:"",template:''}),d=o.extend({},a.DefaultType,{content:"(string|element|function)"}),p={FADE:"fade",IN:"in"},h={TITLE:".popover-title",CONTENT:".popover-content"},m={HIDE:"hide"+u,HIDDEN:"hidden"+u,SHOW:"show"+u,SHOWN:"shown"+u,INSERTED:"inserted"+u,CLICK:"click"+u,FOCUSIN:"focusin"+u,FOCUSOUT:"focusout"+u,MOUSEENTER:"mouseenter"+u,MOUSELEAVE:"mouseleave"+u},g=function(a){function c(){return n(this,c),t(this,a.apply(this,arguments))}return e(c,a),c.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},c.prototype.getTipElement=function(){return this.tip=this.tip||o(this.config.template)[0]},c.prototype.setContent=function(){var t=o(this.getTipElement());this.setElementContent(t.find(h.TITLE),this.getTitle()),this.setElementContent(t.find(h.CONTENT),this._getContent()),t.removeClass(p.FADE).removeClass(p.IN),this.cleanupTether()},c.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},c._jQueryInterface=function(t){return this.each(function(){var e=o(this).data(l),n="object"===(void 0===t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new c(this,n),o(this).data(l,e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},r(c,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.5"}},{key:"Default",get:function(){return f}},{key:"NAME",get:function(){return s}},{key:"DATA_KEY",get:function(){return l}},{key:"Event",get:function(){return m}},{key:"EVENT_KEY",get:function(){return u}},{key:"DefaultType",get:function(){return d}}]),c}(a);o.fn[s]=g._jQueryInterface,o.fn[s].Constructor=g,o.fn[s].noConflict=function(){return o.fn[s]=c,g._jQueryInterface}}(jQuery)}()},function(t,e,n){"use strict";function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function o(t){return"number"==typeof t}function a(t){return"object"==typeof t&&null!==t}function s(t){return void 0===t}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(t){if(!o(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},i.prototype.emit=function(t){var e,n,i,o,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(n=this._events[t],s(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:o=Array.prototype.slice.call(arguments,1),n.apply(this,o)}else if(a(n))for(o=Array.prototype.slice.call(arguments,1),u=n.slice(),i=u.length,l=0;l0&&this._events[t].length>n&&(this._events[t].warned=!0,console.trace),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},i.prototype.removeListener=function(t,e){var n,i,o,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],o=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(n)){for(s=o;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},i.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},i.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},i.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},i.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){"use strict";var i,i;!function(e){t.exports=e()}(function(){return function t(e,n,r){function o(s,l){if(!n[s]){if(!e[s]){var u="function"==typeof i&&i;if(!l&&u)return i(s,!0);if(a)return a(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[s]={exports:{}};e[s][0].call(f.exports,function(t){var n=e[s][1][t];return o(n||t)},f,f.exports,t,e,n,r)}return n[s].exports}for(var a="function"==typeof i&&i,s=0;s1&&"flex-start"===t.style.alignContent)for(e=0;i=t.lines[++r];)i.crossStart=e,e+=i.cross;else if(t.lines.length>1&&"flex-end"===t.style.alignContent)for(e=t.flexStyle.crossSpace;i=t.lines[++r];)i.crossStart=e,e+=i.cross;else if(t.lines.length>1&&"center"===t.style.alignContent)for(e=t.flexStyle.crossSpace/2;i=t.lines[++r];)i.crossStart=e,e+=i.cross;else if(t.lines.length>1&&"space-between"===t.style.alignContent)for(n=t.flexStyle.crossSpace/(t.lines.length-1),e=0;i=t.lines[++r];)i.crossStart=e,e+=i.cross+n;else if(t.lines.length>1&&"space-around"===t.style.alignContent)for(n=2*t.flexStyle.crossSpace/(2*t.lines.length),e=n/2;i=t.lines[++r];)i.crossStart=e,e+=i.cross+n;else for(n=t.flexStyle.crossSpace/t.lines.length,e=t.flexStyle.crossInnerBefore;i=t.lines[++r];)i.crossStart=e,i.cross+=n,e+=i.cross}},{}],2:[function(t,e,n){e.exports=function(t){for(var e,n=-1;line=t.lines[++n];)for(e=-1;child=line.children[++e];){var i=child.style.alignSelf;"auto"===i&&(i=t.style.alignItems),"flex-start"===i?child.flexStyle.crossStart=line.crossStart:"flex-end"===i?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===i?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(t,e,n){e.exports=function(t,e){var n="row"===e||"row-reverse"===e,i=t.mainAxis;if(i){n&&"inline"===i||!n&&"block"===i||(t.flexStyle={main:t.flexStyle.cross,cross:t.flexStyle.main,mainOffset:t.flexStyle.crossOffset,crossOffset:t.flexStyle.mainOffset,mainBefore:t.flexStyle.crossBefore,mainAfter:t.flexStyle.crossAfter,crossBefore:t.flexStyle.mainBefore,crossAfter:t.flexStyle.mainAfter,mainInnerBefore:t.flexStyle.crossInnerBefore,mainInnerAfter:t.flexStyle.crossInnerAfter,crossInnerBefore:t.flexStyle.mainInnerBefore,crossInnerAfter:t.flexStyle.mainInnerAfter,mainBorderBefore:t.flexStyle.crossBorderBefore,mainBorderAfter:t.flexStyle.crossBorderAfter,crossBorderBefore:t.flexStyle.mainBorderBefore,crossBorderAfter:t.flexStyle.mainBorderAfter})}else t.flexStyle=n?{main:t.style.width,cross:t.style.height,mainOffset:t.style.offsetWidth,crossOffset:t.style.offsetHeight,mainBefore:t.style.marginLeft,mainAfter:t.style.marginRight,crossBefore:t.style.marginTop,crossAfter:t.style.marginBottom,mainInnerBefore:t.style.paddingLeft,mainInnerAfter:t.style.paddingRight,crossInnerBefore:t.style.paddingTop,crossInnerAfter:t.style.paddingBottom,mainBorderBefore:t.style.borderLeftWidth,mainBorderAfter:t.style.borderRightWidth,crossBorderBefore:t.style.borderTopWidth,crossBorderAfter:t.style.borderBottomWidth}:{main:t.style.height,cross:t.style.width,mainOffset:t.style.offsetHeight,crossOffset:t.style.offsetWidth,mainBefore:t.style.marginTop,mainAfter:t.style.marginBottom,crossBefore:t.style.marginLeft,crossAfter:t.style.marginRight,mainInnerBefore:t.style.paddingTop,mainInnerAfter:t.style.paddingBottom,crossInnerBefore:t.style.paddingLeft,crossInnerAfter:t.style.paddingRight,mainBorderBefore:t.style.borderTopWidth,mainBorderAfter:t.style.borderBottomWidth,crossBorderBefore:t.style.borderLeftWidth,crossBorderAfter:t.style.borderRightWidth},"content-box"===t.style.boxSizing&&("number"==typeof t.flexStyle.main&&(t.flexStyle.main+=t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),"number"==typeof t.flexStyle.cross&&(t.flexStyle.cross+=t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter));t.mainAxis=n?"inline":"block",t.crossAxis=n?"block":"inline","number"==typeof t.style.flexBasis&&(t.flexStyle.main=t.style.flexBasis+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),t.flexStyle.mainOuter=t.flexStyle.main,t.flexStyle.crossOuter=t.flexStyle.cross,"auto"===t.flexStyle.mainOuter&&(t.flexStyle.mainOuter=t.flexStyle.mainOffset),"auto"===t.flexStyle.crossOuter&&(t.flexStyle.crossOuter=t.flexStyle.crossOffset),"number"==typeof t.flexStyle.mainBefore&&(t.flexStyle.mainOuter+=t.flexStyle.mainBefore),"number"==typeof t.flexStyle.mainAfter&&(t.flexStyle.mainOuter+=t.flexStyle.mainAfter),"number"==typeof t.flexStyle.crossBefore&&(t.flexStyle.crossOuter+=t.flexStyle.crossBefore),"number"==typeof t.flexStyle.crossAfter&&(t.flexStyle.crossOuter+=t.flexStyle.crossAfter)}},{}],4:[function(t,e,n){var i=t("../reduce");e.exports=function(t){if(t.mainSpace>0){var e=i(t.children,function(t,e){return t+parseFloat(e.style.flexGrow)},0);e>0&&(t.main=i(t.children,function(n,i){return"auto"===i.flexStyle.main?i.flexStyle.main=i.flexStyle.mainOffset+parseFloat(i.style.flexGrow)/e*t.mainSpace:i.flexStyle.main+=parseFloat(i.style.flexGrow)/e*t.mainSpace,i.flexStyle.mainOuter=i.flexStyle.main+i.flexStyle.mainBefore+i.flexStyle.mainAfter,n+i.flexStyle.mainOuter},0),t.mainSpace=0)}}},{"../reduce":12}],5:[function(t,e,n){var i=t("../reduce");e.exports=function(t){if(t.mainSpace<0){var e=i(t.children,function(t,e){return t+parseFloat(e.style.flexShrink)},0);e>0&&(t.main=i(t.children,function(n,i){return i.flexStyle.main+=parseFloat(i.style.flexShrink)/e*t.mainSpace,i.flexStyle.mainOuter=i.flexStyle.main+i.flexStyle.mainBefore+i.flexStyle.mainAfter,n+i.flexStyle.mainOuter},0),t.mainSpace=0)}}},{"../reduce":12}],6:[function(t,e,n){var i=t("../reduce");e.exports=function(t){var e;t.lines=[e={main:0,cross:0,children:[]}];for(var n,r=-1;n=t.children[++r];)"nowrap"===t.style.flexWrap||0===e.children.length||"auto"===t.flexStyle.main||t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter>=e.main+n.flexStyle.mainOuter?(e.main+=n.flexStyle.mainOuter,e.cross=Math.max(e.cross,n.flexStyle.crossOuter)):t.lines.push(e={main:n.flexStyle.mainOuter,cross:n.flexStyle.crossOuter,children:[]}),e.children.push(n);t.flexStyle.mainLines=i(t.lines,function(t,e){return Math.max(t,e.main)},0),t.flexStyle.crossLines=i(t.lines,function(t,e){return t+e.cross},0),"auto"===t.flexStyle.main&&(t.flexStyle.main=Math.max(t.flexStyle.mainOffset,t.flexStyle.mainLines+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter)),"auto"===t.flexStyle.cross&&(t.flexStyle.cross=Math.max(t.flexStyle.crossOffset,t.flexStyle.crossLines+t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter)),t.flexStyle.crossSpace=t.flexStyle.cross-t.flexStyle.crossInnerBefore-t.flexStyle.crossInnerAfter-t.flexStyle.crossBorderBefore-t.flexStyle.crossBorderAfter-t.flexStyle.crossLines,t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter,t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}},{"../reduce":12}],7:[function(t,e,n){function i(e){for(var n,i=-1;n=e.children[++i];)t("./flex-direction")(n,e.style.flexDirection);t("./flex-direction")(e,e.style.flexDirection),t("./order")(e),t("./flexbox-lines")(e),t("./align-content")(e),i=-1;for(var r;r=e.lines[++i];)r.mainSpace=e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter-r.main,t("./flex-grow")(r),t("./flex-shrink")(r),t("./margin-main")(r),t("./margin-cross")(r),t("./justify-content")(r,e.style.justifyContent,e);t("./align-items")(e)}e.exports=i},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(t,e,n){e.exports=function(t,e,n){var i,r,o,a=n.flexStyle.mainInnerBefore,s=-1;if("flex-end"===e)for(i=t.mainSpace,i+=a;o=t.children[++s];)o.flexStyle.mainStart=i,i+=o.flexStyle.mainOuter;else if("center"===e)for(i=t.mainSpace/2,i+=a;o=t.children[++s];)o.flexStyle.mainStart=i,i+=o.flexStyle.mainOuter;else if("space-between"===e)for(r=t.mainSpace/(t.children.length-1),i=0,i+=a;o=t.children[++s];)o.flexStyle.mainStart=i,i+=o.flexStyle.mainOuter+r;else if("space-around"===e)for(r=2*t.mainSpace/(2*t.children.length),i=r/2,i+=a;o=t.children[++s];)o.flexStyle.mainStart=i,i+=o.flexStyle.mainOuter+r;else for(i=0,i+=a;o=t.children[++s];)o.flexStyle.mainStart=i,i+=o.flexStyle.mainOuter}},{}],9:[function(t,e,n){e.exports=function(t){for(var e,n=-1;e=t.children[++n];){var i=0;"auto"===e.flexStyle.crossBefore&&++i,"auto"===e.flexStyle.crossAfter&&++i;var r=t.cross-e.flexStyle.crossOuter;"auto"===e.flexStyle.crossBefore&&(e.flexStyle.crossBefore=r/i),"auto"===e.flexStyle.crossAfter&&(e.flexStyle.crossAfter=r/i),"auto"===e.flexStyle.cross?e.flexStyle.crossOuter=e.flexStyle.crossOffset+e.flexStyle.crossBefore+e.flexStyle.crossAfter:e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}}},{}],10:[function(t,e,n){e.exports=function(t){for(var e,n=0,i=-1;e=t.children[++i];)"auto"===e.flexStyle.mainBefore&&++n,"auto"===e.flexStyle.mainAfter&&++n;if(n>0){for(i=-1;e=t.children[++i];)"auto"===e.flexStyle.mainBefore&&(e.flexStyle.mainBefore=t.mainSpace/n),"auto"===e.flexStyle.mainAfter&&(e.flexStyle.mainAfter=t.mainSpace/n),"auto"===e.flexStyle.main?e.flexStyle.mainOuter=e.flexStyle.mainOffset+e.flexStyle.mainBefore+e.flexStyle.mainAfter:e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter;t.mainSpace=0}}},{}],11:[function(t,e,n){var i=/^(column|row)-reverse$/;e.exports=function(t){t.children.sort(function(t,e){return t.style.order-e.style.order||t.index-e.index}),i.test(t.style.flexDirection)&&t.children.reverse()}},{}],12:[function(t,e,n){function i(t,e,n){for(var i=t.length,r=-1;++r=0)&&i.push(r)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function a(){C&&document.body.removeChild(C),C=null}function s(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var n=e.documentElement,i=r(t),o=I();return i.top-=o.top,i.left-=o.left,void 0===i.width&&(i.width=document.body.scrollWidth-i.left-i.right),void 0===i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-n.clientTop,i.left=i.left-n.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function l(t){return t.offsetParent||document.documentElement}function u(){if(O)return O;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");c(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;n===i&&(i=e.clientWidth),document.body.removeChild(e);var r=n-i;return O={width:r,height:r}}function c(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var n in e)({}).hasOwnProperty.call(e,n)&&(t[n]=e[n])}),t}function f(t,e){if(void 0!==t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var n=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=h(t).replace(n," ");m(t,i)}}function d(t,e){if(void 0!==t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{f(t,e);var n=h(t)+" "+e;m(t,n)}}function p(t,e){if(void 0!==t.classList)return t.classList.contains(e);var n=h(t);return new RegExp("(^| )"+e+"( |$)","gi").test(n)}function h(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function m(t,e){t.setAttribute("class",e)}function g(t,e,n){n.forEach(function(n){-1===e.indexOf(n)&&p(t,n)&&f(t,n)}),e.forEach(function(e){p(t,e)||d(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(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 y(t,e){var n=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+n>=e&&e>=t-n}function b(){return"undefined"!=typeof performance&&void 0!==performance.now?performance.now():+new Date}function _(){for(var t={top:0,left:0},e=arguments.length,n=Array(e),i=0;i1?n-1:0),r=1;r16)return e=Math.min(e-16,250),void(n=setTimeout(i,250));void 0!==t&&b()-t<10||(null!=n&&(clearTimeout(n),n=null),t=b(),R(),e=b()-t)};"undefined"!=typeof window&&void 0!==window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var M={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},W={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var n=t.left,i=t.top;return"auto"===n&&(n=M[e.left]),"auto"===i&&(i=H[e.top]),{left:n,top:i}},q=function(t){var e=t.left,n=t.top;return void 0!==W[t.left]&&(e=W[t.left]),void 0!==W[t.top]&&(n=W[t.top]),{left:e,top:n}},z=function(t){var e=t.split(" "),n=L(e,2);return{top:n[0],left:n[1]}},$=z,Q=function(t){function e(t){var n=this;i(this,e),j(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),F.push(this),this.history=[],this.setOptions(t,!1),E.modules.forEach(function(t){void 0!==t.initialize&&t.initialize.call(n)}),this.position()}return v(e,t),S(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return void 0!==e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,n=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=c(i,t);var r=this.options,a=r.element,s=r.target,l=r.targetModifier;if(this.element=a,this.target=s,this.targetModifier=l,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if(void 0===e[t])throw new Error("Tether Error: Both element and target must be defined");void 0!==e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),d(this.element,this.getClass("element")),!1!==this.options.addTargetClasses&&d(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=$(this.options.targetAttachment),this.attachment=$(this.options.attachment),this.offset=z(this.options.offset),this.targetOffset=z(this.options.targetOffset),void 0!==this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=o(this.target),!1!==this.options.enabled&&this.enable(n)}},{key:"getTargetBounds",value:function(){if(void 0===this.targetModifier)return s(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=s(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topn.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,o=0;r&&(o=15);var a=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-o,e={width:15,height:.975*a*(a/n.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},l=0;a<408&&this.target===document.body&&(l=-11e-5*Math.pow(a,2)-.00727*a+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var u=this.target.scrollTop/(n.scrollHeight-a);return e.top=u*(a-e.height-l)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return void 0===this._cache&&(this._cache={}),void 0===this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];!1!==this.options.addTargetClasses&&d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;f(this.target,this.getClass("enabled")),f(this.element,this.getClass("enabled")),this.enabled=!1,void 0!==this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),F.forEach(function(e,n){e===t&&F.splice(n,1)}),0===F.length&&a()}},{key:"updateAttachClasses",value:function(t,e){var n=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];void 0!==this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),void 0===this._addAttachClasses&&(this._addAttachClasses=[]);var r=this._addAttachClasses;t.top&&r.push(this.getClass("element-attached")+"-"+t.top),t.left&&r.push(this.getClass("element-attached")+"-"+t.left),e.top&&r.push(this.getClass("target-attached")+"-"+e.top),e.left&&r.push(this.getClass("target-attached")+"-"+e.left);var o=[];i.forEach(function(t){o.push(n.getClass("element-attached")+"-"+t),o.push(n.getClass("target-attached")+"-"+t)}),D(function(){void 0!==n._addAttachClasses&&(g(n.element,n._addAttachClasses,o),!1!==n.options.addTargetClasses&&g(n.target,n._addAttachClasses,o),delete n._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var n=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,n);var i=this.cache("element-bounds",function(){return s(t.element)}),r=i.width,o=i.height;if(0===r&&0===o&&void 0!==this.lastSize){var a=this.lastSize;r=a.width,o=a.height}else this.lastSize={width:r,height:o};var c=this.cache("target-bounds",function(){return t.getTargetBounds()}),f=c,d=x(q(this.attachment),{width:r,height:o}),p=x(q(n),f),h=x(this.offset,{width:r,height:o}),m=x(this.targetOffset,f);d=_(d,h),p=_(p,m);for(var g=c.left+p.left-d.left,v=c.top+p.top-d.top,y=0;yC.documentElement.clientHeight&&(A=this.cache("scrollbar-size",u),S.viewport.bottom-=A.height),T.innerWidth>C.documentElement.clientWidth&&(A=this.cache("scrollbar-size",u),S.viewport.right-=A.width),-1!==["","static"].indexOf(C.body.style.position)&&-1!==["","static"].indexOf(C.body.parentElement.style.position)||(S.page.bottom=C.body.scrollHeight-v-o,S.page.right=C.body.scrollWidth-g-r),void 0!==this.options.optimizations&&!1!==this.options.optimizations.moveElement&&void 0===this.targetModifier&&function(){var e=t.cache("target-offsetparent",function(){return l(t.target)}),n=t.cache("target-offsetparent-bounds",function(){return s(e)}),i=getComputedStyle(e),r=n,o={};if(["Top","Left","Bottom","Right"].forEach(function(t){o[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),n.right=C.body.scrollWidth-n.left-r.width+o.right,n.bottom=C.body.scrollHeight-n.top-r.height+o.bottom,S.page.top>=n.top+o.top&&S.page.bottom>=n.bottom&&S.page.left>=n.left+o.left&&S.page.right>=n.right){var a=e.scrollTop,u=e.scrollLeft;S.offset={top:S.page.top-n.top+a-o.top,left:S.page.left-n.left+u-o.left}}}(),this.move(S),this.history.unshift(S),this.history.length>3&&this.history.pop(),e&&N(),!0}}},{key:"move",value:function(t){var e=this;if(void 0!==this.element.parentNode){var n={};for(var i in t){n[i]={};for(var r in t[i]){for(var o=!1,a=0;a=0){var h=s.split(" "),g=L(h,2);f=g[0],c=g[1]}else c=f=s;var b=w(e,o);"target"!==f&&"both"!==f||(nb[3]&&"bottom"===v.top&&(n-=d,v.top="top")),"together"===f&&("top"===v.top&&("bottom"===y.top&&nb[3]&&n-(a-d)>=b[1]&&(n-=a-d,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&n+a>b[3]?(n-=d,v.top="top",n-=a,y.top="bottom"):"bottom"===y.top&&nb[3]&&"top"===y.top?(n-=a,y.top="bottom"):nb[2]&&"right"===v.left&&(i-=p,v.left="left")),"together"===c&&(ib[2]&&"right"===v.left?"left"===y.left?(i-=p,v.left="left",i-=l,y.left="right"):"right"===y.left&&(i-=p,v.left="left",i+=l,y.left="left"):"center"===v.left&&(i+l>b[2]&&"left"===y.left?(i-=l,y.left="right"):ib[3]&&"top"===y.top&&(n-=a,y.top="bottom")),"element"!==c&&"both"!==c||(ib[2]&&("left"===y.left?(i-=l,y.left="right"):"center"===y.left&&(i-=l/2,y.left="right"))),"string"==typeof u?u=u.split(",").map(function(t){return t.trim()}):!0===u&&(u=["top","left","right","bottom"]),u=u||[];var _=[],x=[];n=0?(n=b[1],_.push("top")):x.push("top")),n+a>b[3]&&(u.indexOf("bottom")>=0?(n=b[3]-a,_.push("bottom")):x.push("bottom")),i=0?(i=b[0],_.push("left")):x.push("left")),i+l>b[2]&&(u.indexOf("right")>=0?(i=b[2]-l,_.push("right")):x.push("right")),_.length&&function(){var t=void 0;t=void 0!==e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),m.push(t),_.forEach(function(e){m.push(t+"-"+e)})}(),x.length&&function(){var t=void 0;t=void 0!==e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),m.push(t),x.forEach(function(e){m.push(t+"-"+e)})}(),(_.indexOf("left")>=0||_.indexOf("right")>=0)&&(y.left=v.left=!1),(_.indexOf("top")>=0||_.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===r.top&&v.left===r.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),D(function(){!1!==e.options.addTargetClasses&&g(e.target,m,h),g(e.element,m,h)}),{top:n,left:i}}});var B=E.Utils,s=B.getBounds,g=B.updateClasses,D=B.defer;E.modules.push({position:function(t){var e=this,n=t.top,i=t.left,r=this.cache("element-bounds",function(){return s(e.element)}),o=r.height,a=r.width,l=this.getTargetBounds(),u=n+o,c=i+a,f=[];n<=l.bottom&&u>=l.top&&["left","right"].forEach(function(t){var e=l[t];e!==i&&e!==c||f.push(t)}),i<=l.right&&c>=l.left&&["top","bottom"].forEach(function(t){var e=l[t];e!==n&&e!==u||f.push(t)});var d=[],p=[],h=["left","top","right","bottom"];return d.push(this.getClass("abutted")),h.forEach(function(t){d.push(e.getClass("abutted")+"-"+t)}),f.length&&p.push(this.getClass("abutted")),f.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),D(function(){!1!==e.options.addTargetClasses&&g(e.target,p,d),g(e.element,p,d)}),!0}});var L=function(){function t(t,e){var n=[],i=!0,r=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){r=!0,o=t}finally{try{!i&&s.return&&s.return()}finally{if(r)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return E.modules.push({position:function(t){var e=t.top,n=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:n}));var r=void 0,o=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var a=i,s=L(a,2);r=s[0],o=s[1],r=parseFloat(r,10),o=parseFloat(o,10)}else r=i.top,o=i.left;return e+=r,n+=o,{top:e,left:n}}}}),G})},function(t,e,n){"use strict";var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e,n){(function(e){t.exports=e.Tether=n(23)}).call(e,n(24))},function(t,e,n){n(5),t.exports=n(6)}]); \ No newline at end of file +(function(i,b){"use strict";function en(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var Et={exports:{}};Et.exports,function(l){function n(t){"@babel/helpers - typeof";return n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(w){return typeof w}:function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},n(t)}(function(t){n(l)==="object"&&l.exports?l.exports=function(w,s){return s===void 0&&(typeof window<"u"?s=i:s=i(w)),t(s),s}:t(jQuery)})(function(t){var w=0;t.fn.TouchSpin=function(s){var k={min:0,max:100,initval:"",replacementval:"",firstclickvalueifempty:null,step:1,decimals:0,stepinterval:100,forcestepdivisibility:"round",stepintervaldelay:500,verticalbuttons:!1,verticalup:"+",verticaldown:"−",verticalupclass:"",verticaldownclass:"",prefix:"",postfix:"",prefix_extraclass:"",postfix_extraclass:"",booster:!0,boostat:10,maxboostedstep:!1,mousewheel:!0,buttondown_class:"btn btn-primary",buttonup_class:"btn btn-primary",buttondown_txt:"−",buttonup_txt:"+",callback_before_calculation:function(p){return p},callback_after_calculation:function(p){return p}},C={min:"min",max:"max",initval:"init-val",replacementval:"replacement-val",firstclickvalueifempty:"first-click-value-if-empty",step:"step",decimals:"decimals",stepinterval:"step-interval",verticalbuttons:"vertical-buttons",verticalupclass:"vertical-up-class",verticaldownclass:"vertical-down-class",forcestepdivisibility:"force-step-divisibility",stepintervaldelay:"step-interval-delay",prefix:"prefix",postfix:"postfix",prefix_extraclass:"prefix-extra-class",postfix_extraclass:"postfix-extra-class",booster:"booster",boostat:"boostat",maxboostedstep:"max-boosted-step",mousewheel:"mouse-wheel",buttondown_class:"button-down-class",buttonup_class:"button-up-class",buttondown_txt:"button-down-txt",buttonup_txt:"button-up-txt"};return this.each(function(){var o,p=t(this),Q=p.data(),_,u,S,d,V,O,A,c,N,G,ie=0,ce=!1;Le();function Le(){if(!p.data("alreadyinitialized")){if(p.data("alreadyinitialized",!0),w+=1,p.data("spinnerid",w),!p.is("input")){console.log("Must be an input.");return}f(),Ue(),y(),Ae(),a(),z(),r(),F(),m(),x()}}function Ue(){o.initval!==""&&p.val()===""&&p.val(o.initval)}function be(g){qe(g),y();var q=d.input.val();q!==""&&(q=parseFloat(o.callback_before_calculation(d.input.val())),d.input.val(o.callback_after_calculation(parseFloat(q).toFixed(o.decimals))))}function f(){if(o=t.extend({},k,Q,Me(),s),parseFloat(o.step)!==1){var g;g=o.max%o.step,g!==0&&(o.max=parseFloat(o.max)-g),g=o.min%o.step,g!==0&&(o.min=parseFloat(o.min)+(parseFloat(o.step)-g))}}function Me(){var g={};return t.each(C,function(q,ee){var pe="bts-"+ee;p.is("[data-"+pe+"]")&&(g[q]=p.data(pe))}),t.each(["min","max","step"],function(q,ee){p.is("["+ee+"]")&&(g[ee]!==void 0&&console.warn('Both the "data-bts-'+ee+'" data attribute and the "'+ee+'" individual attribute were specified, the individual attribute will take precedence on: ',p),g[ee]=p.attr(ee))}),g}function ze(){var g=p.parent();Z(),p.off(".touchspin"),g.hasClass("bootstrap-touchspin-injected")?(p.siblings().remove(),p.unwrap()):(t(".bootstrap-touchspin-injected",g).remove(),g.removeClass("bootstrap-touchspin")),p.data("alreadyinitialized",!1)}function qe(g){if(o=t.extend({},o,g),g.postfix){var q=p.parent().find(".bootstrap-touchspin-postfix");q.length===0&&u.insertAfter(p),p.parent().find(".bootstrap-touchspin-postfix .input-group-text").text(g.postfix)}if(g.prefix){var ee=p.parent().find(".bootstrap-touchspin-prefix");ee.length===0&&_.insertBefore(p),p.parent().find(".bootstrap-touchspin-prefix .input-group-text").text(g.prefix)}r()}function Ae(){var g=p.val(),q=p.parent();g!==""&&(g=o.callback_before_calculation(g),g=o.callback_after_calculation(parseFloat(g).toFixed(o.decimals))),p.data("initvalue",g).val(g),p.addClass("form-control"),V=` + + + + + + + `),q.hasClass("input-group")?ft(q):e()}function ft(g){g.addClass("bootstrap-touchspin");var q=p.prev(),ee=p.next(),pe,Y,Pe=` + + `.concat(o.prefix,` + + `),Ne=` + + `.concat(o.postfix,` + + `);o.verticalbuttons?t(V).insertAfter(p):(q.hasClass("input-group-btn")||q.hasClass("input-group-prepend")?(pe=` + + `),q.append(pe)):(pe=` + + + + `),t(pe).insertBefore(p)),ee.hasClass("input-group-btn")||ee.hasClass("input-group-append")?(Y=` + + `),ee.prepend(Y)):(Y=` + + + + `),t(Y).insertAfter(p))),t(Pe).insertBefore(p),t(Ne).insertAfter(p),S=g}function e(){var g,q="";p.hasClass("input-sm")||p.hasClass("form-control-sm")?q="input-group-sm":(p.hasClass("input-lg")||p.hasClass("form-control-lg"))&&(q="input-group-lg"),o.verticalbuttons?g=` +
+ + `).concat(o.prefix,` + + + `).concat(o.postfix,` + + `).concat(V,` +
+ `):g=` +
+ + + + + `).concat(o.prefix,` + + + `).concat(o.postfix,` + + + + +
`),S=t(g).insertBefore(p),t(".bootstrap-touchspin-prefix",S).after(p),p.hasClass("input-sm")||p.hasClass("form-control-sm")?S.addClass("input-group-sm"):(p.hasClass("input-lg")||p.hasClass("form-control-lg"))&&S.addClass("input-group-lg")}function a(){d={down:t(".bootstrap-touchspin-down",S),up:t(".bootstrap-touchspin-up",S),input:t("input",S),prefix:t(".bootstrap-touchspin-prefix",S).addClass(o.prefix_extraclass),postfix:t(".bootstrap-touchspin-postfix",S).addClass(o.postfix_extraclass)}}function r(){o.prefix===""&&(_=d.prefix.detach()),o.postfix===""&&(u=d.postfix.detach())}function m(){p.on("keydown.touchspin",function(g){var q=g.keyCode||g.which;q===38?(ce!=="up"&&(D(),re()),g.preventDefault()):q===40?(ce!=="down"&&(U(),W()),g.preventDefault()):(q===9||q===13)&&y()}),p.on("keyup.touchspin",function(g){var q=g.keyCode||g.which;(q===38||q===40)&&Z()}),t(document).on("mousedown touchstart",function(g){t(g.target).is(p)||y()}),p.on("blur.touchspin",function(){y()}),d.down.on("keydown",function(g){var q=g.keyCode||g.which;(q===32||q===13)&&(ce!=="down"&&(U(),W()),g.preventDefault())}),d.down.on("keyup.touchspin",function(g){var q=g.keyCode||g.which;(q===32||q===13)&&Z()}),d.up.on("keydown.touchspin",function(g){var q=g.keyCode||g.which;(q===32||q===13)&&(ce!=="up"&&(D(),re()),g.preventDefault())}),d.up.on("keyup.touchspin",function(g){var q=g.keyCode||g.which;(q===32||q===13)&&Z()}),d.down.on("mousedown.touchspin",function(g){d.down.off("touchstart.touchspin"),!p.is(":disabled,[readonly]")&&(U(),W(),g.preventDefault(),g.stopPropagation())}),d.down.on("touchstart.touchspin",function(g){d.down.off("mousedown.touchspin"),!p.is(":disabled,[readonly]")&&(U(),W(),g.preventDefault(),g.stopPropagation())}),d.up.on("mousedown.touchspin",function(g){d.up.off("touchstart.touchspin"),!p.is(":disabled,[readonly]")&&(D(),re(),g.preventDefault(),g.stopPropagation())}),d.up.on("touchstart.touchspin",function(g){d.up.off("mousedown.touchspin"),!p.is(":disabled,[readonly]")&&(D(),re(),g.preventDefault(),g.stopPropagation())}),d.up.on("mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin",function(g){ce&&(g.stopPropagation(),Z())}),d.down.on("mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin",function(g){ce&&(g.stopPropagation(),Z())}),d.down.on("mousemove.touchspin touchmove.touchspin",function(g){ce&&(g.stopPropagation(),g.preventDefault())}),d.up.on("mousemove.touchspin touchmove.touchspin",function(g){ce&&(g.stopPropagation(),g.preventDefault())}),p.on("mousewheel.touchspin DOMMouseScroll.touchspin",function(g){if(!(!o.mousewheel||!p.is(":focus"))){var q=g.originalEvent.wheelDelta||-g.originalEvent.deltaY||-g.originalEvent.detail;g.stopPropagation(),g.preventDefault(),q<0?U():D()}})}function x(){p.on("touchspin.destroy",function(){ze()}),p.on("touchspin.uponce",function(){Z(),D()}),p.on("touchspin.downonce",function(){Z(),U()}),p.on("touchspin.startupspin",function(){re()}),p.on("touchspin.startdownspin",function(){W()}),p.on("touchspin.stopspin",function(){Z()}),p.on("touchspin.updatesettings",function(g,q){be(q)})}function F(){if(typeof MutationObserver<"u"){var g=new MutationObserver(function(q){q.forEach(function(ee){ee.type==="attributes"&&(ee.attributeName==="disabled"||ee.attributeName==="readonly")&&z()})});g.observe(p[0],{attributes:!0})}}function T(g){switch(o.forcestepdivisibility){case"round":return(Math.round(g/o.step)*o.step).toFixed(o.decimals);case"floor":return(Math.floor(g/o.step)*o.step).toFixed(o.decimals);case"ceil":return(Math.ceil(g/o.step)*o.step).toFixed(o.decimals);default:return g.toFixed(o.decimals)}}function y(){var g,q,ee;if(g=o.callback_before_calculation(p.val()),g===""){o.replacementval!==""&&(p.val(o.replacementval),p.trigger("change"));return}o.decimals>0&&g==="."||(q=parseFloat(g),isNaN(q)&&(o.replacementval!==""?q=o.replacementval:q=0),ee=q,q.toString()!==g&&(ee=q),ee=T(q),o.min!==null&&qo.max&&(ee=o.max),parseFloat(q).toString()!==parseFloat(ee).toString()&&p.val(ee),p.val(o.callback_after_calculation(parseFloat(ee).toFixed(o.decimals))))}function E(){if(o.booster){var g=Math.pow(2,Math.floor(ie/o.boostat))*o.step;return o.maxboostedstep&&g>o.maxboostedstep&&(g=o.maxboostedstep,O=Math.round(O/g)*g),Math.max(o.step,g)}else return o.step}function I(){return typeof o.firstclickvalueifempty=="number"?o.firstclickvalueifempty:(o.min+o.max)/2}function z(){var g=p.is(":disabled,[readonly]");d.up.prop("disabled",g),d.down.prop("disabled",g),g&&Z()}function D(){if(!p.is(":disabled,[readonly]")){y(),O=parseFloat(o.callback_before_calculation(d.input.val()));var g=O,q;isNaN(O)?O=I():(q=E(),O=O+q),o.max!==null&&O>=o.max&&(O=o.max,p.trigger("touchspin.on.max"),Z()),d.input.val(o.callback_after_calculation(parseFloat(O).toFixed(o.decimals))),g!==O&&p.trigger("change")}}function U(){if(!p.is(":disabled,[readonly]")){y(),O=parseFloat(o.callback_before_calculation(d.input.val()));var g=O,q;isNaN(O)?O=I():(q=E(),O=O-q),o.min!==null&&O<=o.min&&(O=o.min,p.trigger("touchspin.on.min"),Z()),d.input.val(o.callback_after_calculation(parseFloat(O).toFixed(o.decimals))),g!==O&&p.trigger("change")}}function W(){p.is(":disabled,[readonly]")||(Z(),ie=0,ce="down",p.trigger("touchspin.on.startspin"),p.trigger("touchspin.on.startdownspin"),N=setTimeout(function(){A=setInterval(function(){ie++,U()},o.stepinterval)},o.stepintervaldelay))}function re(){p.is(":disabled,[readonly]")||(Z(),ie=0,ce="up",p.trigger("touchspin.on.startspin"),p.trigger("touchspin.on.startupspin"),G=setTimeout(function(){c=setInterval(function(){ie++,D()},o.stepinterval)},o.stepintervaldelay))}function Z(){switch(clearTimeout(N),clearTimeout(G),clearInterval(A),clearInterval(c),ce){case"up":p.trigger("touchspin.on.stopupspin"),p.trigger("touchspin.on.stopspin");break;case"down":p.trigger("touchspin.on.stopdownspin"),p.trigger("touchspin.on.stopspin");break}ie=0,ce=!1}})}})}(Et),Et.exports;var tn={exports:{}};/*! + * @fileOverview TouchSwipe - jQuery Plugin + * @version 1.6.18 + * + * @author Matt Bryson http://www.github.com/mattbryson + * @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin + * @see http://labs.rampinteractive.co.uk/touchSwipe/ + * @see http://plugins.jquery.com/project/touchSwipe + * @license + * Copyright (c) 2010-2015 Matt Bryson + * Dual licensed under the MIT or GPL Version 2 licenses. + * + */(function(l){(function(n){n(l.exports?i:jQuery)})(function(n){function t(e){return!e||e.allowPageScroll!==void 0||e.swipe===void 0&&e.swipeStatus===void 0||(e.allowPageScroll=u),e.click!==void 0&&e.tap===void 0&&(e.tap=e.click),e||(e={}),e=n.extend({},n.fn.swipe.defaults,e),this.each(function(){var a=n(this),r=a.data(Ae);r||(r=new w(this,e),a.data(Ae,r))})}function w(e,v){function r(h){if(!(Be()||n(h.target).closest(v.excludedElements,R).length>0)){var L=h.originalEvent?h.originalEvent:h;if(!L.pointerType||L.pointerType!="mouse"||v.fallbackToMouseEvents!=0){var j,J=L.touches,ve=J?J[0]:L;return X=Le,J?oe=J.length:v.preventDefaultEvents!==!1&&h.preventDefault(),le=0,ge=null,de=null,Se=null,ue=0,Ve=0,Ye=0,xe=1,Te=0,Ze=At(),te(),Qe(0,ve),!J||oe===v.fingers||v.fingers===ie||q()?(De=nt(),oe==2&&(Qe(1,J[1]),Ve=Ye=pt(B[0].start,B[1].start)),(v.swipeStatus||v.pinchStatus)&&(j=I(L,X))):j=!1,j===!1?(X=f,I(L,X),j):(v.hold&&(rt=setTimeout(n.proxy(function(){R.trigger("hold",[L.target]),v.hold&&(j=v.hold.call(R,L,L.target))},this),v.longTapThreshold)),tt(!0),null)}}}function m(h){var L=h.originalEvent?h.originalEvent:h;if(X!==be&&X!==f&&!me()){var j,J=L.touches,ve=J?J[0]:L,we=vt(ve);if(Ge=nt(),J&&(oe=J.length),v.hold&&clearTimeout(rt),X=Ue,oe==2&&(Ve==0?(Qe(1,J[1]),Ve=Ye=pt(B[0].start,B[1].start)):(vt(J[1]),Ye=pt(B[0].end,B[1].end),Se=kt(B[0].end,B[1].end)),xe=ht(Ve,Ye),Te=Math.abs(Ve-Ye)),oe===v.fingers||v.fingers===ie||!J||q()){if(ge=wt(we.start,we.end),de=wt(we.last,we.end),Z(h,de),le=_t(we.start,we.end),ue=dt(),je(ge,le),j=I(L,X),!v.triggerOnTouchEnd||v.triggerOnTouchLeave){var Ke=!0;if(v.triggerOnTouchLeave){var Xe=Ct(this);Ke=at(we.end,Xe)}!v.triggerOnTouchEnd&&Ke?X=E(Ue):v.triggerOnTouchLeave&&!Ke&&(X=E(be)),X!=f&&X!=be||I(L,X)}}else X=f,I(L,X);j===!1&&(X=f,I(L,X))}}function x(h){var L=h.originalEvent?h.originalEvent:h,j=L.touches;if(j){if(j.length&&!me())return We(L),!0;if(j.length&&me())return!0}return me()&&(oe=gt),Ge=nt(),ue=dt(),U()||!D()?(X=f,I(L,X)):v.triggerOnTouchEnd||v.triggerOnTouchEnd===!1&&X===Ue?(v.preventDefaultEvents!==!1&&h.cancelable!==!1&&h.preventDefault(),X=be,I(L,X)):!v.triggerOnTouchEnd&&Oe()?(X=be,z(L,X,O)):X===Ue&&(X=f,I(L,X)),tt(!1),null}function F(){oe=0,Ge=0,De=0,Ve=0,Ye=0,xe=1,te(),tt(!1)}function T(h){var L=h.originalEvent?h.originalEvent:h;v.triggerOnTouchLeave&&(X=E(be),I(L,X))}function y(){R.off(ye,r),R.off(ne,F),R.off(Ee,m),R.off(K,x),ot&&R.off(ot,T),tt(!1)}function E(h){var L=h,j=re(),J=D(),ve=U();return!j||ve?L=f:!J||h!=Ue||v.triggerOnTouchEnd&&!v.triggerOnTouchLeave?!J&&h==be&&v.triggerOnTouchLeave&&(L=f):L=be,L}function I(h,L){var j,J=h.touches;return(Pe()||Y())&&(j=z(h,L,d)),(ee()||q())&&j!==!1&&(j=z(h,L,V)),_e()&&j!==!1?j=z(h,L,A):Ce()&&j!==!1?j=z(h,L,c):he()&&j!==!1&&(j=z(h,L,O)),L===f&&F(),L===be&&(J&&J.length||F()),j}function z(h,L,j){var J;if(j==d){if(R.trigger("swipeStatus",[L,ge||null,le||0,ue||0,oe,B,de]),v.swipeStatus&&(J=v.swipeStatus.call(R,h,L,ge||null,le||0,ue||0,oe,B,de),J===!1))return!1;if(L==be&&pe()){if(clearTimeout(Re),clearTimeout(rt),R.trigger("swipe",[ge,le,ue,oe,B,de]),v.swipe&&(J=v.swipe.call(R,h,ge,le,ue,oe,B,de),J===!1))return!1;switch(ge){case k:R.trigger("swipeLeft",[ge,le,ue,oe,B,de]),v.swipeLeft&&(J=v.swipeLeft.call(R,h,ge,le,ue,oe,B,de));break;case C:R.trigger("swipeRight",[ge,le,ue,oe,B,de]),v.swipeRight&&(J=v.swipeRight.call(R,h,ge,le,ue,oe,B,de));break;case o:R.trigger("swipeUp",[ge,le,ue,oe,B,de]),v.swipeUp&&(J=v.swipeUp.call(R,h,ge,le,ue,oe,B,de));break;case p:R.trigger("swipeDown",[ge,le,ue,oe,B,de]),v.swipeDown&&(J=v.swipeDown.call(R,h,ge,le,ue,oe,B,de))}}}if(j==V){if(R.trigger("pinchStatus",[L,Se||null,Te||0,ue||0,oe,xe,B]),v.pinchStatus&&(J=v.pinchStatus.call(R,h,L,Se||null,Te||0,ue||0,oe,xe,B),J===!1))return!1;if(L==be&&g())switch(Se){case Q:R.trigger("pinchIn",[Se||null,Te||0,ue||0,oe,xe,B]),v.pinchIn&&(J=v.pinchIn.call(R,h,Se||null,Te||0,ue||0,oe,xe,B));break;case _:R.trigger("pinchOut",[Se||null,Te||0,ue||0,oe,xe,B]),v.pinchOut&&(J=v.pinchOut.call(R,h,Se||null,Te||0,ue||0,oe,xe,B))}}return j==O?L!==f&&L!==be||(clearTimeout(Re),clearTimeout(rt),ke()&&!P()?(Je=nt(),Re=setTimeout(n.proxy(function(){Je=null,R.trigger("tap",[h.target]),v.tap&&(J=v.tap.call(R,h,h.target))},this),v.doubleTapThreshold)):(Je=null,R.trigger("tap",[h.target]),v.tap&&(J=v.tap.call(R,h,h.target)))):j==A?L!==f&&L!==be||(clearTimeout(Re),clearTimeout(rt),Je=null,R.trigger("doubletap",[h.target]),v.doubleTap&&(J=v.doubleTap.call(R,h,h.target))):j==c&&(L!==f&&L!==be||(clearTimeout(Re),Je=null,R.trigger("longtap",[h.target]),v.longTap&&(J=v.longTap.call(R,h,h.target)))),J}function D(){var h=!0;return v.threshold!==null&&(h=le>=v.threshold),h}function U(){var h=!1;return v.cancelThreshold!==null&&ge!==null&&(h=Tt(ge)-le>=v.cancelThreshold),h}function W(){return v.pinchThreshold!==null?Te>=v.pinchThreshold:!0}function re(){return v.maxTimeThreshold?!(ue>=v.maxTimeThreshold):!0}function Z(h,L){if(v.preventDefaultEvents!==!1)if(v.allowPageScroll===u)h.preventDefault();else{var j=v.allowPageScroll===S;switch(L){case k:(v.swipeLeft&&j||!j&&v.allowPageScroll!=N)&&h.preventDefault();break;case C:(v.swipeRight&&j||!j&&v.allowPageScroll!=N)&&h.preventDefault();break;case o:(v.swipeUp&&j||!j&&v.allowPageScroll!=G)&&h.preventDefault();break;case p:(v.swipeDown&&j||!j&&v.allowPageScroll!=G)&&h.preventDefault();break}}}function g(){var h=Ne(),L=et(),j=W();return h&&L&&j}function q(){return!!(v.pinchStatus||v.pinchIn||v.pinchOut)}function ee(){return!(!g()||!q())}function pe(){var h=re(),L=D(),j=Ne(),J=et(),ve=U(),we=!ve&&J&&j&&L&&h;return we}function Y(){return!!(v.swipe||v.swipeStatus||v.swipeLeft||v.swipeRight||v.swipeUp||v.swipeDown)}function Pe(){return!(!pe()||!Y())}function Ne(){return oe===v.fingers||v.fingers===ie||!Me}function et(){return B[0].end.x!==0}function Oe(){return!!v.tap}function ke(){return!!v.doubleTap}function M(){return!!v.longTap}function H(){if(Je==null)return!1;var h=nt();return ke()&&h-Je<=v.doubleTapThreshold}function P(){return H()}function se(){return(oe===1||!Me)&&(isNaN(le)||lev.longTapThreshold&&ce>le}function he(){return!(!se()||!Oe())}function _e(){return!(!H()||!ke())}function Ce(){return!(!ae()||!M())}function We(h){it=nt(),gt=h.touches.length+1}function te(){it=0,gt=0}function me(){var h=!1;if(it){var L=nt()-it;L<=v.fingerReleaseThreshold&&(h=!0)}return h}function Be(){return R.data(Ae+"_intouch")===!0}function tt(h){R&&(h===!0?(R.on(Ee,m),R.on(K,x),ot&&R.on(ot,T)):(R.off(Ee,m,!1),R.off(K,x,!1),ot&&R.off(ot,T,!1)),R.data(Ae+"_intouch",h===!0))}function Qe(h,L){var j={start:{x:0,y:0},last:{x:0,y:0},end:{x:0,y:0}};return j.start.x=j.last.x=j.end.x=L.pageX||L.clientX,j.start.y=j.last.y=j.end.y=L.pageY||L.clientY,B[h]=j,j}function vt(h){var L=h.identifier!==void 0?h.identifier:0,j=bt(L);return j===null&&(j=Qe(L,h)),j.last.x=j.end.x,j.last.y=j.end.y,j.end.x=h.pageX||h.clientX,j.end.y=h.pageY||h.clientY,j}function bt(h){return B[h]||null}function je(h,L){h!=u&&(L=Math.max(L,Tt(h)),Ze[h].distance=L)}function Tt(h){return Ze[h]?Ze[h].distance:void 0}function At(){var h={};return h[k]=st(k),h[C]=st(C),h[o]=st(o),h[p]=st(p),h}function st(h){return{direction:h,distance:0}}function dt(){return Ge-De}function pt(h,L){var j=Math.abs(h.x-L.x),J=Math.abs(h.y-L.y);return Math.round(Math.sqrt(j*j+J*J))}function ht(h,L){var j=L/h*1;return j.toFixed(2)}function kt(){return 1>xe?_:Q}function _t(h,L){return Math.round(Math.sqrt(Math.pow(L.x-h.x,2)+Math.pow(L.y-h.y,2)))}function Pt(h,L){var j=h.x-L.x,J=L.y-h.y,ve=Math.atan2(J,j),we=Math.round(180*ve/Math.PI);return 0>we&&(we=360-Math.abs(we)),we}function wt(h,L){if(yt(h,L))return u;var j=Pt(h,L);return 45>=j&&j>=0||360>=j&&j>=315?k:j>=135&&225>=j?C:j>45&&135>j?p:o}function nt(){var h=new Date;return h.getTime()}function Ct(h){h=n(h);var L=h.offset(),j={left:L.left,right:L.left+h.outerWidth(),top:L.top,bottom:L.top+h.outerHeight()};return j}function at(h,L){return h.x>L.left&&h.xL.top&&h.y + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */const nn={template:"#password-feedback",hint:".js-hint-password",container:".password-strength-feedback",strengthText:".password-strength-text",requirementScore:".password-requirements-score",requirementLength:".password-requirements-length",requirementScoreIcon:".password-requirements-score i",requirementLengthIcon:".password-requirements-length i",progressBar:".progress-bar",inputColumn:".js-input-column"};b.themeSelectors={product:{tabs:".tabs .nav-link",activeNavClass:"js-product-nav-active",activeTabClass:"js-product-tab-active",activeTabs:".tabs .nav-link.active, .js-product-nav-active",imagesModal:".js-product-images-modal",thumb:".js-thumb",thumbContainer:".thumb-container, .js-thumb-container",arrows:".js-arrows",selected:".selected, .js-thumb-selected",modalProductCover:".js-modal-product-cover",cover:".js-qv-product-cover",customizationModal:".js-customization-modal"},listing:{searchFilterToggler:"#search_filter_toggler, .js-search-toggler",searchFiltersWrapper:"#search_filters_wrapper",searchFilterControls:"#search_filter_controls",searchFilters:"#search_filters",activeSearchFilters:"#js-active-search-filters",listTop:"#js-product-list-top",product:".js-product",list:"#js-product-list",listBottom:"#js-product-list-bottom",listHeader:"#js-product-list-header",searchFiltersClearAll:".js-search-filters-clear-all",searchLink:".js-search-link"},order:{returnForm:"#order-return-form, .js-order-return-form"},arrowDown:".arrow-down, .js-arrow-down",arrowUp:".arrow-up, .js-arrow-up",clear:".clear",fileInput:".js-file-input",contentWrapper:"#content-wrapper, .js-content-wrapper",footer:"#footer, .js-footer",modalContent:".js-modal-content",modal:"#modal, .js-checkout-modal",touchspin:".js-touchspin",checkout:{termsLink:".js-terms a",giftCheckbox:".js-gift-checkbox",imagesLink:".card-block .cart-summary-products p a, .js-show-details",carrierExtraContent:".carrier-extra-content, .js-carrier-extra-content",btn:".checkout a"},cart:{productLineQty:".js-cart-line-product-quantity",quickview:".quickview",touchspin:".bootstrap-touchspin",promoCode:"#promo-code",displayPromo:".display-promo",promoCodeButton:".promo-code-button",discountCode:".js-discount .code",discountName:"[name=discount_name]",actions:'[data-link-action="delete-from-cart"], [data-link-action="remove-voucher"]'},notifications:{dangerAlert:"#notifications article.alert-danger",container:"#notifications .notifications-container"},passwordPolicy:nn},i(document).ready(()=>{b.emit("themeSelectorsInit")});/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */b.responsive=b.responsive||{},b.responsive.current_width=window.innerWidth,b.responsive.min_width=768,b.responsive.mobile=b.responsive.current_width{const t=i(`#${n.id.replace("_desktop_","_mobile_")}`);t.length&&jt(i(n),t)}):i("*[id^='_mobile_']").each((l,n)=>{const t=i(`#${n.id.replace("_mobile_","_desktop_")}`);t.length&&jt(i(n),t)}),b.emit("responsive update",{mobile:b.responsive.mobile})}i(window).on("resize",()=>{const l=b.responsive.current_width,n=b.responsive.min_width,t=window.innerWidth,w=l>=n&&t=n;b.responsive.current_width=t,b.responsive.mobile=b.responsive.current_width{b.responsive.mobile&&It()});/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */function rn(){i(b.themeSelectors.checkout.termsLink).on("click",l=>{l.preventDefault();let n=i(l.target).attr("href");n&&(n+="?content_only=1",i.get(n,t=>{i(b.themeSelectors.modal).find(b.themeSelectors.modalContent).html(i(t).find(".page-cms").contents())}).fail(t=>{b.emit("handleError",{eventType:"clickTerms",resp:t})})),i(b.themeSelectors.modal).modal("show")}),i(b.themeSelectors.checkout.giftCheckbox).on("click",()=>{i("#gift").slideToggle()})}function on(){i(b.themeSelectors.checkout.imagesLink).on("click",function(){const l=i(this).find("i.material-icons");l.text()==="expand_more"?l.text("expand_less"):l.text("expand_more")})}i(document).ready(()=>{i("body#checkout").length===1&&(rn(),on()),b.on("updatedDeliveryForm",l=>{typeof l.deliveryOption>"u"||l.deliveryOption.length===0||(i(b.themeSelectors.checkout.carrierExtraContent).hide(),l.deliveryOption.next(b.themeSelectors.checkout.carrierExtraContent).slideDown())})});/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */function sn(){i(`${b.themeSelectors.order.returnForm} table thead input[type=checkbox]`).on("click",function(){const l=i(this).prop("checked");i(`${b.themeSelectors.order.returnForm} table tbody input[type=checkbox]`).each((n,t)=>{i(t).prop("checked",l)})})}function an(){i("body#order-detail")&&sn()}i(document).ready(an);var ln={exports:{}};/*! VelocityJS.org (1.5.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */(function(l){/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */(function(n){if(n.jQuery)return;var t=function(_,u){return new t.fn.init(_,u)};t.isWindow=function(_){return _&&_===_.window},t.type=function(_){return _?typeof _=="object"||typeof _=="function"?k[o.call(_)]||"object":typeof _:_+""},t.isArray=Array.isArray||function(_){return t.type(_)==="array"};function w(_){var u=_.length,S=t.type(_);return S==="function"||t.isWindow(_)?!1:_.nodeType===1&&u?!0:S==="array"||u===0||typeof u=="number"&&u>0&&u-1 in _}t.isPlainObject=function(_){var u;if(!_||t.type(_)!=="object"||_.nodeType||t.isWindow(_))return!1;try{if(_.constructor&&!C.call(_,"constructor")&&!C.call(_.constructor.prototype,"isPrototypeOf"))return!1}catch{return!1}for(u in _);return u===void 0||C.call(_,u)},t.each=function(_,u,S){var d,V=0,O=_.length,A=w(_);if(S){if(A)for(;V4;e--){var a=w.createElement("div");if(a.innerHTML="",a.getElementsByTagName("span").length)return a=null,e}return s}(),C=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(a){var r=new Date().getTime(),m;return m=Math.max(0,16-(r-e)),e=r+m,setTimeout(function(){a(r+m)},m)}}(),o=function(){var e=t.performance||{};if(typeof e.now!="function"){var a=e.timing&&e.timing.navigationStart?e.timing.navigationStart:new Date().getTime();e.now=function(){return new Date().getTime()-a}}return e}();function p(e){for(var a=-1,r=e?e.length:0,m=[];++a=0?r:Math.max(0,x+r),E=m<0?x+m:Math.min(m,x),I=E-y;if(I>0)if(T=new Array(I),this.charAt)for(F=0;F=0}:function(e,a){for(var r=0;r0?P=ae:H=ae;while(Math.abs(se)>T&&++he=F?ee(M,he):_e===0?he:Y(M,H,H+I)}var Ne=!1;function et(){Ne=!0,(e!==a||r!==m)&&pe()}var Oe=function(M){return Ne||et(),e===a&&r===m?M:M===0?0:M===1?1:g(Pe(M),a,m)};Oe.getControlPoints=function(){return[{x:e,y:a},{x:r,y:m}]};var ke="generateBezier("+[e,a,r,m]+")";return Oe.toString=function(){return ke},Oe}var Ue=function(){function e(m){return-m.tension*m.x-m.friction*m.v}function a(m,x,F){var T={x:m.x+F.dx*x,v:m.v+F.dv*x,tension:m.tension,friction:m.friction};return{dx:T.v,dv:e(T)}}function r(m,x){var F={dx:m.v,dv:e(m)},T=a(m,x*.5,F),y=a(m,x*.5,T),E=a(m,x,y),I=1/6*(F.dx+2*(T.dx+y.dx)+E.dx),z=1/6*(F.dv+2*(T.dv+y.dv)+E.dv);return m.x=m.x+I*x,m.v=m.v+z*x,m}return function m(x,F,T){var y={x:-1,v:0,tension:null,friction:null},E=[0],I=0,z=1/1e4,D=16/1e3,U,W,re;for(x=parseFloat(x)||500,F=parseFloat(F)||20,T=T||null,y.tension=x,y.friction=F,U=T!==null,U?(I=m(x,F),W=I/T*D):W=D;re=r(re||y,W),E.push(1+re.x),I+=16,Math.abs(re.x)>z&&Math.abs(re.v)>z;);return U?function(Z){return E[Z*(E.length-1)|0]}:I}}();c.Easings={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(e*4.5*Math.PI)*Math.exp(-e*6)}},d.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,a){c.Easings[a[0]]=Le.apply(null,a[1])});function be(e,a){var r=e;return S.isString(e)?c.Easings[e]||(r=!1):S.isArray(e)&&e.length===1?r=ce.apply(null,e):S.isArray(e)&&e.length===2?r=Ue.apply(null,e.concat([a])):S.isArray(e)&&e.length===4?r=Le.apply(null,e):r=!1,r===!1&&(c.Easings[c.defaults.easing]?r=c.defaults.easing:r=A),r}var f=c.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/ig},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],colorNames:{aliceblue:"240,248,255",antiquewhite:"250,235,215",aquamarine:"127,255,212",aqua:"0,255,255",azure:"240,255,255",beige:"245,245,220",bisque:"255,228,196",black:"0,0,0",blanchedalmond:"255,235,205",blueviolet:"138,43,226",blue:"0,0,255",brown:"165,42,42",burlywood:"222,184,135",cadetblue:"95,158,160",chartreuse:"127,255,0",chocolate:"210,105,30",coral:"255,127,80",cornflowerblue:"100,149,237",cornsilk:"255,248,220",crimson:"220,20,60",cyan:"0,255,255",darkblue:"0,0,139",darkcyan:"0,139,139",darkgoldenrod:"184,134,11",darkgray:"169,169,169",darkgrey:"169,169,169",darkgreen:"0,100,0",darkkhaki:"189,183,107",darkmagenta:"139,0,139",darkolivegreen:"85,107,47",darkorange:"255,140,0",darkorchid:"153,50,204",darkred:"139,0,0",darksalmon:"233,150,122",darkseagreen:"143,188,143",darkslateblue:"72,61,139",darkslategray:"47,79,79",darkturquoise:"0,206,209",darkviolet:"148,0,211",deeppink:"255,20,147",deepskyblue:"0,191,255",dimgray:"105,105,105",dimgrey:"105,105,105",dodgerblue:"30,144,255",firebrick:"178,34,34",floralwhite:"255,250,240",forestgreen:"34,139,34",fuchsia:"255,0,255",gainsboro:"220,220,220",ghostwhite:"248,248,255",gold:"255,215,0",goldenrod:"218,165,32",gray:"128,128,128",grey:"128,128,128",greenyellow:"173,255,47",green:"0,128,0",honeydew:"240,255,240",hotpink:"255,105,180",indianred:"205,92,92",indigo:"75,0,130",ivory:"255,255,240",khaki:"240,230,140",lavenderblush:"255,240,245",lavender:"230,230,250",lawngreen:"124,252,0",lemonchiffon:"255,250,205",lightblue:"173,216,230",lightcoral:"240,128,128",lightcyan:"224,255,255",lightgoldenrodyellow:"250,250,210",lightgray:"211,211,211",lightgrey:"211,211,211",lightgreen:"144,238,144",lightpink:"255,182,193",lightsalmon:"255,160,122",lightseagreen:"32,178,170",lightskyblue:"135,206,250",lightslategray:"119,136,153",lightsteelblue:"176,196,222",lightyellow:"255,255,224",limegreen:"50,205,50",lime:"0,255,0",linen:"250,240,230",magenta:"255,0,255",maroon:"128,0,0",mediumaquamarine:"102,205,170",mediumblue:"0,0,205",mediumorchid:"186,85,211",mediumpurple:"147,112,219",mediumseagreen:"60,179,113",mediumslateblue:"123,104,238",mediumspringgreen:"0,250,154",mediumturquoise:"72,209,204",mediumvioletred:"199,21,133",midnightblue:"25,25,112",mintcream:"245,255,250",mistyrose:"255,228,225",moccasin:"255,228,181",navajowhite:"255,222,173",navy:"0,0,128",oldlace:"253,245,230",olivedrab:"107,142,35",olive:"128,128,0",orangered:"255,69,0",orange:"255,165,0",orchid:"218,112,214",palegoldenrod:"238,232,170",palegreen:"152,251,152",paleturquoise:"175,238,238",palevioletred:"219,112,147",papayawhip:"255,239,213",peachpuff:"255,218,185",peru:"205,133,63",pink:"255,192,203",plum:"221,160,221",powderblue:"176,224,230",purple:"128,0,128",red:"255,0,0",rosybrown:"188,143,143",royalblue:"65,105,225",saddlebrown:"139,69,19",salmon:"250,128,114",sandybrown:"244,164,96",seagreen:"46,139,87",seashell:"255,245,238",sienna:"160,82,45",silver:"192,192,192",skyblue:"135,206,235",slateblue:"106,90,205",slategray:"112,128,144",snow:"255,250,250",springgreen:"0,255,127",steelblue:"70,130,180",tan:"210,180,140",teal:"0,128,128",thistle:"216,191,216",tomato:"255,99,71",turquoise:"64,224,208",violet:"238,130,238",wheat:"245,222,179",whitesmoke:"245,245,245",white:"255,255,255",yellowgreen:"154,205,50",yellow:"255,255,0"}},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=1?"":"alpha(opacity="+parseInt(parseFloat(r)*100,10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){(!k||k>9)&&!c.State.isGingerbread&&(f.Lists.transformsBase=f.Lists.transformsBase.concat(f.Lists.transforms3D));for(var e=0;e8)&&E.split(" ").length===3&&(E+=" 1"),E;case"inject":return/^rgb/.test(y)?y:(k<=8?y.split(" ").length===4&&(y=y.split(/\s+/).slice(0,3).join(" ")):y.split(" ").length===3&&(y+=" 1"),(k<=8?"rgb":"rgba")+"("+y.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")")}}})();function r(x,F,T){var y=f.getPropertyValue(F,"boxSizing").toString().toLowerCase()==="border-box";if(y===(T||!1)){var E,I,z=0,D=x==="width"?["Left","Right"]:["Top","Bottom"],U=["padding"+D[0],"padding"+D[1],"border"+D[0]+"Width","border"+D[1]+"Width"];for(E=0;E=2&&console.log("Get "+a+": "+F),F},setPropertyValue:function(e,a,r,m,x){var F=a;if(a==="scroll")x.container?x.container["scroll"+x.direction]=r:x.direction==="Left"?t.scrollTo(r,x.alternateValue):t.scrollTo(x.alternateValue,r);else if(f.Normalizations.registered[a]&&f.Normalizations.registered[a]("name",e)==="transform")f.Normalizations.registered[a]("inject",e,r),F="transform",r=N(e).transformCache[a];else{if(f.Hooks.registered[a]){var T=a,y=f.Hooks.getRoot(a);m=m||f.getPropertyValue(e,y),r=f.Hooks.injectValue(T,r,m),a=y}if(f.Normalizations.registered[a]&&(r=f.Normalizations.registered[a]("inject",e,r),a=f.Normalizations.registered[a]("name",e)),F=f.Names.prefixCheck(a)[0],k<=8)try{e.style[F]=r}catch{c.debug&&console.log("Browser does not support ["+r+"] for ["+F+"]")}else{var E=N(e);E&&E.isSVG&&f.Names.SVGAttribute(a)?e.setAttribute(a,r):e.style[F]=r}c.debug>=2&&console.log("Set "+a+" ("+F+"): "+r)}return[F,r]},flushTransformCache:function(e){var a="",r=N(e);if((k||c.State.isAndroid&&!c.State.isChrome)&&r&&r.isSVG){var m=function(y){return parseFloat(f.getPropertyValue(e,y))},x={translate:[m("translateX"),m("translateY")],skewX:[m("skewX")],skewY:[m("skewY")],scale:m("scale")!==1?[m("scale"),m("scale")]:[m("scaleX"),m("scaleY")],rotate:[m("rotateZ"),0,0]};d.each(N(e).transformCache,function(y){/^translate/i.test(y)?y="translate":/^scale/i.test(y)?y="scale":/^rotate/i.test(y)&&(y="rotate"),x[y]&&(a+=y+"("+x[y].join(" ")+") ",delete x[y])})}else{var F,T;d.each(N(e).transformCache,function(y){if(F=N(e).transformCache[y],y==="transformPerspective")return T=F,!0;k===9&&y==="rotateZ"&&(y="rotate"),a+=y+F+" "}),T&&(a="perspective"+T+" "+a)}f.setPropertyValue(e,"transform",a)}};f.Hooks.register(),f.Normalizations.register(),c.hook=function(e,a,r){var m;return e=u(e),d.each(e,function(x,F){if(N(F)===s&&c.init(F),r===s)m===s&&(m=f.getPropertyValue(F,a));else{var T=f.setPropertyValue(F,a,r);T[0]==="transform"&&c.CSS.flushTransformCache(F),m=T}}),m};var Me=function(){var e;function a(){return m?I.promise||null:x}var r=arguments[0]&&(arguments[0].p||d.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||S.isString(arguments[0].properties)),m,x,F,T,y,E;S.isWrapped(this)?(m=!1,F=0,T=this,x=this):(m=!0,F=1,T=r?arguments[0].elements||arguments[0].e:arguments[0]);var I={promise:null,resolver:null,rejecter:null};if(m&&c.Promise&&(I.promise=new c.Promise(function(M,H){I.resolver=M,I.rejecter=H})),r?(y=arguments[0].properties||arguments[0].p,E=arguments[0].options||arguments[0].o):(y=arguments[F],E=arguments[F+1]),T=u(T),!T){I.promise&&(!y||!E||E.promiseRejectEmpty!==!1?I.rejecter():I.resolver());return}var z=T.length,D=0;if(!/^(stop|finish|finishAll|pause|resume)$/i.test(y)&&!d.isPlainObject(E)){var U=F+1;E={};for(var W=U;W=4&&B==="("?R++:(R&&R<5||R>=4&&B===")"&&--R<5)&&(R=0),X===0&&B==="r"||X===1&&B==="g"||X===2&&B==="b"||X===3&&B==="a"||X>=3&&B==="("?(X===3&&B==="a"&&(oe=1),X++):oe&&B===","?++oe>3&&(X=oe=0):(oe&&X<(oe?5:4)||X>=(oe?4:3)&&B===")"&&--X<(oe?5:4))&&(X=oe=0);else{R=0;break}}(xe!==ne.length||Te!==K.length)&&(c.debug&&console.error('Trying to pattern match mis-matched strings ["'+K+'", "'+ne+'"]'),le=s),le&&(Se.length?(c.debug&&console.log('Pattern found "'+le+'" -> ',Se,Ze,"["+ne+","+K+"]"),ne=Se,K=Ze,de=ue=""):le=s)}le||(ge=Ye(v,ne),ne=ge[0],ue=ge[1],ge=Ye(v,K),K=ge[0].replace(/^([+-\/*])=/,function(ve,we){return Ve=we,""}),de=ge[1],ne=parseFloat(ne)||0,K=parseFloat(K)||0,de==="%"&&(/^(fontSize|lineHeight)$/.test(v)?(K=K/100,de="em"):/^scale/.test(v)?(K=K/100,de=""):/(Red|Green|Blue)$/i.test(v)&&(K=K/100*255,de="")));var j=function(){var ve={myParent:M.parentNode||w.body,position:f.getPropertyValue(M,"position"),fontSize:f.getPropertyValue(M,"fontSize")},we=ve.position===Y.lastPosition&&ve.myParent===Y.lastParent,Ke=ve.fontSize===Y.lastFontSize;Y.lastParent=ve.myParent,Y.lastPosition=ve.position,Y.lastFontSize=ve.fontSize;var Xe=100,Fe={};if(!Ke||!we){var Ie=te&&te.isSVG?w.createElementNS("http://www.w3.org/2000/svg","rect"):w.createElement("div");c.init(Ie),ve.myParent.appendChild(Ie),d.each(["overflow","overflowX","overflowY"],function(Tn,Nt){c.CSS.setPropertyValue(Ie,Nt,"hidden")}),c.CSS.setPropertyValue(Ie,"position",ve.position),c.CSS.setPropertyValue(Ie,"fontSize",ve.fontSize),c.CSS.setPropertyValue(Ie,"boxSizing","content-box"),d.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(Tn,Nt){c.CSS.setPropertyValue(Ie,Nt,Xe+"%")}),c.CSS.setPropertyValue(Ie,"paddingLeft",Xe+"em"),Fe.percentToPxWidth=Y.lastPercentToPxWidth=(parseFloat(f.getPropertyValue(Ie,"width",null,!0))||1)/Xe,Fe.percentToPxHeight=Y.lastPercentToPxHeight=(parseFloat(f.getPropertyValue(Ie,"height",null,!0))||1)/Xe,Fe.emToPx=Y.lastEmToPx=(parseFloat(f.getPropertyValue(Ie,"paddingLeft"))||1)/Xe,ve.myParent.removeChild(Ie)}else Fe.emToPx=Y.lastEmToPx,Fe.percentToPxWidth=Y.lastPercentToPxWidth,Fe.percentToPxHeight=Y.lastPercentToPxHeight;return Y.remToPx===null&&(Y.remToPx=parseFloat(f.getPropertyValue(w.body,"fontSize"))||16),Y.vwToPx===null&&(Y.vwToPx=parseFloat(t.innerWidth)/100,Y.vhToPx=parseFloat(t.innerHeight)/100),Fe.remToPx=Y.remToPx,Fe.vwToPx=Y.vwToPx,Fe.vhToPx=Y.vhToPx,c.debug>=1&&console.log("Unit ratios: "+JSON.stringify(Fe),M),Fe};if(/[\/*]/.test(Ve))de=ue;else if(ue!==de&&ne!==0)if(K===0)de=ue;else{ae=ae||j();var J=/margin|padding|left|right|width|text|word|letter/i.test(v)||/X$/.test(v)||v==="x"?"x":"y";switch(ue){case"%":ne*=J==="x"?ae.percentToPxWidth:ae.percentToPxHeight;break;case"px":break;default:ne*=ae[ue+"ToPx"]}switch(de){case"%":ne*=1/(J==="x"?ae.percentToPxWidth:ae.percentToPxHeight);break;case"px":break;default:ne*=1/ae[de+"ToPx"]}}switch(Ve){case"+":K=ne+K;break;case"-":K=ne-K;break;case"*":K=ne*K;break;case"/":K=ne/K;break}se[v]={rootPropertyValue:Ee,startValue:ne,currentValue:ne,endValue:K,unitType:de,easing:ot},le&&(se[v].pattern=le),c.debug&&console.log("tweensContainer ("+v+"): "+JSON.stringify(se[v]),M)};for(var dt in y)if(y.hasOwnProperty(dt)){var pt=f.Names.camelCase(dt),ht=At(y[dt]);if(_(f.Lists.colors)){var kt=ht[0],_t=ht[1],Pt=ht[2];if(f.RegEx.isHex.test(kt)){for(var wt=["Red","Green","Blue"],nt=f.Values.hexToRgb(kt),Ct=Pt?f.Values.hexToRgb(Pt):s,at=0;at1e4&&(c.State.calls=p(c.State.calls),r=c.State.calls.length);for(var m=0;m + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */function Lt(l,n){if(n===void 0)return;const t=i(l).siblings('source[type="image/webp"]'),w=i(l).siblings('source[type="image/avif"]');n.webp!==void 0&&t.length&&t.attr("srcset",n.webp),n.avif!==void 0&&w.length&&w.attr("srcset",n.avif)}/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */class qt{init(){i(".js-product-miniature").each((n,t)=>{if(i(t).find(".color").length>5){let w=0;i(t).find(".color").each((s,k)=>{s>4&&(i(k).hide(),w+=1)}),i(t).find(".js-count").append(`+${w}`)}})}}/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */i(document).ready(()=>{const l=s=>{const C=i(".js-qv-product-images"),o=i(".js-qv-product-images li img").height()+20,p=C.position().top;C.velocity({translateY:s==="up"?p+o:p-o},()=>{C.position().top>=0?i(".arrow-up").css("opacity",".2"):C.position().top+C.height()<=i(".js-qv-mask").height()&&i(".arrow-down").css("opacity",".2")})},n=s=>{const C=i(b.themeSelectors.product.arrows),o=s.find(".js-qv-product-images");i(b.themeSelectors.product.thumb).on("click",p=>{i(b.themeSelectors.product.thumb).hasClass("selected")&&i(b.themeSelectors.product.thumb).removeClass("selected"),i(p.currentTarget).addClass("selected"),i(b.themeSelectors.product.cover).attr("src",i(p.target).data("image-large-src")),i(b.themeSelectors.product.cover).attr("alt",i(p.target).attr("alt")),i(b.themeSelectors.product.cover).attr("title",i(p.target).attr("title")),Lt(i(b.themeSelectors.product.cover),i(p.target).data("image-large-sources"))}),o.find("li").length<=4?C.hide():C.on("click",p=>{i(p.target).hasClass("arrow-up")&&i(".js-qv-product-images").position().top<0?(l("up"),i(b.themeSelectors.arrowDown).css("opacity","1")):i(p.target).hasClass("arrow-down")&&o.position().top+o.height()>i(".js-qv-mask").height()&&(l("down"),i(b.themeSelectors.arrowUp).css("opacity","1"))}),s.find(b.selectors.quantityWanted).TouchSpin({verticalbuttons:!0,verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:1,max:1e6}),i(b.themeSelectors.touchspin).off("touchstart.touchspin")};b.on("clickQuickView",s=>{const k={action:"quickview",id_product:s.dataset.idProduct,id_product_attribute:s.dataset.idProductAttribute};i.post(b.urls.pages.product,k,null,"json").then(C=>{i("body").append(C.quickview_html);const o=i(`#quickview-modal-${C.product.id}-${C.product.id_product_attribute}`);o.modal("show"),n(o),o.on("hidden.bs.modal",()=>{o.remove()})}).fail(C=>{b.emit("handleError",{eventType:"clickQuickView",resp:C})})}),i("body").on("click",b.themeSelectors.listing.searchFilterToggler,()=>{i(b.themeSelectors.listing.searchFiltersWrapper).removeClass("hidden-sm-down"),i(b.themeSelectors.contentWrapper).addClass("hidden-sm-down"),i(b.themeSelectors.footer).addClass("hidden-sm-down")}),i(`${b.themeSelectors.listing.searchFilterControls} ${b.themeSelectors.clear}`).on("click",()=>{i(b.themeSelectors.listing.searchFiltersWrapper).addClass("hidden-sm-down"),i(b.themeSelectors.contentWrapper).removeClass("hidden-sm-down"),i(b.themeSelectors.footer).removeClass("hidden-sm-down")}),i(`${b.themeSelectors.listing.searchFilterControls} .ok`).on("click",()=>{i(b.themeSelectors.listing.searchFiltersWrapper).addClass("hidden-sm-down"),i(b.themeSelectors.contentWrapper).removeClass("hidden-sm-down"),i(b.themeSelectors.footer).removeClass("hidden-sm-down")});const t=function(s){if(s.target.dataset.searchUrl!==void 0)return s.target.dataset.searchUrl;if(i(s.target).parent()[0].dataset.searchUrl===void 0)throw new Error("Can not parse search URL");return i(s.target).parent()[0].dataset.searchUrl};function w(s){i(b.themeSelectors.listing.searchFilters).replaceWith(s.rendered_facets),i(b.themeSelectors.listing.activeSearchFilters).replaceWith(s.rendered_active_filters),i(b.themeSelectors.listing.listTop).replaceWith(s.rendered_products_top);const k=i(s.rendered_products),C=i(b.themeSelectors.listing.product);C.length>0?C.removeClass().addClass(C.first().attr("class")):C.removeClass().addClass(k.first().attr("class")),i(b.themeSelectors.listing.list).replaceWith(k),i(b.themeSelectors.listing.listBottom).replaceWith(s.rendered_products_bottom),s.rendered_products_header&&i(b.themeSelectors.listing.listHeader).replaceWith(s.rendered_products_header),new qt().init()}i("body").on("change",`${b.themeSelectors.listing.searchFilters} input[data-search-url]`,s=>{b.emit("updateFacets",t(s))}),i("body").on("click",b.themeSelectors.listing.searchFiltersClearAll,s=>{b.emit("updateFacets",t(s))}),i("body").on("click",b.themeSelectors.listing.searchLink,s=>{s.preventDefault(),b.emit("updateFacets",i(s.target).closest("a").get(0).href)}),window.addEventListener("popstate",s=>{s.state&&s.state.current_url&&(window.location.href=s.state.current_url)}),i("body").on("change",`${b.themeSelectors.listing.searchFilters} select`,s=>{const k=i(s.target).closest("form");b.emit("updateFacets",`?${k.serialize()}`)}),b.on("updateProductList",s=>{w(s),window.scrollTo(0,0)})});/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */class Ht{init(){const t=i(".js-modal-arrows"),w=i(".js-modal-product-images");i("body").on("click",".js-modal-thumb",s=>{i(".js-modal-thumb").hasClass("selected")&&i(".js-modal-thumb").removeClass("selected"),i(s.currentTarget).addClass("selected"),i(prestashop.themeSelectors.product.modalProductCover).attr("src",i(s.target).data("image-large-src")),i(prestashop.themeSelectors.product.modalProductCover).attr("title",i(s.target).attr("title")),i(prestashop.themeSelectors.product.modalProductCover).attr("alt",i(s.target).attr("alt"))}).on("click","aside#thumbnails",s=>{s.target.id==="thumbnails"&&i("#product-modal").modal("hide")}),i(".js-modal-product-images li").length<=5?t.css("opacity",".2"):t.on("click",s=>{i(s.target).hasClass("arrow-up")&&w.position().top<0?(this.move("up"),i(".js-modal-arrow-down").css("opacity","1")):i(s.target).hasClass("arrow-down")&&w.position().top+w.height()>i(".js-modal-mask").height()&&(this.move("down"),i(".js-modal-arrow-up").css("opacity","1"))})}move(n){const w=i(".js-modal-product-images"),s=i(".js-modal-product-images li img").height()+10,k=w.position().top;w.velocity({translateY:n==="up"?k+s:k-s},()=>{w.position().top>=0?i(".js-modal-arrow-up").css("opacity",".2"):w.position().top+w.height()<=i(".js-modal-mask").height()&&i(".js-modal-arrow-down").css("opacity",".2")})}}/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */i(document).ready(()=>{function l(){const k=i(b.themeSelectors.product.cover),C=i(b.themeSelectors.product.modalProductCover);let o=i(b.themeSelectors.product.selected);const p=(Q,_)=>{const u=_.find(b.themeSelectors.product.thumb);Q.removeClass("selected"),u.addClass("selected"),C.prop("src",u.data("image-large-src")),k.prop("src",u.data("image-medium-src")),k.attr("title",u.attr("title")),C.attr("title",u.attr("title")),k.attr("alt",u.attr("alt")),C.attr("alt",u.attr("alt")),Lt(k,u.data("image-medium-sources")),Lt(C,u.data("image-large-sources"))};i(b.themeSelectors.product.thumb).on("click",Q=>{o=i(b.themeSelectors.product.selected),p(o,i(Q.target).closest(b.themeSelectors.product.thumbContainer))}),k.swipe({swipe:(Q,_)=>{o=i(b.themeSelectors.product.selected);const u=o.closest(b.themeSelectors.product.thumbContainer);_==="right"?u.prev().length>0?p(o,u.prev()):u.next().length>0&&p(o,u.next()):_==="left"&&(u.next().length>0?p(o,u.next()):u.prev().length>0&&p(o,u.prev()))},allowPageScroll:"vertical"})}function n(){i("#main .js-qv-product-images li").length>2?(i("#main .js-qv-mask").addClass("scroll"),i(".scroll-box-arrows").addClass("scroll"),i("#main .js-qv-mask").scrollbox({direction:"h",distance:113,autoPlay:!1}),i(".scroll-box-arrows .left").click(()=>{i("#main .js-qv-mask").trigger("backward")}),i(".scroll-box-arrows .right").click(()=>{i("#main .js-qv-mask").trigger("forward")})):(i("#main .js-qv-mask").removeClass("scroll"),i(".scroll-box-arrows").removeClass("scroll"))}function t(){i(b.themeSelectors.fileInput).on("change",k=>{const C=i(k.currentTarget)[0],o=C?C.files[0]:null;C&&o&&i(C).prev().text(o.name)})}function w(){const k=i(b.selectors.quantityWanted);k.TouchSpin({verticalbuttons:!0,verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin",buttonup_class:"btn btn-touchspin js-touchspin",min:parseInt(k.attr("min"),10),max:1e6}),i(b.themeSelectors.touchspin).off("touchstart.touchspin"),k.on("focusout",()=>{(k.val()===""||k.val(){k.val()!==""&&(i(C.currentTarget).trigger("touchspin.stopspin"),b.emit("updateProduct",{eventType:"updatedProductQuantity",event:C}))})}function s(){const k=i(b.themeSelectors.product.tabs);k.on("show.bs.tab",C=>{const o=i(C.target);o.addClass(b.themeSelectors.product.activeNavClass),i(o.attr("href")).addClass(b.themeSelectors.product.activeTabClass)}),k.on("hide.bs.tab",C=>{const o=i(C.target);o.removeClass(b.themeSelectors.product.activeNavClass),i(o.attr("href")).removeClass(b.themeSelectors.product.activeTabClass)})}w(),t(),l(),n(),s(),b.on("updatedProduct",k=>{if(t(),l(),k&&k.product_minimal_quantity){const o=parseInt(k.product_minimal_quantity,10),p=b.selectors.quantityWanted;i(p).trigger("touchspin.updatesettings",{min:o})}n(),i(i(b.themeSelectors.product.activeTabs).attr("href")).addClass("active").removeClass("fade"),i(b.themeSelectors.product.imagesModal).replaceWith(k.product_images_modal),new Ht().init()})});/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */function cn(l,n=300){let t;return(...w)=>{clearTimeout(t),t=setTimeout(()=>{l.apply(this,w)},n)}}b.cart=b.cart||{},b.cart.active_inputs=null;const Vt='input[name="product-quantity-spin"]';let mt=!1,lt=!1,ct="";const Ot={switchErrorStat:()=>{const l=i(b.themeSelectors.checkout.btn);if((i(b.themeSelectors.notifications.dangerAlert).length||ct!==""&&!mt)&&l.addClass("disabled"),ct!==""){const n=` + + `;i(b.themeSelectors.notifications.container).html(n),ct="",lt=!1,mt&&l.removeClass("disabled")}else!mt&<&&(mt=!1,lt=!1,i(b.themeSelectors.notifications.container).html(""),l.removeClass("disabled"))},checkUpdateOperation:l=>{const{hasError:n,errors:t}=l;mt=n??!1;const w=t??"";w instanceof Array?ct=w.join(" "):ct=w,lt=!0}};function Dt(){i.each(i(Vt),(l,n)=>{i(n).TouchSpin({verticalbuttons:!0,verticalupclass:"material-icons touchspin-up",verticaldownclass:"material-icons touchspin-down",buttondown_class:"btn btn-touchspin js-touchspin js-increase-product-quantity",buttonup_class:"btn btn-touchspin js-touchspin js-decrease-product-quantity",min:parseInt(i(n).attr("min"),10),max:1e6})}),i(b.themeSelectors.touchspin).off("touchstart.touchspin"),Ot.switchErrorStat()}const Rt=l=>window.shouldPreventModal?(l.preventDefault(),!1):!0;i(document).ready(()=>{const l=b.themeSelectors.cart.productLineQty,n=[];b.on("updateCart",()=>{i(b.themeSelectors.cart.quickview).modal("hide")}),b.on("updatedCart",()=>{window.shouldPreventModal=!1,i(b.themeSelectors.product.customizationModal).on("show.bs.modal",A=>{Rt(A)}),Dt()}),Dt();const t=i("body");function w(A){return A==="on.startupspin"||A==="on.startdownspin"}function s(A){return A==="on.startupspin"}function k(A){const c=A.parents(b.themeSelectors.cart.touchspin).find(l);return c.is(":focus")?null:c}function C(A){const c=A.split("-");let N,G,ie="";for(N=0;N{let A;for(;n.length>0;)A=n.pop(),A.abort()},Q=A=>i(A.parents(b.themeSelectors.cart.touchspin).find("input"));i(b.themeSelectors.product.customizationModal).on("show.bs.modal",A=>{Rt(A)});const _=A=>{p(),window.shouldPreventModal=!0,A.preventDefault();const c=i(A.currentTarget),{dataset:N}=A.currentTarget,G=o(c,A.namespace),ie={ajax:"1",action:"update"};G&&i.ajax({url:G.url,method:"POST",data:ie,dataType:"json",beforeSend(ce){n.push(ce)}}).then(ce=>{const Le=Q(c);Ot.checkUpdateOperation(ce),Le.val(ce.quantity),b.emit("updateCart",{reason:N,resp:ce})}).fail(ce=>{b.emit("handleError",{eventType:"updateProductInCart",resp:ce,cartAction:G.type})})};t.on("click",b.themeSelectors.cart.actions,_);function u(A,c,N){return p(),window.shouldPreventModal=!0,i.ajax({url:A,method:"POST",data:c,dataType:"json",beforeSend(G){n.push(G)}}).then(G=>{Ot.checkUpdateOperation(G),N.val(G.quantity);const ie=N&&N.dataset?N.dataset:G;b.emit("updateCart",{reason:ie,resp:G})}).fail(G=>{b.emit("handleError",{eventType:"updateProductQuantityInCart",resp:G})})}function S(A){return A>0?"up":"down"}function d(A){return{ajax:"1",qty:Math.abs(A),action:"update",op:S(A)}}function V(A){const c=i(A.currentTarget),N=c.data("update-url"),G=c.attr("value"),ie=c.val();if(ie!=parseInt(ie,10)||ie<0||isNaN(ie)){window.shouldPreventModal=!1,c.val(G);return}const ce=ie-G;ce!==0&&(ie==="0"?c.closest(".product-line-actions").find('[data-link-action="delete-from-cart"]').click():(c.attr("value",ie),u(N,d(ce),c)))}t.on("touchspin.on.stopspin",Vt,cn(V)),t.on("focusout keyup",l,A=>A.type==="keyup"?(A.keyCode===13&&(lt=!0,V(A)),!1):(lt||V(A),!1));const O=400;t.on("hidden.bs.collapse",b.themeSelectors.cart.promoCode,()=>{i(b.themeSelectors.cart.displayPromo).show(O)}),t.on("click",b.themeSelectors.cart.promoCodeButton,A=>{A.preventDefault(),i(b.themeSelectors.cart.promoCode).collapse("toggle")}),t.on("click",b.themeSelectors.cart.displayPromo,A=>{i(A.currentTarget).hide(O)}),t.on("click",b.themeSelectors.cart.discountCode,A=>{A.stopPropagation();const c=i(A.currentTarget);return i(b.themeSelectors.cart.discountName).val(c.text()),i(b.themeSelectors.cart.promoCode).collapse("show"),i(b.themeSelectors.cart.displayPromo).hide(O),!1})});var Ft={exports:{}},ut=typeof Reflect=="object"?Reflect:null,Ut=ut&&typeof ut.apply=="function"?ut.apply:function(n,t,w){return Function.prototype.apply.call(n,t,w)},xt;ut&&typeof ut.ownKeys=="function"?xt=ut.ownKeys:Object.getOwnPropertySymbols?xt=function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:xt=function(n){return Object.getOwnPropertyNames(n)};function un(l){console&&console.warn&&console.warn(l)}var zt=Number.isNaN||function(n){return n!==n};function fe(){fe.init.call(this)}Ft.exports=fe,Ft.exports.once=hn,fe.EventEmitter=fe,fe.prototype._events=void 0,fe.prototype._eventsCount=0,fe.prototype._maxListeners=void 0;var Wt=10;function St(l){if(typeof l!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof l)}Object.defineProperty(fe,"defaultMaxListeners",{enumerable:!0,get:function(){return Wt},set:function(l){if(typeof l!="number"||l<0||zt(l))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+l+".");Wt=l}}),fe.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},fe.prototype.setMaxListeners=function(n){if(typeof n!="number"||n<0||zt(n))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+n+".");return this._maxListeners=n,this};function Bt(l){return l._maxListeners===void 0?fe.defaultMaxListeners:l._maxListeners}fe.prototype.getMaxListeners=function(){return Bt(this)},fe.prototype.emit=function(n){for(var t=[],w=1;w0&&(C=t[0]),C instanceof Error)throw C;var o=new Error("Unhandled error."+(C?" ("+C.message+")":""));throw o.context=C,o}var p=k[n];if(p===void 0)return!1;if(typeof p=="function")Ut(p,this,t);else for(var Q=p.length,_=Jt(p,Q),w=0;w0&&C.length>s&&!C.warned){C.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+C.length+" "+String(n)+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=l,o.type=n,o.count=C.length,un(o)}return l}fe.prototype.addListener=function(n,t){return Qt(this,n,t,!1)},fe.prototype.on=fe.prototype.addListener,fe.prototype.prependListener=function(n,t){return Qt(this,n,t,!0)};function fn(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Yt(l,n,t){var w={fired:!1,wrapFn:void 0,target:l,type:n,listener:t},s=fn.bind(w);return s.listener=t,w.wrapFn=s,s}fe.prototype.once=function(n,t){return St(t),this.on(n,Yt(this,n,t)),this},fe.prototype.prependOnceListener=function(n,t){return St(t),this.prependListener(n,Yt(this,n,t)),this},fe.prototype.removeListener=function(n,t){var w,s,k,C,o;if(St(t),s=this._events,s===void 0)return this;if(w=s[n],w===void 0)return this;if(w===t||w.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete s[n],s.removeListener&&this.emit("removeListener",n,w.listener||t));else if(typeof w!="function"){for(k=-1,C=w.length-1;C>=0;C--)if(w[C]===t||w[C].listener===t){o=w[C].listener,k=C;break}if(k<0)return this;k===0?w.shift():dn(w,k),w.length===1&&(s[n]=w[0]),s.removeListener!==void 0&&this.emit("removeListener",n,o||t)}return this},fe.prototype.off=fe.prototype.removeListener,fe.prototype.removeAllListeners=function(n){var t,w,s;if(w=this._events,w===void 0)return this;if(w.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):w[n]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete w[n]),this;if(arguments.length===0){var k=Object.keys(w),C;for(s=0;s=0;s--)this.removeListener(n,t[s]);return this};function Zt(l,n,t){var w=l._events;if(w===void 0)return[];var s=w[n];return s===void 0?[]:typeof s=="function"?t?[s.listener||s]:[s]:t?pn(s):Jt(s,s.length)}fe.prototype.listeners=function(n){return Zt(this,n,!0)},fe.prototype.rawListeners=function(n){return Zt(this,n,!1)},fe.listenerCount=function(l,n){return typeof l.listenerCount=="function"?l.listenerCount(n):Gt.call(l,n)},fe.prototype.listenerCount=Gt;function Gt(l){var n=this._events;if(n!==void 0){var t=n[l];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}fe.prototype.eventNames=function(){return this._eventsCount>0?xt(this._events):[]};function Jt(l,n){for(var t=new Array(n),w=0;w + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */class $t{constructor(n){this.el=n}init(){this.el.on("show.bs.dropdown",(n,t)=>{t?i(`#${t}`).find(".dropdown-menu").first().stop(!0,!0).slideDown():i(n.target).find(".dropdown-menu").first().stop(!0,!0).slideDown()}),this.el.on("hide.bs.dropdown",(n,t)=>{t?i(`#${t}`).find(".dropdown-menu").first().stop(!0,!0).slideUp():i(n.target).find(".dropdown-menu").first().stop(!0,!0).slideUp()}),this.el.find("select.link").each((n,t)=>{i(t).on("change",function(){window.location=i(this).val()})})}}/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */class vn{init(){this.parentFocus(),this.togglePasswordVisibility()}parentFocus(){i(".js-child-focus").on("focus",function(){i(this).closest(".js-parent-focus").addClass("focus")}),i(".js-child-focus").on("focusout",function(){i(this).closest(".js-parent-focus").removeClass("focus")})}togglePasswordVisibility(){i('button[data-action="show-password"]').on("click",function(){const n=i(this).closest(".input-group").children("input.js-visible-password");n.attr("type")==="password"?(n.attr("type","text"),i(this).text(i(this).data("textHide"))):(n.attr("type","password"),i(this).text(i(this).data("textShow")))})}}var Mt={};(function(l){(function(){var n={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function t(o){return s(C(o),arguments)}function w(o,p){return t.apply(null,[o].concat(p||[]))}function s(o,p){var Q=1,_=o.length,u,S="",d,V,O,A,c,N,G,ie;for(d=0;d<_;d++)if(typeof o[d]=="string")S+=o[d];else if(typeof o[d]=="object"){if(O=o[d],O.keys)for(u=p[Q],V=0;V=0),O.type){case"b":u=parseInt(u,10).toString(2);break;case"c":u=String.fromCharCode(parseInt(u,10));break;case"d":case"i":u=parseInt(u,10);break;case"j":u=JSON.stringify(u,null,O.width?parseInt(O.width):0);break;case"e":u=O.precision?parseFloat(u).toExponential(O.precision):parseFloat(u).toExponential();break;case"f":u=O.precision?parseFloat(u).toFixed(O.precision):parseFloat(u);break;case"g":u=O.precision?String(Number(u.toPrecision(O.precision))):parseFloat(u);break;case"o":u=(parseInt(u,10)>>>0).toString(8);break;case"s":u=String(u),u=O.precision?u.substring(0,O.precision):u;break;case"t":u=String(!!u),u=O.precision?u.substring(0,O.precision):u;break;case"T":u=Object.prototype.toString.call(u).slice(8,-1).toLowerCase(),u=O.precision?u.substring(0,O.precision):u;break;case"u":u=parseInt(u,10)>>>0;break;case"v":u=u.valueOf(),u=O.precision?u.substring(0,O.precision):u;break;case"x":u=(parseInt(u,10)>>>0).toString(16);break;case"X":u=(parseInt(u,10)>>>0).toString(16).toUpperCase();break}n.json.test(O.type)?S+=u:(n.number.test(O.type)&&(!G||O.sign)?(ie=G?"+":"-",u=u.toString().replace(n.sign,"")):ie="",c=O.pad_char?O.pad_char==="0"?"0":O.pad_char.charAt(1):" ",N=O.width-(ie+u).length,A=O.width&&N>0?c.repeat(N):"",S+=O.align?ie+u+A:c==="0"?ie+A+u:A+ie+u)}return S}var k=Object.create(null);function C(o){if(k[o])return k[o];for(var p=o,Q,_=[],u=0;p;){if((Q=n.text.exec(p))!==null)_.push(Q[0]);else if((Q=n.modulo.exec(p))!==null)_.push("%");else if((Q=n.placeholder.exec(p))!==null){if(Q[2]){u|=1;var S=[],d=Q[2],V=[];if((V=n.key.exec(d))!==null)for(S.push(V[1]);(d=d.substring(V[0].length))!=="";)if((V=n.key_access.exec(d))!==null)S.push(V[1]);else if((V=n.index_access.exec(d))!==null)S.push(V[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");Q[2]=S}else u|=2;if(u===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");_.push({placeholder:Q[0],param_no:Q[1],keys:Q[2],sign:Q[3],pad_char:Q[4],align:Q[5],width:Q[6],precision:Q[7],type:Q[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");p=p.substring(Q[0].length)}return k[o]=_}l.sprintf=t,l.vsprintf=w,typeof window<"u"&&(window.sprintf=t,window.vsprintf=w)})()})(Mt);/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */const{passwordPolicy:$e}=prestashop.themeSelectors,bn="The password policy elements are undefined.",wn=l=>{switch(l){case 0:return{color:"bg-danger"};case 1:return{color:"bg-danger"};case 2:return{color:"bg-warning"};case 3:return{color:"bg-success"};case 4:return{color:"bg-success"};default:throw new Error("Invalid password strength indicator.")}},yn=async(l,n,t)=>{const{prestashop:w}=window,s=l.value,k=n.querySelector($e.requirementScoreIcon),C=await w.checkPasswordScore(s),o=wn(C.score),p=s.length,Q=[];$(l).popover("dispose"),n.style.display=s===""?"none":"block",C.feedback.warning!==""&&C.feedback.warning in t&&Q.push(t[C.feedback.warning]),C.feedback.suggestions.forEach(V=>{V in t&&Q.push(t[V])}),$(l).popover({html:!0,placement:"top",content:Q.join("
")}).popover("show");const _=p>=parseInt(l.dataset.minlength,10)&&p<=parseInt(l.dataset.maxlength,10),u=parseInt(l.dataset.minscore,10)<=C.score;n.querySelector($e.requirementLengthIcon).classList.toggle("text-success",_),k.classList.toggle("text-success",u),l.classList.remove("border-success","border-danger"),l.classList.add(u&&_?"border-success":"border-danger"),l.classList.add("form-control","border");const S=C.score*20+20,d=n.querySelector($e.progressBar);d&&(d.style.width=`${S}%`,d.classList.remove("bg-success","bg-danger","bg-warning"),d.classList.add(o.color))},xn=l=>{document.querySelectorAll(l).forEach(t=>{const w=t==null?void 0:t.querySelector($e.inputColumn),s=t==null?void 0:t.querySelector("input"),k=document.createElement("div"),C=document.querySelector($e.template);let o;if(C&&t&&w&&s&&(k.innerHTML=C.innerHTML,w.append(k),o=t.querySelector($e.container),o)){const p=document.querySelector($e.hint);if(p){const Q=JSON.parse(p.innerHTML),_=o.querySelector($e.requirementLength),u=o.querySelector($e.requirementScore),S=_==null?void 0:_.querySelector("span"),d=u==null?void 0:u.querySelector("span");S&&_&&_.dataset.translation&&(S.innerText=Mt.sprintf(_.dataset.translation,s.dataset.minlength,s.dataset.maxlength)),d&&u&&u.dataset.translation&&(d.innerText=Mt.sprintf(u.dataset.translation,Q[s.dataset.minscore])),s.addEventListener("keyup",()=>yn(s,o,Q)),s.addEventListener("blur",()=>{$(s).popover("dispose")})}}return t?{element:t}:{error:new Error(bn)}})};/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */class Sn extends $t{init(){let n;const t=this;this.el.find("li").on("mouseenter mouseleave",w=>{if(this.el.parent().hasClass("mobile"))return;const s=i(w.currentTarget).attr("class");n!==s&&(n=Array.prototype.slice.call(w.currentTarget.classList).map(C=>typeof C=="string"?`.${C}`:!1).join(""),n&&i(w.target).data("depth")===0&&i(`${n} .js-sub-menu`).css({top:i(`${n}`).height()+i(`${n}`).position().top}))}),i("#menu-icon").on("click",()=>{i("#mobile_top_menu_wrapper").toggle(),t.toggleMobileMenu()}),this.el.on("click",w=>{this.el.parent().hasClass("mobile")||w.stopPropagation()}),b.on("responsive update",()=>{i(".js-sub-menu").removeAttr("style"),t.toggleMobileMenu()}),super.init()}toggleMobileMenu(){i("#header").toggleClass("is-open"),i("#mobile_top_menu_wrapper").is(":visible")?i("#notifications, #wrapper, #footer").hide():i("#notifications, #wrapper, #footer").show()}}/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */b.blockcart=b.blockcart||{},b.blockcart.showModal=l=>{function n(){return i("#blockcart-modal")}let t=n();t.length&&t.remove(),i("body").append(l),t=n(),t.modal("show").on("hidden.bs.modal",w=>{b.emit("updateProduct",{reason:w.currentTarget.dataset,event:w})})};/** + * Copyright since 2007 PrestaShop SA and Contributors + * PrestaShop is an International Registered Trademark & Property of PrestaShop SA + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License 3.0 (AFL-3.0) + * that is bundled with this package in the file LICENSE.md. + * It is also available through the world-wide-web at this URL: + * https://opensource.org/licenses/AFL-3.0 + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to https://devdocs.prestashop.com/ for more information. + * + * @author PrestaShop SA and Contributors + * @copyright Since 2007 PrestaShop SA and Contributors + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) + */for(const l in Xt.prototype)b[l]=Xt.prototype[l];i(document).ready(()=>{const l=i(".js-dropdown"),n=new vn,t=i('.js-top-menu ul[data-depth="0"]'),w=new $t(l),s=new Sn(t),k=new qt,C=new Ht;w.init(),n.init(),s.init(),k.init(),C.init(),xn(".field-password-policy"),i('.carousel[data-touch="true"]').swipe({swipe(o,p){p==="left"&&i(this).carousel("next"),p==="right"&&i(this).carousel("prev")},allowPageScroll:"vertical"})})})(jQuery,prestashop); diff --git a/modules/ps_advertising/index.php b/modules/ps_advertising/index.php deleted file mode 100644 index 99e1f25..0000000 --- a/modules/ps_advertising/index.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @copyright 2007-2019 PrestaShop SA and Contributors - * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) - * International Registered Trademark & Property of PrestaShop SA - */ - -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); - -header("Location: ../"); -exit; diff --git a/modules/ps_categoryproducts/views/templates/hook/ps_categoryproducts.tpl b/modules/ps_categoryproducts/views/templates/hook/ps_categoryproducts.tpl index 3139444..e4b9049 100644 --- a/modules/ps_categoryproducts/views/templates/hook/ps_categoryproducts.tpl +++ b/modules/ps_categoryproducts/views/templates/hook/ps_categoryproducts.tpl @@ -22,15 +22,15 @@ * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) * International Registered Trademark & Property of PrestaShop SA *} -