'use strict'; (function (LS) { var appUrl = 'https://www.stocknube.app'; var widgetCss = '#stock-notification-container{display:none;border:1px solid #6c757d;border-radius:7px;clear:both;margin-top:1rem}#stock-notification-container #stock-notification-modal-dialog{background-color:#fefefe;margin:15% auto;padding:30px 30px 20px 30px;border:1px solid #888;border-radius:4px;width:40%;max-width:500px;min-width:312px;font-size:16px}@media only screen and (max-width: 480px){#stock-notification-container #stock-notification-modal-dialog{margin:35% auto;padding:30px 20px 10px 20px;width:95%}}#stock-notification-container #stock-notification-modal-dialog div,#stock-notification-container #stock-notification-modal-dialog input{margin-bottom:20px;margin-top:0}#stock-notification-container #stock-notification-modal-dialog::backdrop{background-color:rgba(0,0,0,0.4)}#stock-notification-container #stock-notification-close-button{color:#aaa;font-size:28px;position:absolute;top:10px;right:15px}#stock-notification-container #stock-notification-close-button:hover,#stock-notification-container #stock-notification-close-button:focus{color:black;text-decoration:none;cursor:pointer}#stock-notification-container #stock-notification-product-name{text-transform:uppercase;font-size:larger;font-weight:bold}#stock-notification-container #stock-notification-request-message{padding:8px 20px;cursor:pointer;text-align:center}#stock-notification-container #stock-notification-success-message{display:none;text-align:center}#stock-notification-container #stock-notification-form{display:flex;flex-direction:column;width:100%}#stock-notification-container #stock-notification-form span{display:block;overflow:hidden;flex-grow:1}#stock-notification-container #stock-notification-form div,#stock-notification-container #stock-notification-form input{height:initial}#stock-notification-container #stock-notification-form #stock-notification-email,#stock-notification-container #stock-notification-form #stock-notification-phone,#stock-notification-container #stock-notification-form #stock-notification-quantity{width:100%;padding:8px 20px;border:1px solid #ced4da;box-sizing:border-box}#stock-notification-container #stock-notification-form #stock-notification-email::placeholder,#stock-notification-container #stock-notification-form #stock-notification-phone::placeholder,#stock-notification-container #stock-notification-form #stock-notification-quantity::placeholder{color:#757575}#stock-notification-container #stock-notification-form #stock-notification-quantity::-webkit-inner-spin-button,#stock-notification-container #stock-notification-form #stock-notification-quantity::-webkit-outer-spin-button{-webkit-appearance:auto}#stock-notification-container #stock-notification-form #stock-notification-submit{white-space:nowrap;padding:8px 15px;border:1px solid #6c757d;background-color:#efefef;margin-bottom:0}#stock-notification-container div.stock-notification-powered-by{text-align:right;padding-top:10px;font-size:.6em;margin-bottom:0}#stock-notification-container.zen,#stock-notification-container.recife,#stock-notification-container.toluca,#stock-notification-container.morelia,#stock-notification-container.uyuni,#stock-notification-container.new_linkedman,#stock-notification-container.baires,#stock-notification-container.cubo,#stock-notification-container.luxury{border-radius:0}#stock-notification-container.new_linkedman{font-size:1rem}#stock-notification-container.new_linkedman #stock-notification-email,#stock-notification-container.new_linkedman #stock-notification-phone,#stock-notification-container.new_linkedman #stock-notification-quantity{font-size:1rem}#stock-notification-container.new_linkedman #stock-notification-submit{font-size:1rem;line-height:1.1rem}@media only screen and (max-width: 480px){#stock-notification-container.new_linkedman #stock-notification-modal-dialog{width:88%}}#stock-notification-container.zen input{height:100%;line-height:1.1rem}@media only screen and (max-width: 480px){#stock-notification-container.zen #stock-notification-modal-dialog{width:88%}}#stock-notification-container.style{margin-top:0}#stock-notification-container.style #stock-notification-close-button{top:3px}#stock-notification-container.idea{border-radius:50px;margin-bottom:1rem;padding:5px 10px}#stock-notification-container.idea #stock-notification-modal-dialog{width:initial}@media only screen and (max-width: 480px){#stock-notification-container.idea #stock-notification-modal-dialog{width:93%}}@media only screen and (max-width: 480px){#stock-notification-container.material #stock-notification-modal-dialog,#stock-notification-container.recife #stock-notification-modal-dialog{margin:48% auto;padding:30px 10px 10px 10px}}#stock-notification-container.luxury input{font-size:14px}@media only screen and (max-width: 480px){#stock-notification-container.luxury #stock-notification-modal-dialog{width:88%}}#stock-notification-container.bahia{margin-bottom:1rem}#stock-notification-container.bahia input{font-size:14px}#stock-notification-container.cancun{width:100%}#stock-notification-container.habitus{margin-right:0;margin-left:auto;width:270px;text-align:center}#stock-notification-container.morelia{width:100%;margin-left:15px;margin-right:15px}#stock-notification-container.atlantico #stock-notification-close-button{font-size:20px}#stock-notification-container.recife #stock-notification-close-button{top:0px}#stock-notification-container.lima{border-radius:40px}#stock-notification-container.lima #stock-notification-close-button{top:0px}#stock-notification-container.uyuni{border-left:0;border-right:0}#stock-notification-container.cubo #stock-notification-close-button{top:3px}#stock-notification-container.amazonas{border-radius:40px}#stock-notification-container.rio{border-radius:4px}.notification-list-button{margin-top:1rem;border:1px solid #6c757d;color:#6c757d;padding:3px;text-align:center}.notification-list-button.idea{margin-top:0;border-radius:6px}.notification-list-button.material{padding-top:5px;padding-bottom:5px}.notification-list-button.new_linkedman{margin-top:0;color:#434343;border:1px solid rgba(67,67,67,0.3)}.notification-list-button.bahia{clear:both}.notification-list-button.style,.notification-list-button.atlantico,.notification-list-button.rio,.notification-list-button.brasilia{border-radius:6px}.notification-list-button.lima{border-radius:50px;padding:10px 15px}.notification-list-button.toluca{border-radius:4px}.notification-list-button.brasilia{border-radius:8px}.notification-list-button.zen{color:#000;opacity:1 !important}.notification-list-button.uyuni{border-right:0;border-left:0}'; var storeConfig; var selectedVariant; var getNotificationRequestElement = function getNotificationRequestElement() { return "\n \n
\n
").concat(storeConfig.notificationRequestMessage, "
\n \n ×\n
").concat(storeConfig.notificationModalIntro, "
\n
\n
\n ").concat(storeConfig.allowEmails ? "") : '', "\n ").concat(storeConfig.allowPhoneNumbers ? "") : '', "\n ").concat(storeConfig.allowQuantity ? "") : '', "\n \n
\n
").concat(storeConfig.notificationSuccessMessage, "
\n
").concat(getLegend(), "
\n
\n
\n "); }; var getSelectedVariantName = function getSelectedVariantName() { var variants = selectedVariant ? [selectedVariant.option0, selectedVariant.option1, selectedVariant.option2] : []; return variants.filter(Boolean).join(' - '); }; var getButtonInlineStyle = function getButtonInlineStyle() { var style = ''; if (storeConfig.buttonFontColor) { style += "color: ".concat(storeConfig.buttonFontColor, "; "); } if (storeConfig.buttonBackgroundColor) { style += "background-color: ".concat(storeConfig.buttonBackgroundColor, "; border: none; "); } if (LS.product && storeConfig.buttonInProductPageCSS) { style += storeConfig.buttonInProductPageCSS; } else if (storeConfig.buttonInProductListCSS) { style += storeConfig.buttonInProductListCSS; } return style.trim(); }; var getLegend = function getLegend() { if (LS.langCode === 'es') { return 'Usando Notificaciones de Stock'; } else if (LS.langCode === 'pt') { return 'Usando Avise-me Quando Chegar'; } return ''; }; var getSelectedVariant = function getSelectedVariant() { var currentVariant = {}; var selects = $('[data-store^="product-form"] select[name^=variation]'); if (selects.length == 0) { selects = $('[data-store^="product-form"] input[name^=variation]'); } if (selects.is(':radio')) { selects = selects.filter(':checked'); } selects.each(function (index, select) { var key = 'option' + /variation\[(\d+)\]/.exec($(select).attr('name'))[1]; currentVariant[key] = $(select).val(); }); var theVariant = null; $.each(LS.variants, function (_index, variant) { var matches = true; $.each(currentVariant, function (key) { if (variant[key] != currentVariant[key]) { matches = false; } }); if (matches) { theVariant = variant; } }); return theVariant; }; var onVariantSelected = function onVariantSelected(variant) { if (!variant) { variant = LS.variants.find(function (i) { return i.available; }) || LS.variants[0]; } if (variant.stock === 0) { $('#stock-notification-container').css('display', 'block'); } else { $('#stock-notification-container').hide(); } selectedVariant = variant; }; var getWidgetContainer = function getWidgetContainer() { var selectorsByPriority = ['#stocknube-app-container', LS.theme.code === 'morelia' ? '[data-store^="product-form"] .buy-button-container' : null, '[data-store^="product-buy-button"]', 'input[type=submit].js-prod-submit-form']; for (var selector of selectorsByPriority) { var element = $(selector).first(); if (element.length > 0) { return element; } } return null; }; var injectNotificationRequestElement = function injectNotificationRequestElement() { if (LS.product.tags.includes('no-stock-notif')) { return console.log('Notificaciones de Stock: El producto tiene el tag no-stock-notif, no se va a mostrar el boton'); } var widgetContainer = getWidgetContainer(); if (!widgetContainer) { throw new Error('Notificaciones de Stock: No se pudo encontrar una posición en la página donde insertar el widget'); } widgetContainer.after(getNotificationRequestElement()); $('#stock-notification-form').on('submit', onNotificationRequestSubmitted); var modal = document.getElementById('stock-notification-modal-dialog'); $('#stock-notification-request-message').click(function () { var emailInput = document.getElementById('stock-notification-email'); var phoneInput = document.getElementById('stock-notification-phone'); if (emailInput) { emailInput.value = localStorage.getItem('stock-notification-app-email'); } if (phoneInput) { phoneInput.value = localStorage.getItem('stock-notification-app-phone'); } var productName = document.getElementById('stock-notification-product-name'); var variantName = getSelectedVariantName(); productName.innerHTML = "".concat(LS.product.name, " ").concat(variantName ? " - ".concat(variantName) : ''); modal.showModal(); }); var closeButton = document.getElementById('stock-notification-close-button'); closeButton.onclick = function () { modal.close(); }; LS.registerOnChangeVariant(onVariantSelected); if (LS.theme.code === 'cancun') { $('input.js-theme-change-variant').change(function () { onVariantSelected(getSelectedVariant()); }); } var variant = getSelectedVariant(); if (variant && variant.option0 !== 'muestra') { onVariantSelected(variant); } }; var onNotificationRequestSubmitted = function onNotificationRequestSubmitted(event) { event.preventDefault(); var emailInput = document.getElementById('stock-notification-email'); var phoneInput = document.getElementById('stock-notification-phone'); var quantityInput = document.getElementById('stock-notification-quantity'); var submitButton = document.getElementById('stock-notification-submit'); var email = emailInput === null || emailInput === void 0 ? void 0 : emailInput.value; var phoneNumber = phoneInput === null || phoneInput === void 0 ? void 0 : phoneInput.value; var quantity = quantityInput === null || quantityInput === void 0 ? void 0 : quantityInput.value; if (email || phoneNumber) { emailInput === null || emailInput === void 0 ? void 0 : emailInput.removeAttribute('required'); phoneInput === null || phoneInput === void 0 ? void 0 : phoneInput.removeAttribute('required'); } else { emailInput === null || emailInput === void 0 ? void 0 : emailInput.setAttribute('required', 'required'); phoneInput === null || phoneInput === void 0 ? void 0 : phoneInput.setAttribute('required', 'required'); if (emailInput && phoneInput) { emailInput === null || emailInput === void 0 ? void 0 : emailInput.reportValidity(); } else { phoneInput === null || phoneInput === void 0 ? void 0 : phoneInput.reportValidity(); emailInput === null || emailInput === void 0 ? void 0 : emailInput.reportValidity(); } return; } submitButton.value = '...'; var notificationRequest = { productId: LS.product.id, productName: LS.product.name, productVariantSKU: selectedVariant && selectedVariant.sku, productVariantId: selectedVariant && selectedVariant.id, productVariantName: selectedVariant && getSelectedVariantName(), productLink: window.location.href, storeId: LS.store.id, lang: LS.langCode, email: email, phoneNumber: phoneNumber, quantity: quantity }; fetch("".concat(appUrl, "/api/notifications"), { method: 'POST', body: JSON.stringify(notificationRequest), headers: { 'Content-Type': 'application/json' } }).then(function (response) { if (response.ok) { $('#stock-notification-form').hide(); $('#stock-notification-success-message').show(); } else { $('#stock-notification-submit').val(storeConfig.notificationRequestMessage); throw new Error('Notificaciones de Stock: No se pudo enviar la notificación'); } })["catch"](function () { $('#stock-notification-submit').val(storeConfig.notificationRequestMessage); throw new Error('Notificaciones de Stock: No se pudo enviar la notificación'); }); if (email) { localStorage.setItem('stock-notification-app-email', email); } if (phoneNumber) { localStorage.setItem('stock-notification-app-phone', phoneNumber); } }; var initialButtonInProductListRender = function initialButtonInProductListRender() { document.head.insertAdjacentHTML('beforeend', "")); $('div[data-product-type$="list"]').each(injectButtonInProductFromProductList); masonryGridRerender(); renderButtonInProductListWhenMoreProductsAreAdded(); }; var masonryGridRerender = function masonryGridRerender() { if (typeof $masonry_grid !== 'undefined' && typeof $masonry_grid.layout === 'function') { $masonry_grid.layout(); } }; var renderButtonInProductListWhenMoreProductsAreAdded = function renderButtonInProductListWhenMoreProductsAreAdded() { var callback = function callback(mutationsList, _observer) { var injectedSomething = false; for (var mutation of mutationsList) { if (mutation.type === 'childList') { for (var node of mutation.addedNodes) { injectedSomething = true; if ($(node).is('div[data-product-type$="list"]')) { injectButtonInProductFromProductList.call($(node)); } else { var results = $(node).find('div[data-product-type$="list"]'); results.each(injectButtonInProductFromProductList); } } } } if (injectedSomething) { masonryGridRerender(); } }; var observer = new MutationObserver(callback); var table = document.getElementsByClassName('js-product-table')[0]; if (!table) { return console.log('Notificaciones de Stock: No se pudo agregar Observer para monitorear el agregado dínamico de nuevos productos'); } observer.observe(table, { childList: true }); }; function injectButtonInProductFromProductList() { var container = $(this); var buttonContainers = { 'generic': '[data-store^="product-item-info"] a', 'bahia': '.item-description a', 'idea': '[data-store^="product-item-info"] > a' }; var button = "
").concat(storeConfig.buttonInProductListMessage, "
"); if (container.find('.notification-list-button').length > 0) { return; } var stockAttribute = container.find('[data-store|="stock-product"][data-store$="-0"]'); if (stockAttribute.length > 0) { if (LS.theme.code === 'amazonas') { container.find('.item-actions a').first().html(storeConfig.buttonInProductListMessage); container.find('.item-actions > div').first().attr('class', ''); } else if (LS.theme.code === 'new_linkedman') { var productLink = container.find('[data-store^="product-item-info"] a').first(); var stockLabel = container.find('.js-stock-label').first(); stockLabel.html("").concat(storeConfig.buttonInProductListMessage, "")); } else if (LS.theme.code === 'cubo') { container.find('.item-actions span').first().html(storeConfig.buttonInProductListMessage); } else { var buttonContainer = container.find(buttonContainers[LS.theme.code] || buttonContainers['generic']).last(); buttonContainer.append(button); } } } var init = function init() { if (typeof $ === 'undefined' || !$.fn || !$.fn.jquery) { throw new Error('Notificaciones de Stock: No se pudo encontrar jQuery'); } $.get("".concat(appUrl, "/api/stores/").concat(LS.store.id, "/?lang=").concat(LS.langCode)).done(function (response) { storeConfig = response; if (LS.product) { injectNotificationRequestElement(); } else if (storeConfig.showButtonInProductList) { initialButtonInProductListRender(); } }); }; useJquery().then(function () { return init(); }); })(LS);