{"version":3,"file":"store.js","mappings":"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","sources":["webpack://build/../janiero/assets/javascripts/store.js"],"sourcesContent":["window.$window = $(window);\nwindow.$body = $('body');\nwindow.page = $body.data('page');\nwindow.$header = $('#header');\nwindow.$wrapper = $('#wrapper');\nwindow.spaceToHeaderFixed;\nwindow.language = $('html').attr('lang');\nwindow.timeTransitionDefault = 350;\nwindow.texts = [];\n\nwindow.texts['pt-BR'] = {\n quantity: 'quantidade',\n price: 'preço',\n cart_empty: 'O seu carrinho está vazio',\n go_product: 'Ir para a página do produto',\n btn_edit_cart: 'Editar pedido',\n btn_checkout: 'Finalizar pedido',\n btn_success: 'Adicionado!',\n errorsTxt: {\n withoutSku: 'Por favor, selecione o tamanho desejado',\n },\n};\n\nwindow.texts['en'] = {\n quantity: 'quantity',\n price: 'price',\n cart_empty: 'Empty cart',\n go_product: 'Go to product page',\n btn_edit_cart: 'Edit order',\n btn_checkout: 'Finish order',\n btn_success: 'Added!',\n errorsTxt: {\n withoutSku: 'Select a size to the product',\n },\n};\n\nfunction getText(key, subKey) {\n if (typeof subKey == 'undefined') {\n return texts[language][key];\n } else {\n return texts[language][key][subKey];\n }\n}\n\nwindow.store = {\n config: {\n // Seletor do botão de comprar\n selectorBtnBuy: '[data-action=\"add-cart\"]',\n selectorBtnBuyAssinatura: '[data-action=\"add-cart-assinatura\"]',\n // Seletor do elemento que engloba um produto\n selectorWrapperProduct: '[data-box-produto]',\n selectorWrapperProductAssinatura: '[data-box-produto-assinatura]',\n selectorFormProduct: '[data-form-product]',\n selectorFormProductAssinatura: '[data-form-product-assinatura]',\n // Se a store tem versão internacional ou não\n hasInternacionalVersion: true,\n errorsTxt: {\n withoutSku: getText('errorsTxt', 'withoutSku'),\n },\n // configuração de comportamento ao add um produto\n addToCartOpenCartpopup: true,\n addToCartOpenCartpopupMobile: true,\n cartCount: {\n selector: '[data-cart-count]',\n attr: '[data-cart-count-attr]',\n text: '[data-cart-item-text]',\n },\n priceProds: {\n selector: '[data-update-price]',\n attr: 'data-update-price',\n processedAttr: 'data-price-processed'\n },\n },\n formatMoney: function (value) {\n // FORMATA UM VALOR\n return (\n (language == 'pt-BR' ? 'R$ ' : '$') +\n value\n .toFixed(2)\n .replace('.', ',')\n .replace(/(\\d)(?=(\\d{3})+\\,)/g, '$1.')\n );\n },\n validateQuantity: function (_val) {\n // VALIDA SE A QUANTIDADE INFORMADA É UM NÚMERO\n if (!isNaN(_val)) {\n if (parseInt(_val) > 0) {\n return true;\n }\n }\n\n return false;\n },\n getClearNumber: function (_val) {\n // RETORNA UM NÚMERO LIMPO COMO INT\n if (!isNaN(_val)) {\n clearNumber = parseInt(_val);\n\n return clearNumber;\n }\n\n return false;\n },\n\n findVariant: function (properties, variant_list) {\n return variant_list.filter(function (variant) {\n var match = true\n for (var property_key in properties) {\n var property1 = variant.properties['property1']\n var property2 = variant.properties['property2']\n var property3 = variant.properties['property3']\n\n if (property1 && property_key.includes(property1.name)) {\n var desired_property = property1.value\n } else if (property2 && property_key.includes(property2.name)) {\n var desired_property = property2.value\n } else if (property3 && property_key.includes(property3.name)) {\n var desired_property = property3.value\n }\n\n if (desired_property !== properties[property_key]) {\n match = false\n }\n }\n return match\n })\n },\n\n validateFormProduct: function (_$form) {\n // VALIDA O FORM DE PRODUTO PARA VER SE O PRODUTO PODE SER ADICIONADO\n var $parent = _$form.closest('[data-box-produto]');\n var $btnComprar = _$form.find('[data-action=\"add-cart\"]');\n var validated = true;\n var errorsTxt = [];\n\n if ($btnComprar.data('available') == 'false') {\n validated = false;\n errorsTxt.push('');\n } else {\n // verifica se o sku foi selecionado\n if (_$form.find('[name=\"sku\"]').val() == '') {\n validated = false;\n errorsTxt.push(store.config.errorsTxt.withoutSku);\n }\n\n // verifica se a quantidade é válida\n // console.log(_$form.find('input[name=\"quantity\"]').val());\n if (_$form.find('input[name=\"quantity\"]').val() <= 0) {\n // console.log('qtd invalida');\n validated = false;\n errorsTxt.push('Quantidade indisponível');\n }\n }\n\n return {\n validated: validated,\n errors: errorsTxt\n };\n },\n setRespValidateProduct: function (_resp, _$form, _$boxResponse) {\n // var $boxResult = _$form.find('.resp-validate');\n var $boxResult = _$boxResponse;\n var htmlErrors = '';\n\n if (_resp.validated) {\n $boxResult.empty();\n } else {\n for (var i = _resp.errors.length - 1; i >= 0; i--) {\n htmlErrors += '' + _resp.errors[i] + '';\n }\n\n $boxResult.html(htmlErrors);\n }\n },\n addItemResultDefault: function (_$form, _typeResult, _result, _$boxResponse) {\n var _this = this;\n if (_typeResult == 'produto-adicionado') {\n var $btnComprar = _$form.find(_this.config.selectorBtnBuy);\n\n $btnComprar.addClass('success').html('Produto adicionado!');\n\n setTimeout(function () {\n // _$form.find('.msg-response').slideUp(350);\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\n }, 3500);\n\n setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\n } else if (_typeResult == 'erro-adicionar') {\n var errorText = JSON.parse(_result.responseText);\n\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\n console.info(errorText);\n\n _$boxResponse.addClass('error');\n _$boxResponse.removeClass('success');\n\n _$boxResponse.find('span').html(errorText.error);\n _$boxResponse.slideDown(350);\n\n setTimeout(function () {\n _$boxResponse.slideUp(350);\n }, 3500);\n }\n }\n },\n addItemResultDefaultAssinatura: function (_$form, _typeResult, _result, _$boxResponse) {\n var _this = this;\n if (_typeResult == 'produto-adicionado') {\n var $btnComprar = _$form.find(_this.config.selectorBtnBuyAssinatura);\n\n $btnComprar.addClass('success').html('Adicionado!');\n\n setTimeout(function () {\n // _$form.find('.msg-response').slideUp(350);\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\n }, 3500);\n\n setTimeout(function () {\n window.location.href = urlAssinaturaCart;\n }, 150);\n } else if (_typeResult == 'erro-adicionar') {\n if (typeof _result == 'object') {\n var errorText = _result;\n } else {\n var errorText = JSON.parse(_result);\n }\n\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\n console.info(errorText);\n\n _$boxResponse.addClass('error');\n _$boxResponse.removeClass('success');\n\n _$boxResponse.find('span').html(errorText.error);\n _$boxResponse.slideDown(350);\n }\n }\n },\n addItem: function (_$form, _$parent, addItemResult) {\n var _this = this;\n var $btnComprar = _$parent.find('[data-action=\"add-cart\"]');\n var urlAdd = '/carrinho/adicionar';\n var urlUpdate = '/carrinho';\n var url = urlAdd;\n var form = _$form.serialize();\n var $boxResponse = _$parent.find('[data-form-product] .msg-response');\n\n console.info('addItem');\n console.info('addItem', _$form.serializeArray());\n\n if (!$btnComprar.hasClass('adding')) {\n $.ajax({\n url: url,\n type: 'POST',\n dataType: 'json',\n data: form,\n beforeSend: function () {\n $btnComprar.addClass('adding');\n },\n })\n .done(function (resp) {\n // console.log('success');\n // console.info(resp);\n if (typeof template_store.addItemResult == 'function') {\n template_store.addItemResult(_$form, 'produto-adicionado', resp, $boxResponse);\n } else {\n template_store.addItemResultDefault(_$form, 'produto-adicionado', resp, $boxResponse);\n }\n })\n .fail(function (resp) {\n // console.log('error');\n // console.error(resp);\n // console.error(resp.responseText);\n // console.error(resp.responseText.error);\n\n if (typeof template_store.addItemResult == 'function') {\n template_store.addItemResult(_$form, 'erro-adicionar', resp, $boxResponse);\n } else {\n template_store.addItemResultDefault(_$form, 'erro-adicionar', resp, $boxResponse);\n }\n })\n .always(function () {\n // console.log('complete');\n $btnComprar.removeClass('adding');\n });\n }\n },\n addItemArray: function (skusToAddSet) {\n items = skusToAddSet.map(sku => ({\n sku,\n quantity: 1\n }));\n\n var data = JSON.stringify({\n items: items\n });\n\n return $.ajax({\n url: '/carrinho/adicionar/kit',\n type: 'POST',\n dataType: 'json',\n contentType: 'application/json; charset=utf-8',\n xhrFields: {\n withCredentials: true\n },\n cache: false,\n data: data\n })\n },\n addItemAssinatura: function (_$form, _$parent, addItemResult) {\n var _this = this;\n var $btnComprar = _$parent.find(store.config.selectorBtnBuyAssinatura);\n var url = urlAssinaturaCartAdd;\n var form = _$form.serialize();\n var $boxResponse = _$parent.find(\n store.config.selectorFormProductAssinatura + ' .msg-response'\n );\n var data = {};\n\n data.subscription_item = {\n quantity: _$form.find('[name=\"quantity\"]').val(),\n sku: _$form.find('[name=\"sku\"]').val(),\n extra: {\n vindi_plan_id: _$form.find('[name=\"extra[vindi_plan_id]\"]').val(),\n },\n };\n\n console.info('addItemAssinatura');\n console.info('addItemAssinatura', data);\n console.info('addItemAssinatura', JSON.stringify(data));\n\n if (!$btnComprar.hasClass('adding')) {\n $.ajax({\n url: url,\n type: 'POST',\n // dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n xhrFields: {\n withCredentials: true\n },\n beforeSend: function () {\n $btnComprar.addClass('adding');\n },\n })\n .done(function (resp) {\n // console.log('success');\n // console.info(resp);\n\n if (typeof template_store.addItemResult == 'function') {\n template_store.addItemResult(_$form, 'produto-adicionado', resp, $boxResponse);\n } else {\n template_store.addItemResultDefaultAssinatura(\n _$form,\n 'produto-adicionado',\n resp,\n $boxResponse\n );\n }\n })\n .fail(function (xhr, status, error) {\n console.log('error');\n console.error(xhr);\n console.error(status);\n console.error(error);\n\n var resp = {\n error: 'Houve um problema ao adicionar. Tente mais tarde ou entre em contato.',\n };\n\n if (typeof template_store.addItemResult == 'function') {\n template_store.addItemResult(_$form, 'erro-adicionar', resp, $boxResponse);\n } else {\n template_store.addItemResultDefaultAssinatura(\n _$form,\n 'erro-adicionar',\n resp,\n $boxResponse\n );\n }\n })\n .always(function () {\n // console.log('complete');\n $btnComprar.removeClass('adding');\n });\n }\n },\n addItemKit: function (forms, parent, cart) {\n const _this = this;\n\n let data = { items: [] }\n let quantity = Number(document.querySelector(`[name=\"quantity\"]`).value);\n for (let index = 0; index < forms.length; index++) {\n const form = forms[index];\n if (form) {\n let input = form.querySelector('input[name=\"sku\"]');\n if (input.value != '') {\n quantity = Number(document.querySelector(`[name=\"quantity\"]`).value);\n console.log('selector quantity', quantity);\n if (cart != null) {\n if (cart.items.length > 0) cart.items.forEach(cartItem => {\n if (cartItem.variant_sku == input.value) {\n quantity += cartItem.quantity;\n console.log('new quantity', quantity);\n } \n });\n }\n\n let hasItem = false;\n data.items.forEach(item => {\n if (item.sku == input.value) {\n item.quantity += quantity;\n hasItem = true;\n }\n });\n\n if (!hasItem) {\n data.items.push({\n sku: input.value,\n quantity: quantity\n })\n }\n }\n }\n }\n console.log('data', data);\n const json_data = JSON.stringify(data);\n\n // console.info('addItemKit', data);\n // console.info('addItemKit', json_data);\n\n const button = document.querySelector('.add-to-cart-button');\n if (!button.classList.contains('-sending')) {\n $.ajax({\n url: '/carrinho/adicionar/kit',\n type: 'POST',\n dataType: 'json',\n contentType: 'application/json; charset=utf-8',\n xhrFields: {\n withCredentials: true\n },\n cache: false,\n data: json_data,\n beforeSend: function () {\n button.classList.add('-sending');\n },\n })\n .done(function (resp) {\n // console.log('success');\n // console.info(resp);\n\n template_store.addItemResult($(forms), 'produto-adicionado', resp);\n\n _this.addKitLocalStorage(data.items);\n })\n .fail(function (resp) {\n console.log('error');\n console.error(resp);\n console.error(resp.responseText);\n console.error(resp.responseText.error);\n })\n .always(function () {\n // console.log('complete');\n button.classList.remove('-sending');\n });\n }\n },\n deleteItem: async function (_itemId, _$item, removeItemResult, update, key) {\n var _this = this;\n\n await $.ajax({\n url: '/carrinho',\n type: 'POST',\n dataType: 'json',\n data: {\n _method: 'delete',\n item_id: _itemId,\n },\n beforeSend: function () {\n _$item.addClass('removing');\n },\n })\n .done(function (_cart) {\n console.log('delete success');\n\n if (update) {\n window.componentCartDrawer.close();\n window.componentCartDrawer.open();\n localStorage.removeItem(key);\n }\n\n if (typeof removeItemResult == 'function') {\n removeItemResult(_$item, _cart);\n }\n })\n .fail(function (error) {\n console.log('erro ao remover', error.responseText);\n })\n .always(function () {\n _$item.removeClass('removing');\n });\n \n },\n addKitLocalStorage: function (items) {\n let names = '';\n let skus = '';\n\n items.forEach(item => {\n let input = document.querySelector(`[data-section-product] .attributes input[name=\"sku\"][value=\"${item.sku}\"]`);\n\n names += `${input.getAttribute('data-name')}//`;\n skus += `${item.sku}//`;\n })\n\n let itemName = 'combos-' + names;\n if (localStorage.getItem(itemName)) {\n itemName = `${Math.floor(Math.random() * 100)}${itemName}`;\n localStorage.setItem(itemName, skus);\n } else {\n localStorage.setItem(itemName, skus);\n }\n },\n setMsgResponse: function (_msg, _type, _$parent) {\n /*\n O tipo pode conter um dos 3 valores: success, warning, error ou CLEAR.\n O type CLEAR limpa as mensagens e faz sumir a mensagem\n */\n\n // Verifica se não há mais de uma mensagem\n // caso tenha, gera um html para cada mensagem\n if (Array.isArray(_msg)) {\n var msgArr = _msg;\n _msg = '';\n for (var i = msgArr.length - 1; i >= 0; i--) {\n _msg += '' + msgArr[i] + '';\n }\n }\n\n _$parent\n .find('[data-msg-retorno]')\n .removeClass('success')\n .removeClass('warning')\n .removeClass('error');\n\n _$parent.find('[data-msg-retorno] [data-msg]').empty();\n\n if (_type != 'clear') {\n _$parent.find('[data-msg-retorno]').addClass(_type);\n _$parent.find('[data-msg-retorno] [data-msg]').html(_msg);\n }\n },\n updateCartCount: function (_itemsCount) {\n var _this = this;\n\n // $(_this.cartCount.selector).empty().text(_itemsCount);\n\n $(_this.config.cartCount.attr).data('cart-count-attr', _itemsCount);\n $(_this.config.cartCount.attr).attr('data-cart-count-attr', _itemsCount);\n\n $(_this.config.cartCount.attr).html(_itemsCount);\n $(_this.config.cartCount.text).html(_itemsCount);\n $(_this.config.cartCount.textLabel).html(_itemsCount > 1 ? 'itens' : 'item');\n\n if (_itemsCount > 0) {\n $('[data-cart-body]').parent().addClass('active');\n } else {\n $('[data-cart-body]').parent().removeClass('active');\n }\n },\n getCartCount: function () {\n async function getCartItens() {\n let itens;\n\n try {\n itens = await $.ajax({\n url: '/carrinho/itens',\n type: 'GET',\n dataType: 'text',\n });\n\n return itens;\n } catch (error) {\n console.error(error);\n }\n }\n\n if ($(store.config.cartCount.selector).length > 0) {\n getCartItens().then((total) => {\n var itens = Number.isInteger(parseInt(total));\n if (itens) {\n $(store.config.cartCount.attr).attr('data-cart-count-attr', total);\n $(store.config.cartCount.selector).html(total);\n\n var $boxCart = $('[data-cart-body]');\n\n if ($boxCart.length > 0) {\n if (total > 0) {\n template_store.headerCart.loadCart(total);\n } else {\n $boxCart.html('

Seu carrinho está vazio...

');\n }\n }\n }\n });\n }\n },\n\n getCartItens: async function () {\n try {\n const cart = await $.ajax({\n url: '/carrinho',\n type: 'GET',\n dataType: 'json',\n })\n\n console.log(cart);\n\n return cart.items;\n\n } catch (error) {\n console.error('Erro ao buscar a quantidade de produtos do carrinho');\n console.error(error);\n }\n },\n\n setFilterSelected: function () {\n var sPageURL = decodeURI(window.location.search.substring(1)),\n sURLVariables = sPageURL.split('&'),\n sParameterName,\n i;\n\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n\n // console.log('nome do parametro', sParameterName[0])\n // console.log('valor do parametro', sParameterName[1])\n\n if ($('.filters-form [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').length > 0) {\n $('.filters-form [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').closest('li').addClass('selected')\n $('.filters-form [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').attr('checked', true)\n }\n }\n },\n\n setFilters: function () {\n $('[data-action=\"toggle-filter\"]').on('click', function () {\n $(this).toggleClass('active')\n\n if ($('#filters').innerHeight() > 0) {\n $('#filters').css('height', 0)\n } else {\n $('#filters').css('height', $('#filters').find('.form-filter').innerHeight() + 25)\n }\n });\n },\n\n setImagesBetweenProducts: function () {\n const $imagesBetweenProducts = $('.banner-image');\n let productsLength = $('.product-block').length;\n\n $imagesBetweenProducts.each(function (index, el) {\n const $el = $(el);\n\n $el.data('index') > 28 && $el.css('order', $el.data('index') + 1)\n\n productsLength < $el.data('index') ? $el.hide() : $el.show();\n })\n },\n\n setQuickView: function () {\n let quickViews = document.querySelectorAll('[data-action=\"quick-view\"]');\n\n if (quickViews) {\n quickViews.forEach(quickView => {\n quickView.addEventListener('click', (event) => {\n \n let url = quickView.dataset.url;\n let popupDefault = document.querySelector('[data-component=\"popup\"]');\n let iframe = ``;\n \n if (event.target.tagName === 'IMG') {\n event.preventDefault();\n popupDefault.querySelector('.content').innerHTML = iframe;\n \n setTimeout(function () {\n popupDefault.classList.add('visible');\n window.parent.document.getElementsByTagName('html')[0].style.overflow = 'hidden';\n }, 400)\n\n // Dá um update na URL para fins de tracking (solicitado pelo cliente)\n history.pushState(url, 'Quick View URL', url); \n \n // Pega o iframe do quick view\n var iframeQuickView = document.getElementById(\"myFrame\");\n \n // Espera o carregamento do iframe \n iframeQuickView.onload = () => {\n let DataProductDocument = iframeQuickView.contentWindow.document.querySelectorAll('[data-product-block]');\n DataProductDocument.forEach((el) => {\n el.addEventListener('click', ()=>{\n url = el.querySelector('a').getAttribute(\"href\");\n url = url.replace('?version=quickview', '');\n history.pushState(url, 'Quick View URL de dentro do QuickView', url);\n })\n })\n var whatsApp = iframeQuickView.contentWindow.document.querySelectorAll('.MuiScopedCssBaseline-root')\n }\n }\n })\n })\n \n window.addEventListener(\"message\", function (e) {\n if (e.data[0] == 'produto-adicionado-quick-view') {\n //window.location.href = urlCart;\n\n var cartResult = e.data[1];\n\n popupDefault.classList.remove('visible');\n window.parent.document.getElementsByTagName('html')[0].style.overflow = '';\n\n if ($body.width() > 768) {\n if (store.config.addToCartOpenCartpopup) {\n template_store.headerCart.loadCart(cartResult);\n template_store.headerCart.show();\n }\n } else {\n if (store.config.addToCartOpenCartpopupMobile) {\n template_store.headerCart.loadCart(cartResult);\n template_store.headerCart.show();\n }\n }\n\n } else if (e.data[0] == 'interna-do-produto') {\n window.location.href = e.data[1];\n }\n }, false);\n\n var qvLink = document.querySelector('[data-qv-link]');\n if (qvLink) {\n qvLink.addEventListener('click', function (e) {\n e.preventDefault();\n\n window.parent.postMessage(['interna-do-produto', this.href], '*');\n })\n }\n\n }\n\n },\n\n setTopBar: function () {\n var topBar = new Swiper('[data-top-bar]', {\n spaceBetween: 0,\n autoplay: true,\n speed: 3000,\n slidesPerView: 1,\n autoplay: {\n delay: 4000,\n },\n loop: true,\n });\n },\n\n setSearchForm: function () {\n const $openForm = $('[data-action=\"toggle-search\"]')\n const $searchForm = $('[data-form-search]')\n const $searchInput = $searchForm.find('input')\n\n $openForm.on('click', function () {\n $searchForm.toggleClass('open')\n $searchForm.hasClass('open') ? $searchInput.focus() : $searchInput.blur();\n })\n },\n\n setQuickBuy: function () {\n $(document).on('change', '[data-product-block] [data-product-attributes] .input', function (event) {\n let form = event.target.closest('form');\n let productWrapper = event.target.closest('[data-product-block]');\n let inputs = Array.from(form.querySelectorAll('input:checked'));\n let productId = form.dataset.productId;\n let attributes = inputs.reduce((map, input) => ({\n ...map,\n [input.name]: input.value\n }), {});\n\n let variant = store.findVariant(attributes, listVariantsProducts['productId' + productId]);\n let btnBuy = form.querySelector('[data-action=\"add-cart\"]');\n let boxMessage = form.querySelector('.msg-response .msg');\n\n boxMessage.innerHTML = '';\n btnBuy.innerHTML = '';\n btnBuy.insertAdjacentHTML('beforeend', btnBuy.dataset.textAvailable);\n btnBuy.classList.remove('-unavailable');\n form.querySelector('[name=sku]').setAttribute('value', '');\n\n if (variant.length < 1) {\n btnBuy.innerHTML = '';\n btnBuy.insertAdjacentHTML('beforeend', btnBuy.dataset.textUnavailable);\n btnBuy.classList.add('-unavailable');\n productWrapper.querySelector('.price').innerHTML = 'ESGOTADO';\n } else if (variant.length == 1) {\n if (!variant[0].available) {\n btnBuy.innerHTML = '';\n btnBuy.insertAdjacentHTML('beforeend', btnBuy.dataset.textUnavailable);\n btnBuy.classList.add('-unavailable');\n productWrapper.querySelector('.price').innerHTML = 'ESGOTADO';\n\n if (language == 'pt-BR') {\n boxMessage.innerHTML = 'Tamanho indisponível';\n } else {\n boxMessage.innerHTML = 'Size unavailable';\n }\n } else {\n form.querySelector('[name=sku]').setAttribute('value', variant[0].sku);\n\n if (productWrapper.querySelector('.price')) {\n productWrapper.querySelector('.price').innerHTML = '';\n \n if (language == 'pt-BR') {\n productWrapper.querySelector('.price').insertAdjacentHTML('beforeend',\n variant[0].price !== variant[0].sale_price ?\n `${store.formatMoney(variant[0].price)}${store.formatMoney(variant[0].sale_price)}` :\n store.formatMoney(variant[0].price)\n );\n } else {\n productWrapper.querySelector('.price').insertAdjacentHTML('beforeend', store.formatMoney(variant[0].intl_price).replace(',', '.'));\n }\n }\n\n $(btnBuy).trigger('click');\n }\n } else {\n if (language == 'pt-BR') {\n boxMessage.innerHTML = 'Selecione +1 atributo';\n } else {\n boxMessage.innerHTML = 'Select +1 attribute';\n }\n }\n })\n\n $(document).on('submit', '[data-product-block] [data-form-product]', function (event) {\n event.preventDefault();\n\n var $form = $(this);\n var $parent = $form.closest('[data-form-product]');\n\n var respValidated = store.validateFormProduct($form);\n var $boxResponse = $parent.find('.add-to-cart-button');\n\n if (respValidated.validated) {\n store.addItem($form, $parent, function (_$form, _typeResult, _result, _$boxResponse) {\n template_store.addItemResult(_$form, _typeResult, _result, _$boxResponse);\n });\n } else {\n //console.info('não foi');\n store.setRespValidateProduct(respValidated, $form, $boxResponse);\n }\n })\n },\n\n setMenuMobile: function () {\n const $btnToggleMenuMobile = $('[data-action=\"toggle-side-menu\"]');\n const $btnOpenSubmenu = $('[data-action=\"open-submenu\"]');\n const $btnCloseSubmenu = $('[data-action=\"close-submenu\"]');\n const $overlay = $('[data-overlay-menu-mobile]');\n\n function closeSubmenu() {\n $('.submenu-list').removeClass('active');\n $btnToggleMenuMobile.find('svg').toggleClass('active');\n $('.side-nav').toggleClass('open');\n $overlay.toggleClass('active');\n $('[svg-submenu]').removeClass('active');\n }\n\n $btnToggleMenuMobile.on('click', () => {\n closeSubmenu();\n });\n\n $overlay.on('click', () => {\n closeSubmenu();\n })\n\n $btnOpenSubmenu.on('click', function () {\n if ($(this).siblings('.submenu-list').hasClass('active')) {\n $(this).find('[svg-submenu]').removeClass('active');\n $(this).siblings('.submenu-list').removeClass('active');\n } else {\n $('.submenu-list').removeClass('active');\n $('[svg-submenu]').removeClass('active');\n $(this).find('[svg-submenu]').addClass('active');\n $(this).siblings('.submenu-list').addClass('active');\n }\n })\n\n $btnCloseSubmenu.on('click', function () {\n $(this).closest('.submenu-list').removeClass('active');\n })\n },\n\n setToggleFooter: function () {\n const $toggleFooter = $('[data-toggle-footer]');\n const $toggleMenu = $('[data-toggle-menu]')\n\n if ($body.width() > 992) $('.column-menu ul').toggleClass('active');\n\n $toggleMenu.on('click', function () {\n if ($body.width() <= 992) {\n if ($(this).siblings('ul').hasClass('active')) {\n $(this).siblings('ul').removeClass('active');\n $(this).removeClass('active')\n\n } else {\n $('.column-menu ul').removeClass('active')\n $('[data-toggle-menu]').removeClass('active')\n $(this).addClass('active')\n $(this).siblings('ul').addClass('active')\n }\n }\n })\n },\n\n setProductsCarousel: function () {\n // Inicializa os carrosseis de produtos default\n $('[data-products-carousel]').each(function (index, el) {\n\n // Pega a quantidade de itens que o carrossel contém\n var qtdItems = $(el).find('[data-item]').length;\n\n var swiperProductsCarousel = new Swiper($(el), {\n lazy: {\n checkInView: true,\n loadOnTransitionStart: true,\n loadPrevNext: true,\n loadPrevNextAmount: 1\n },\n slidesPerView: 4,\n watchOverflow: true,\n breakpoints: {\n 325: {\n slidesPerView: 2,\n spaceBetween: 15\n },\n 640: {\n spaceBetween: 21,\n slidesPerView: 3,\n },\n 1200: {\n spaceBetween: 21,\n slidesPerView: 4,\n },\n },\n mousewheel: {\n forceToAxis: true,\n },\n navigation: {\n nextEl: $(el).closest('.wrapper-products').find('.swiper-button-next'),\n prevEl: $(el).closest('.wrapper-products').find('.swiper-button-prev'),\n },\n pagination: {\n el: $(el).closest('.wrapper-products').find('.swiper-pagination'),\n type: 'progressbar',\n clickable: true\n }\n });\n });\n },\n\n submitForm: function (_$form) {\n _$form.find('[name=\"reply_to\"]').val(_$form.find('[name=\"email\"]').val());\n var dataForm = _$form.serialize();\n var contentTypeForm = 'application/x-www-form-urlencoded; charset=UTF-8';\n var processDataForm = true;\n\n if (_$form.find('input[type=\"file\"]').val() != '') {\n inputFile = _$form.find('input[type=\"file\"]')[0];\n dataForm = new FormData(_$form[0]);\n contentTypeForm = false;\n processDataForm = false;\n }\n\n if (!_$form.hasClass('sending')) {\n $.ajax({\n url: '/webform',\n type: 'POST',\n data: dataForm,\n contentType: contentTypeForm,\n processData: processDataForm,\n beforeSend: function () {\n _$form.addClass('sending');\n },\n })\n .done(function () {\n // console.info('foi');\n // store.setMsgResponse('Mensagem enviada com sucesso!', 'success', _$form);\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\n\n if (_$form.data('webform') == 'newsletter') {\n store.setMsgResponse('Mensagem enviada com sucesso!', 'success', _$form);\n } else {\n _$form.find('button[type=submit]').text('Enviado');\n }\n\n setTimeout(function () {\n if (_$form.data('webform') != 'newsletter') {\n _$form.find('button[type=submit]').text('Enviar');\n }\n }, 3500);\n _$form[0].reset();\n })\n .fail(function () {\n // console.info('foi, mas deu ruim');\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\n _$form.find('button[type=submit]').text('Falha ao enviar');\n setTimeout(function () {\n _$form.find('button[type=submit]').text('Enviar');\n }, 3500);\n // store.setMsgResponse('Houve um problema ao enviar sua mensagem, tente novamente! Ou entre em contato conosco pelo telefone (21) 99644-6925 ', 'error', $form);\n })\n .always(function () {\n // console.log('complete');\n _$form.removeClass('sending');\n });\n }\n },\n\n getPriceProd: function () {\n const {\n selector,\n attr,\n processedAttr\n } = store.config.priceProds;\n const products = document.querySelectorAll(selector);\n\n if (products.length > 0) products.forEach(product => {\n const processed = product.getAttribute(processedAttr);\n const page = product.getAttribute('data-page');\n\n if (processed != 'true') {\n const prodId = product.getAttribute(attr);\n const url = `/produto/preco/${prodId}${page ? `?page=${page}` : ''}`;\n\n if (prodId != null && prodId != '') {\n $.ajax({\n url: url,\n type: 'GET',\n })\n .done(function (resp) {\n // console.info(resp);\n product.innerHTML = resp;\n product.setAttribute(processedAttr, true);\n })\n .fail(function (resp) {\n // console.error(`Falha ao buscar o preço do produto ${prodId}`);\n // console.log(resp);\n });\n }\n }\n })\n },\n\n login: {\n validateLogin: function (_$form) {\n var validated = true;\n var errorsTxt = [];\n\n if (_$form.find('[name=\"email\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu email!');\n }\n\n if (_$form.find('[name=\"password\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe a senha!');\n }\n\n return {\n validated: validated,\n errors: errorsTxt\n };\n },\n validateRegister: function (_$form) {\n var validated = true;\n var errorsTxt = [];\n\n if (_$form.find('[name=\"email\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu email!');\n }\n\n if (_$form.find('[name=\"password\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe uma senha!');\n }\n\n if (_$form.find('[name=\"password\"]').val() != '') {\n var pass = _$form.find('[name=\"password\"]').val();\n var confirmationPass = _$form.find('[name=\"password_confirmation\"]').val();\n\n if (pass != confirmationPass) {\n validated = false;\n errorsTxt.push('Senha e confirmação são diferentes!');\n }\n }\n\n return {\n validated: validated,\n errors: errorsTxt\n };\n },\n validateRecover: function (_$form) {\n var validated = true;\n var errorsTxt = [];\n\n if (_$form.find('[name=\"email\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu email!');\n }\n\n return {\n validated: validated,\n errors: errorsTxt\n };\n },\n logar: function (_$form) {\n if (!_$form.hasClass('sending')) {\n $.ajax({\n url: '/entrar',\n type: 'POST',\n dataType: 'json',\n data: _$form.serialize(),\n beforeSend: function () {\n _$form.addClass('sending');\n },\n })\n .done(function (resp) {\n // console.log('success', resp);\n\n if (resp.error) {\n store.setMsgResponse(resp.error, 'error', _$form);\n }\n\n if (resp.client) {\n window.location.href = resp.redirect_to;\n }\n })\n .fail(function (resp) {\n console.error('error', error.responseText);\n })\n .always(function () {\n // console.log('complete');\n _$form.removeClass('sending');\n });\n }\n },\n recoverPassord: function (_$form) {\n if (!_$form.hasClass('sending')) {\n $.ajax({\n url: '/recuperar_senha',\n type: 'POST',\n dataType: 'json',\n data: _$form.serialize(),\n beforeSend: function () {\n _$form.addClass('sending');\n },\n })\n .done(function (resp) {\n // console.log('success', resp);\n\n if (resp.error) {\n store.setMsgResponse(resp.error, 'error', _$form);\n }\n\n if (resp.ok) {\n store.setMsgResponse(resp.ok, 'success', _$form);\n }\n\n /*if (resp.client) {\n window.location.href = resp.redirect_to;\n }*/\n })\n .fail(function (resp) {\n console.error('error', error.responseText);\n })\n .always(function () {\n // console.log('complete');\n _$form.removeClass('sending');\n });\n }\n },\n },\n\n throttle: function (fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last, deferTimer;\n return function () {\n var context = scope || this;\n\n var now = +new Date(),\n args = arguments;\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n },\n};\n\nwindow.template_store = {\n /* \n Manda um ajax para o form de avise-me e também para um form da plataforma para o cliente receber um email\n */\n submitFormNotify: function (_$form) {\n var formData = _$form.serialize();\n\n if (!_$form.hasClass('sending') && _$form.find('[name=\"sku\"]').val() != '') {\n $.ajax({\n url: _$form.attr('action'),\n type: 'post',\n dataType: 'json',\n data: formData,\n beforeSend: function () {\n _$form.addClass('sending');\n },\n })\n .done(function (resp) {\n // console.log('success');\n // console.info(resp);\n\n var msgSuccess = 'Você receberá um e-mail quando o produto estiver disponível';\n\n if (resp.error) {\n _$form.find('[data-msg-retorno] [data-msg-error]').html(resp.error);\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\n } else {\n // Envia um email para o cliente saber que o usuário solicitou o avise-me\n $.ajax({\n url: '/webform',\n type: 'POST',\n data: {\n key: _$form.find('[name=\"key\"]').val(),\n reply_to: _$form.find('[name=\"email\"]').val(),\n email: _$form.find('[name=\"email\"]').val(),\n product_name: _$form.find('[name=\"produto\"]').val(),\n referencia: _$form.find('[name=\"referencia\"]').val(),\n sku: _$form.find('[name=\"sku\"]').val(),\n },\n })\n .done(function (resp) {\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-attr]').removeClass('active');\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\n\n _$form[0].reset();\n })\n .fail(function (error) {\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\n });\n }\n })\n .fail(function (resp) {\n console.log('error');\n console.error(resp);\n console.error(resp.responseText);\n console.error(resp.responseText.error);\n\n var errorText = JSON.parse(resp.responseText);\n console.info(errorText);\n \n _$form.find('[data-msg-retorno] [data-msg-error]').html(errorText.error);\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\n })\n .always(function () {\n _$form.removeClass('sending');\n });\n }\n },\n /* \n Função que executa o comportamento de quando o produto é adicionado no carrinho\n */\n addItemResult: function (_$form, _typeResult, _result, _$boxResponse) {\n var _this;\n var $btnComprar = _$form.find(store.config.selectorBtnBuy);\n\n if (document.location.search.includes('quickview')) {\n var parentWindow = window.parent;\n parentWindow.postMessage(['produto-adicionado-quick-view', _result], '*');\n\n } else if (_typeResult == 'produto-adicionado') {\n \n\n $btnComprar.addClass('success').html(getText(language));\n\n setTimeout(function () {\n // _$form.find('.msg-response').slideUp(350);\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\n }, 3500);\n\n if (language !== 'pt-BR') {\n window.location.href = urlCart;\n }\n\n if ($body.width() > 768) {\n if (store.config.addToCartOpenCartpopup) {\n template_store.headerCart.loadCart(_result);\n template_store.headerCart.show();\n } else {\n setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\n }\n } else {\n if (store.config.addToCartOpenCartpopupMobile) {\n template_store.headerCart.loadCart(_result);\n template_store.headerCart.show();\n } else {\n setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\n }\n }\n } else if (_typeResult == 'erro-adicionar') {\n var errorText = JSON.parse(_result.responseText);\n\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\n console.info(errorText);\n\n _$boxResponse.addClass('error');\n _$boxResponse.removeClass('success');\n\n if (_result.responseText.includes('sku')) \n _$boxResponse.html(`Por favor, selecione o tamanho desejado`)\n }\n }\n },\n validateFormNewsletter: function (_$form) {\n var validated = true;\n var errorsTxt = [];\n\n if (_$form.find('[name=\"email\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu email!');\n console.log('vazio email')\n }\n\n if (_$form.find('[name=\"nome\"]').val() == '') {\n validated = false;\n console.log('vazio nome')\n errorsTxt.push('Informe seu nome!');\n }\n\n return {\n validated: validated,\n errors: errorsTxt\n };\n },\n headerCart: {\n\n loadCart: function (total) {\n store.updateCartCount(total.items_count);\n window.componentCartDrawer.open();\n },\n\n show: function () {\n window.componentCartDrawer.open();\n },\n\n toggleBtn: function () {\n function waitForElm(selector) {\n return new Promise(function (resolve) {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n var observer = new MutationObserver(function(mutations) {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true,\n subtree: true\n });\n });\n }\n waitForElm('#cart-drawer-el .cart-drawer-pt-2 .card-drawer-cta').then(function(btn) {\n if (!localStorage.getItem('logged-in')) {\n console.log('not logged in, button:', btn);\n\n let newBtn = btn.cloneNode(true);\n btn.parentNode.insertBefore(newBtn, btn);\n btn.remove();\n\n newBtn.addEventListener('click', () => {\n window.location.href = '/entrar';\n });\n }\n });\n },\n\n deleteKits: async function (name) {\n const items = { ...localStorage };\n\n const cartItems = await store.getCartItens(true);\n Object.entries(items).forEach(([key, value]) => {\n if (key.includes('combos-')) {\n const productNames = key.split('combos-')[1].split('//');\n const skus = value.split('//');\n\n console.log('Itens', skus);\n \n if (productNames.length > 0) productNames.forEach(pName => {\n if(pName.toLowerCase() == name.toLowerCase()) {\n skus.forEach((sku, i) => {\n if (sku && sku != null && sku != '') {\n cartItems.forEach(async function (cartItem) {\n console.log(i);\n if (cartItem.variant_sku == sku) {\n const id = cartItem.id;\n await store.deleteItem(id, $(document.body), '', i == (skus.length - 2), key);\n }\n });\n }\n });\n }\n });\n }\n });\n },\n \n observeKits: function () {\n const { deleteKits } = this;\n let cartEl = document.querySelector('#component-cart-drawer-root');\n let observer = new MutationObserver(mutation => {\n let cartItems = cartEl.querySelectorAll('.cart-item:not(.-ready)');\n if (cartItems.length > 0) cartItems.forEach((item, index) => {\n\n let name = item.querySelector('.cart-list-item-name a');\n if (name.innerText.includes('[CONJUNTO]')) {\n \n let buttonTrash = item.querySelector('.cart-buttons-trash');\n let wrapperTrash = buttonTrash.parentElement;\n\n if (index == 1) {\n wrapperTrash.classList.add('-remove');\n }\n \n let newButton = buttonTrash.cloneNode(true);\n newButton.addEventListener('click', () => {\n deleteKits(name.innerText);\n });\n \n buttonTrash.remove();\n wrapperTrash.appendChild(newButton);\n \n if (item.querySelector('.cart-buttons-min')) item.querySelector('.cart-buttons-min').remove();\n if (item.querySelector('.cart-buttons-plus')) item.querySelector('.cart-buttons-plus').remove();\n \n item.classList.add('-ready');\n }\n });\n });\n observer.observe(cartEl, { attributes: true, childList: true, subtree: true });\n },\n\n },\n /*\n Debounce retorna uma função que enquanto continuar sendo chamada não é executada\n A função só será executada quando para de ser chamada por N milisegundos\n Útil para melhorar a performance de códigos que são executados muitas vezes por segundo, como o $(window).resize()\n\n Ex:\n \n $(window).resize(debounce(function() {\n // código a ser executado\n }, 500))\n \n No exemplo acima a função só será executada 500ms depois do último resize\n Abra o link abaixo e redimensione a janela branca e acompanhe o output do console\n Exemplo codepen: https://codepen.io/valkervieira/pen/oNgqyWY\n\n Um caso comum de uso é em lojas onde a seleção de um filtro na página de tag recarrega automáticamente a página\n Com o debounce o usuário pode escolher vários filtros rapidamente e a página só recarrega quando parar de escolher\n */\n debounce: function (func, wait, immediate = true) {\n var timeout;\n\n return function () {\n var context = this,\n args = arguments;\n\n var later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n };\n },\n setHeaderOnScroll: function () {\n let header = document.querySelector('#header');\n\n if (header) {\n window.addEventListener('scroll', store.throttle(() => {\n window.scrollY > 110 ? header.classList.add('fixed') : header.classList.remove('fixed')\n }));\n }\n },\n setProductBlockImages: function () {\n const colors = document.querySelectorAll('[data-product-block-color]');\n if (colors.length > 0) colors.forEach(color => {\n let block = color.closest('[data-product-block]');\n let id = color.getAttribute('data-product-block-color');\n\n if (color.hasAttribute('data-processed')) return;\n \n color.addEventListener('click', (e) => {\n e.preventDefault();\n // console.log('click 24/4', color)\n let colorUrlBlock = color.querySelector('[data-product-url]')\n if (colorUrlBlock){\n let colorUrlAttr = colorUrlBlock.getAttribute('data-product-url')\n block.querySelector('a').href = colorUrlAttr\n }\n\n if (!color.classList.contains('active')) {\n if (block.querySelector('[data-product-block-figure].active')) block.querySelector('[data-product-block-figure].active').classList.remove('active');\n if (block.querySelector(`[data-product-block-figure=\"${id}\"]`)) block.querySelector(`[data-product-block-figure=\"${id}\"]`).classList.add('active');\n if (block.querySelector('[data-product-block-color].active')) block.querySelector('[data-product-block-color].active').classList.remove('active');\n if (block.querySelector(`[data-product-block-color=\"${id}\"]`)) block.querySelector(`[data-product-block-color=\"${id}\"]`).classList.add('active');\n }\n });\n color.setAttribute('data-processed', true);\n });\n },\n home: {\n setPrimaryBanner: function () {\n let banners = document.querySelectorAll(\"[data-slider-primary]\");\n\n banners.forEach((slider) => {\n var slider = new Swiper(slider, {\n slidesPerView: 1,\n spaceBetween: 0,\n watchOverflow: true,\n autoplay: {\n delay: 10000\n },\n lazy: {\n checkInView: true,\n loadOnTransitionStart: true,\n loadPrevNext: true,\n loadPrevNextAmount: 1\n },\n speed: 800,\n navigation: {\n nextEl: slider.querySelector(\".swiper-button-next\"),\n prevEl: slider.querySelector(\".swiper-button-prev\"),\n },\n pagination: {\n el: slider.querySelector(\".swiper-pagination\"),\n type: \"bullets\",\n clickable: true,\n },\n });\n });\n },\n\n\n setSliderInstagram: function () {\n $('[data-slider-instagram]').each(function (index, el) {\n\n var swiperInstagramCarousel = new Swiper($(el), {\n spaceBetween: 2,\n watchOverflow: true,\n loop: true,\n breakpoints: {\n 280: {\n slidesPerView: 2.15\n },\n 640: {\n slidesPerView: 4\n },\n 992: {\n slidesPerView: 5\n }\n }\n });\n });\n },\n\n // Aqui ficam os js da home\n init: function () {\n this.setPrimaryBanner();\n this.setSliderInstagram();\n store.setQuickBuy();\n },\n },\n product: {\n // Aqui ficam os js do transacional\n $sectionProduct: $('[data-section-product]'),\n $wrapperImages: $('[data-section-product]').find('[data-product-images]'),\n $sliderProduct: $('[data-section-product]').find('[data-product-images] [data-main-slider]'),\n $thumbsProduct: $('[data-section-product]').find('[data-product-images] [data-slider-thumbs]'),\n sliderProduct: [],\n /* \n Exibe as primeiras imagens do produto\n ** Importante para quando houver imagem por sku **\n */\n showFirstImages: function () {\n var _this = this;\n var variants = vnda.variants.all();\n var $imagesWithoutSkus = _this.$sliderProduct.find('.image-without-sku');\n var $thumbsWithoutSkus = _this.$thumbsProduct.find('.image-without-sku');\n\n if ($imagesWithoutSkus.length > 0) {\n /* \n Todas as imagens sem skus são exibidas sempre\n */\n\n $imagesWithoutSkus.removeClass('inactive').addClass('active');\n\n $thumbsWithoutSkus.removeClass('inactive').addClass('active');\n } else {\n /* \n Percorre todas as variantes\n */\n for (var i = 0; i < variants.length; i++) {\n if (variants[i].main) {\n console.info(variants[i]);\n\n // Procura a imagem que contém o sku e a exibe\n _this.$sliderProduct\n .find('[data-image][data-skus-image*=\"' + variants[i].sku + '\"]')\n .addClass('active')\n .removeClass('inactive');\n\n _this.$thumbsProduct\n .find('[data-image-thumb][data-skus-image*=\"' + variants[i].sku + '\"]')\n .addClass('active')\n .removeClass('inactive');\n }\n }\n }\n },\n setGallery: function () {\n var _this = this;\n\n var galleryThumbs = new Swiper('.swiper-container[data-slider-thumbs]', {\n direction: 'vertical',\n spaceBetween: 5,\n slidesPerView: 9,\n navigation: {\n nextEl: $('.swiper-container[data-slider-thumbs]').find('.swiper-button-next'),\n prevEl: $('.swiper-container[data-slider-thumbs]').find('.swiper-button-prev'),\n },\n });\n\n var gallery = new Swiper(_this.$sliderProduct, {\n speed: 500,\n slidesPerView: 1,\n direction: 'vertical',\n mousewheel: true,\n thumbs: {\n swiper: galleryThumbs,\n },\n\n navigation: {\n nextEl: $('.swiper-container[data-main-slider]').find('.swiper-button-next'),\n prevEl: $('.swiper-container[data-main-slider]').find('.swiper-button-prev'),\n },\n pagination: {\n el: $('.swiper-container[data-main-slider]').siblings('.swiper-pagination'),\n type: 'progressbar',\n clickable: true\n },\n breakpoints: {\n 280: {\n direction: 'horizontal'\n\n },\n 992: {\n direction: 'vertical',\n allowTouchMove: false\n }\n },\n });\n\n this.sliderProduct.push(gallery);\n this.sliderProduct.push(galleryThumbs);\n\n $(document).on('click', '[data-image-thumb]:visible', function () {\n gallery.slideTo($(this).index('[data-image-thumb]:visible'));\n let activeZoom = $('.mz-active').closest('[data-image-product]').attr('id');\n MagicZoom.zoomOut(activeZoom)\n });\n\n $(document).on('mouseleave', '[data-image-product]:visible', function () {\n let activeZoom = $('.mz-active').closest('[data-image-product]').attr('id');\n MagicZoom.zoomOut(activeZoom)\n });\n\n gallery.on('slideChange', function () {\n let activeZoom = $('.mz-active').closest('[data-image-product]').attr('id');\n MagicZoom.zoomOut(activeZoom)\n });\n },\n\n setCrossSellingCarousel: function () {\n var swiperCrossSelling = new Swiper($('[data-cross-selling-carousel]'), {\n watchOverflow: true,\n navigation: {\n nextEl: $('[data-cross-selling-carousel]').siblings('.swiper-button-next'),\n prevEl: $('[data-cross-selling-carousel]').siblings('.swiper-button-prev'),\n },\n breakpoints: {\n 280: {\n slidesPerView: 1.5,\n spaceBetween: 30\n },\n 520: {\n spaceBetween: 10,\n slidesPerView: 2\n }\n }\n });\n },\n\n setRelatedsCarousel: function () {\n var swiperRelateds = new Swiper($('[data-relateds-carousel]'), {\n slidesPerView: 4,\n watchOverflow: true,\n breakpoints: {\n 325: {\n slidesPerView: 1,\n spaceBetween: 15,\n loop: true\n },\n 640: {\n spaceBetween: 21,\n slidesPerView: 3,\n loop: false\n },\n 1200: {\n loop: false,\n spaceBetween: 80,\n slidesPerView: 4,\n },\n },\n mousewheel: {\n forceToAxis: true,\n },\n navigation: {\n nextEl: $('[data-relateds-carousel]').siblings('.swiper-button-next'),\n prevEl: $('[data-relateds-carousel]').siblings('.swiper-button-prev'),\n },\n });\n },\n\n setSizeGuide: function () {\n const $btnSizeGuide = $('[data-action=\"toggle-size-guide\"]');\n const $overlay = $('[data-overlay]');\n const $popupSizeGuide = $('[data-popup-size-guide]');\n\n $btnSizeGuide.on('click', function (e) {\n e.preventDefault();\n\n $overlay.toggleClass('active');\n $popupSizeGuide.toggleClass('visible');\n });\n\n $overlay.on('click', function () {\n $(this).toggleClass('active');\n $popupSizeGuide.toggleClass('visible');\n })\n },\n\n submitNotify: function () {\n $(document).on('submit', '[data-form-notify]', function (event) {\n event.preventDefault();\n template_store.submitFormNotify($(this));\n });\n },\n\n addToCartSet: function (skusInputs, $form) {\n const skus = skusInputs.map(input => input.value);\n var $boxResponse = $('[data-box-produto]').find('[data-form-product] .add-to-cart-button');\n var respValidated = store.validateFormProduct($form);\n\n const result = store.addItemArray(skus);\n result\n .then(() => {\n setTimeout(function () {\n $('.add-to-cart-button').removeClass('unavailable');\n }, 3000);\n template_store.headerCart.show();\n })\n .catch((resp) => {\n if (respValidated.validated) {\n\n if (typeof template_store.addItemResult == 'function') {\n template_store.addItemResult($form, 'erro-adicionar', resp, $boxResponse);\n } else {\n template_store.addItemResultDefault($form, 'erro-adicionar', resp, $boxResponse);\n }\n\n setTimeout(function () {\n $('.add-to-cart-button').removeClass('unavailable');\n }, 3000);\n\n } else {\n //console.info('não foi');\n store.setRespValidateProduct(respValidated, $form, $boxResponse);\n }\n \n })\n },\n\n setBottomBar: function () {\n const sizes = document.querySelector('[data-product-sizes]');\n\n if (sizes) {\n const sku = sizes.querySelector('input[name=\"sku\"]');\n const button = document.querySelector('.bottom-bar .add-to-cart-button');\n\n const open = document.querySelector('[data-product-sizes-open]');\n open.addEventListener('click', () => { sizes.classList.add('-active') });\n\n const closes = document.querySelectorAll('[data-product-sizes-close]');\n closes.length > 0 && closes.forEach(close => { close.addEventListener('click', () => { sizes.classList.remove('-active') }) });\n\n const inputs = sizes.querySelectorAll('input');\n inputs.length > 0 && inputs.forEach(input => {\n input.checked = false;\n input.addEventListener('change', () => {\n sizes.classList.remove('-active');\n \n if (input.checked) {\n button.classList.remove('-disabled');\n\n let text = input.nextElementSibling.querySelector('.text').innerHTML;\n\n open.innerHTML = `${text} +`;\n window.productVariants.forEach(v => { \n if (v.properties.property2.value == text) {\n sku.value = v.sku;\n\n // Ajusta SKU do form de referência do envio\n const mainFormSku = document.querySelector('.product-infos [data-form-product] [name=\"sku\"]')\n if (mainFormSku) {\n mainFormSku.value = v.sku\n mainFormSku.setAttribute('value', v.sku)\n }\n \n // Ajusta texto de estoque\n if (v.available) {\n if (v.available_quantity <= 4) {\n let propertyValue = v.properties.property1.value.toLowerCase();\n let variantAvailableText = `Resta(m) apenas ${v.available_quantity} unidade(s) deste produto.`;\n \n if (propertyValue == 'top') {\n $('.quantity-text-top').removeClass('hidden');\n $('.quantity-text-top').find('span').text(variantAvailableText)\n } else if (propertyValue == 'bottom') {\n $('.quantity-text-bottom').removeClass('hidden');\n $('.quantity-text-bottom').find('span').text(variantAvailableText)\n } else {\n $('.quantity-text').removeClass('hidden');\n $('.quantity-text').find('span').text(variantAvailableText)\n }\n } else {\n if (propertyValue == 'top') {\n $('.quantity-text-top').addClass('hidden');\n } else if (propertyValue == 'bottom') {\n $('.quantity-text-bottom').addClass('hidden');\n } else {\n $('.quantity-text').addClass('hidden');\n }\n } \n } else {\n $('.quantity-text').addClass('hidden');\n }\n \n let btn = document.querySelector('.add-to-cart-button');\n let notify = document.querySelector('[data-box-produto] [data-form-notify]');\n if (v.available) {\n btn.innerHTML = btn.getAttribute('data-text-available');\n btn.classList.remove('unavailable');\n notify.classList.remove('active');\n notify.querySelector('input[name=\"sku\"]').value = '';\n } else {\n btn.innerHTML = btn.getAttribute('data-text-unavailable');\n btn.classList.add('unavailable');\n notify.classList.add('active');\n notify.querySelector('input[name=\"sku\"]').value = v.sku;\n }\n };\n });\n }\n });\n });\n\n const toggle = document.querySelector('[data-product-colors-toggle]');\n const colors = document.querySelector('[data-product-colors-in]');\n if (toggle && colors) toggle.addEventListener('click', () => { colors.classList.toggle('-active') });\n }\n },\n\n setMobileAccordion: function (_element) {\n\n console.log(_element);\n document.querySelectorAll('[data-tab-toggle]').forEach(item => {\n if(!(_element === item)) {\n item.classList.remove('active');\n item.nextElementSibling.style.maxHeight = null;\n }\n });\n\n _element.classList.toggle('active');\n\n const panel = _element.nextElementSibling;\n\n if (panel.style.maxHeight) {\n panel.style.maxHeight = null;\n } else {\n panel.style.maxHeight = panel.scrollHeight + \"px\";\n }\n },\n\n init: function () {\n var _this = this;\n\n _this.showFirstImages();\n _this.setGallery();\n _this.setCrossSellingCarousel();\n _this.setRelatedsCarousel();\n _this.submitNotify();\n _this.setSizeGuide();\n _this.setBottomBar();\n store.setQuickBuy();\n\n const toggleTabs = document.querySelectorAll('[data-tab-toggle]');\n toggleTabs.forEach(toggleTab => {\n toggleTab.addEventListener('click', () => {\n _this.setMobileAccordion(toggleTab);\n });\n })\n\n const quickBuyMobile = document.querySelectorAll('.quick-add-mobile');\n\n quickBuyMobile.forEach(btn => {\n btn.addEventListener('click', (e) => {\n e.preventDefault();\n btn.nextElementSibling.classList.toggle('-visible-on-mobile');\n })\n });\n\n $(document).on('submit', store.config.selectorFormProduct, function (event) {\n event.preventDefault();\n\n var $form = $(this);\n var $parent = $form.closest(store.config.selectorWrapperProduct);\n\n if ($('[data-box-produto] [data-product-attributes]').length > 1) {\n $('.add-to-cart-button').addClass('unavailable');\n const skusInputs = [...document.querySelectorAll('[data-box-produto] [data-form-product] [name=sku]')];\n _this.addToCartSet(skusInputs, $form);\n\n } else {\n var $btnComprar = $parent.find(store.config.selectorBtnBuy);\n\n var respValidated = store.validateFormProduct($form);\n var $boxResponse = $parent.find('.add-to-cart-button');\n\n if (respValidated.validated) {\n store.addItem($form, $parent);\n } else {\n console.info('não foi');\n setTimeout(()=> {\n store.setRespValidateProduct(respValidated, $form, $boxResponse);\n }, 150)\n }\n }\n });\n },\n },\n tag: {\n //Aqui ficam os js da listagem\n\n init: function () {\n var _this = this;\n\n store.setQuickBuy();\n store.setQuickView();\n store.setFilters();\n store.setFilterSelected();\n store.setImagesBetweenProducts();\n\n const quickBuyMobile = document.querySelectorAll('.quick-add-mobile');\n\n quickBuyMobile.forEach(btn => {\n btn.addEventListener('click', (e) => {\n e.preventDefault();\n btn.nextElementSibling.classList.toggle('-visible-on-mobile');\n })\n });\n },\n },\n search: {\n init: function () {\n store.setQuickBuy();\n store.setFilters();\n store.setFilterSelected();\n\n const quickBuyMobile = document.querySelectorAll('.quick-add-mobile');\n\n quickBuyMobile.forEach(btn => {\n btn.addEventListener('click', (e) => {\n e.preventDefault();\n btn.nextElementSibling.classList.toggle('-visible-on-mobile');\n })\n });\n }\n },\n page: {\n setShowMoreCardsButton: function () {\n const $btnShowMore = $('[data-action=\"show-more\"]');\n const $cards = $('.card');\n const totalCards = $cards.length;\n const initialCardsMobile = 4;\n const cardsPerClick = 2;\n let visibleCards = initialCardsMobile;\n\n $cards.slice(initialCardsMobile).addClass('hidden');\n\n $btnShowMore.on('click', function () {\n $cards.slice(visibleCards, visibleCards + cardsPerClick).removeClass('hidden');\n visibleCards = $('.card:not(.hidden)').length;\n\n if (totalCards == visibleCards) {\n $(this).hide();\n }\n })\n },\n\n setSliderTimeline: function () {\n $('[data-slider-timeline]').each(function (index, el) {\n\n var swiperTimelineCarousel = new Swiper($(el), {\n spaceBetween: 25,\n watchOverflow: true,\n breakpoints: {\n 280: {\n slidesPerView: 1\n },\n 520: {\n slidesPerView: 2\n },\n 767: {\n slidesPerView: 3\n },\n 1200: {\n slidesPerView: 4\n }\n },\n navigation: {\n nextEl: $(el).closest('.wrapper-banners').find('.swiper-button-next'),\n prevEl: $(el).closest('.wrapper-banners').find('.swiper-button-prev'),\n },\n });\n });\n },\n\n setUploadedFile: function () {\n $('[name=\"curriculo\"]').on('change', function (e) {\n let file = e.target.value;\n file = file.split('\\\\').pop()\n\n if (!file) {\n file = 'Carregar currículo (PDF ou DOC)'\n }\n\n $('[data-file-uploaded]').text(file)\n })\n },\n\n setSliderStudios: function () {\n let swiperStudios = document.querySelectorAll(\"[data-slider-studios]\");\n\n swiperStudios.forEach((slider) => {\n var slider = new Swiper(slider, {\n spaceBetween: 32,\n watchOverflow: true,\n navigation: {\n nextEl: slider.querySelector(\".swiper-button-next\"),\n prevEl: slider.querySelector(\".swiper-button-prev\"),\n },\n breakpoints: {\n 280: {\n slidesPerView: 1\n },\n 520: {\n slidesPerView: 2\n },\n 767: {\n slidesPerView: 3\n },\n 1200: {\n slidesPerView: 4\n }\n }\n });\n });\n },\n collabs: {\n topContentAnimations: function () {\n const topTexts = document.querySelectorAll(\"[data-initial-text]\");\n const bottomTexts = document.querySelectorAll(\"[data-main-text]\");\n\n window.addEventListener(\"scroll\", function () {\n const scrollY = window.scrollY;\n \n topTexts.forEach(topText => {\n //Cálculos para o primeiro texto\n const calcUpText = (scrollY / 2).toFixed(0);\n if (calcUpText <= 0) {\n topText.style.transform = 'translateY(0)'\n topText.style.opacity = '1'\n } else { \n let opacityCalc = (2.5 / calcUpText) * 5;\n topText.style.transform = `translateY(-${calcUpText}px)`;\n opacityCalc <= 0.20 ? topText.style.opacity = \"0\" : topText.style.opacity = `${opacityCalc}`\n }\n })\n\n bottomTexts.forEach(bottomText => {\n //Cálculos para o segundo texto\n const calcBottomText = (scrollY / 6.5).toFixed(0);\n var limitToUp = 40;\n\n if (calcBottomText <= 0) {\n bottomText.style.bottom = \"0%\";\n bottomText.style.opacity = \"0\";\n } else {\n if (calcBottomText >= limitToUp) {\n bottomText.style.bottom = `${limitToUp}%`;\n bottomText.style.opacity = \"1\";\n } else {\n let opacityBottomCalc = (calcBottomText / 4) / 10;\n bottomText.style.bottom = `${calcBottomText}%`;\n opacityBottomCalc <= 0.20 ? bottomText.style.opacity = \"0\" : bottomText.style.opacity = `${opacityBottomCalc}`\n }\n }\n })\n \n });\n },\n bottomContentAnimations: async function () {\n const topContentHeight = document.querySelector(\"[data-top-content]\").offsetHeight;\n const bottomContainer = document.querySelector(\"[data-bottom-content]\");\n const elementTranslated = document.querySelector(\"[data-translated-element]\");\n const rightBanners = document.querySelectorAll(\"[data-right-banner]\");\n const header = document.getElementById(\"header\");\n let element;\n\n $body.width() > 992\n ? element = document.getElementById(\"section-products\")\n : element = document.getElementById(\"collab-banner\");\n \n window.addEventListener(\"scroll\", () => {\n const offsetTop = bottomContainer.getBoundingClientRect().top;\n const headerHeight = header.offsetHeight;\n const calcHeaderLimit = offsetTop - headerHeight;\n\n //Translate inicia somente abaixo do top-content\n var calcTranslate = window.scrollY - topContentHeight;\n \n //limita scroll entre header e o footer\n if (!element.classList.contains(\"isIntersecting\") && calcHeaderLimit <= 5) {\n\n //exibe todos elementos\n rightBanners.forEach(banner => {\n banner.classList.remove(\"-hidden\");\n })\n\n calcHeaderLimit <= 5 ?\n elementTranslated.style.transform = `translate3d(0, calc(-40% + ${calcTranslate}px), 0)` :\n elementTranslated.style.transform = `translate3d(0, -40%, 0)`\n } else {\n\n //Esconde os elementos que já passaram do footer - garante que nenhum espaçamento indevido apareça\n if (element.classList.contains(\"isIntersecting\")) {\n rightBanners.forEach(banner => {\n banner.classList.add(\"-hidden\")\n })\n }\n \n }\n });\n\n },\n observerElements: function () {\n let element;\n let optionsElement = {}\n\n if($body.width() > 992 ) {\n element = document.getElementById(\"section-products\");\n }else {\n element = document.getElementById(\"collab-banner\");\n optionsElement = { rootMargin: \"0px 0px 0px 0px\"}\n }\n\n const elementObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(entry => {\n if (!entry.isIntersecting) {\n entry.target.classList.remove(\"isIntersecting\")\n return entry.target;\n\n } else {\n entry.target.classList.add(\"isIntersecting\")\n return entry.target;\n }\n\n })\n }, optionsElement)\n elementObserver.observe(element)\n },\n },\n\n init: function () {\n var _this = this;\n\n _this.setSliderStudios();\n _this.setUploadedFile();\n _this.setSliderTimeline();\n\n if ($body.width() <= 767) {\n _this.setShowMoreCardsButton();\n }\n\n if (window.location.href.includes(\"bicsoleil\") || window.location.href.includes(\"collab-\")) {\n _this.collabs.topContentAnimations();\n _this.collabs.bottomContentAnimations();\n _this.collabs.observerElements();\n store.setQuickView();\n }\n }\n },\n login: {\n init: function () {\n $('[data-content-login]').each(function (index, el) {\n // Animação\n $(el).on('click', '[data-forget-password]', function (event) {\n event.preventDefault();\n $(el).find('.wrapper-form-login').animate({\n height: 'toggle'\n }, 500);\n $(el).find('.wrapper-form-recover').animate({\n height: 'toggle'\n }, 500);\n });\n\n $(el).on('click', '[data-forget-password-back]', function (event) {\n event.preventDefault();\n $(el).find('.wrapper-form-login').animate({\n height: 'toggle'\n }, 500);\n $(el).find('.wrapper-form-recover').animate({\n height: 'toggle'\n }, 500);\n });\n\n $(el).on('submit', '[data-form-login]', function (event) {\n event.preventDefault();\n\n var $form = $(this);\n var respValidated = store.login.validateLogin($form);\n\n if (respValidated.validated) {\n store.login.logar($form);\n } else {\n store.setMsgResponse(respValidated.errors, 'error', $(this));\n }\n });\n\n $(el).on('submit', '[data-form-register]', function (event) {\n event.preventDefault();\n\n var $form = $(this);\n var respValidated = store.login.validateRegister($form);\n\n if (respValidated.validated) {\n store.login.logar($form);\n } else {\n store.setMsgResponse(respValidated.errors, 'error', $(this));\n }\n });\n\n $(el).on('submit', '[data-form-recover]', function (event) {\n event.preventDefault();\n\n var $form = $(this);\n var respValidated = store.login.validateRecover($form);\n\n if (respValidated.validated) {\n store.login.recoverPassord($form);\n } else {\n store.setMsgResponse(respValidated.errors, 'error', $(this));\n }\n });\n });\n\n $(\"[data-forget-password]\").on(\"click\", function () {\n $(\".form-recover\").slideDown()\n $(\".form-login\").slideUp()\n });\n\n $(\"[data-forget-password-back]\").on(\"click\", function () {\n $(\".form-recover\").slideUp()\n $(\".form-login\").slideDown()\n });\n },\n },\n init: function () {\n var _this = this;\n store.getCartCount();\n store.setTopBar();\n store.setSearchForm();\n template_store.setHeaderOnScroll();\n store.setProductsCarousel();\n store.setToggleFooter();\n store.setMenuMobile();\n store.getPriceProd();\n \n _this.setProductBlockImages();\n\n // _this.headerCart.toggleBtn();\n _this.headerCart.observeKits();\n // ENVIO DE FORMULÁRIOS\n $('[data-webform]').on('submit', function (event) {\n event.preventDefault();\n var $form = $(this);\n var vnda = $(this).find('[name=\"vnda\"]');\n\n if (vnda.length > 0) {\n if (vnda.val() != '') {\n //console.info('ROBOT DETECTED');\n return false;\n }\n }\n\n if ($form.data('webform') == 'newsletter') {\n var respValidated = _this.validateFormNewsletter($(this));\n var htmlErrors = '';\n\n if (respValidated.validated) {\n store.submitForm($(this), false, function () {\n store.setMsgResponse(false, 'clear', $(this));\n });\n } else {\n console.log('nao foi')\n store.setMsgResponse(respValidated.errors, 'error', $(this));\n }\n\n } else if ($form.data('webform') == 'contato') {\n store.submitForm($form, false, function () {\n store.setMsgResponse(false, 'clear', $(this));\n });\n } else {\n store.submitForm($form);\n }\n\n });\n },\n};\n\nwindow.addEventListener('DOMContentLoaded', () => {\n template_store.init();\n\n if (page == 'home') {\n template_store.home.init();\n }\n\n if (page == 'product') {\n template_store.product.init();\n }\n\n if (page == 'tag') {\n template_store.tag.init();\n }\n\n if (page == 'search') {\n template_store.search.init();\n }\n\n if (page == 'page') {\n template_store.page.init();\n }\n\n if (page == 'login') {\n template_store.login.init();\n }\n});\n\nconsole.log(\n '%cVnda - Tecnologia em Ecommerce',\n 'color: #f88d5b; font-size: 15px; font-family: \"Verdana\", sans-serif; font-weight: bold;'\n);\n"],"names":["getText","key","subKey","texts","language","window","$window","$","$body","page","data","$header","$wrapper","spaceToHeaderFixed","attr","timeTransitionDefault","quantity","price","cart_empty","go_product","btn_edit_cart","btn_checkout","btn_success","errorsTxt","withoutSku","store","config","selectorBtnBuy","selectorBtnBuyAssinatura","selectorWrapperProduct","selectorWrapperProductAssinatura","selectorFormProduct","selectorFormProductAssinatura","hasInternacionalVersion","addToCartOpenCartpopup","addToCartOpenCartpopupMobile","cartCount","selector","text","priceProds","processedAttr","formatMoney","value","toFixed","replace","validateQuantity","_val","isNaN","parseInt","getClearNumber","clearNumber","findVariant","properties","variant_list","filter","variant","match","property_key","property1","property2","property3","includes","name","desired_property","validateFormProduct","_$form","closest","validated","find","push","val","errors","setRespValidateProduct","_resp","_$boxResponse","$boxResult","htmlErrors","empty","i","length","html","addItemResultDefault","_typeResult","_result","$btnComprar","this","addClass","setTimeout","removeClass","location","href","urlCart","errorText","JSON","parse","responseText","console","info","error","slideDown","slideUp","addItemResultDefaultAssinatura","urlAssinaturaCart","addItem","_$parent","addItemResult","form","serialize","$boxResponse","serializeArray","hasClass","ajax","url","type","dataType","beforeSend","done","resp","template_store","fail","always","addItemArray","skusToAddSet","items","map","sku","stringify","contentType","xhrFields","withCredentials","cache","addItemAssinatura","urlAssinaturaCartAdd","subscription_item","extra","vindi_plan_id","xhr","status","log","addItemKit","forms","parent","cart","_this","Number","document","querySelector","index","input","forEach","cartItem","variant_sku","hasItem","item","json_data","button","classList","contains","add","addKitLocalStorage","remove","deleteItem","async","_itemId","_$item","removeItemResult","update","_method","item_id","_cart","componentCartDrawer","close","open","localStorage","removeItem","names","skus","getAttribute","itemName","getItem","Math","floor","random","setItem","setMsgResponse","_msg","_type","Array","isArray","msgArr","updateCartCount","_itemsCount","textLabel","getCartCount","itens","getCartItens","then","total","isInteger","$boxCart","headerCart","loadCart","setFilterSelected","sParameterName","sURLVariables","decodeURI","search","substring","split","setFilters","on","toggleClass","innerHeight","css","setImagesBetweenProducts","$imagesBetweenProducts","productsLength","each","el","$el","hide","show","setQuickView","quickViews","querySelectorAll","quickView","addEventListener","event","dataset","popupDefault","iframe","target","tagName","preventDefault","innerHTML","getElementsByTagName","style","overflow","history","pushState","iframeQuickView","getElementById","onload","contentWindow","e","cartResult","width","qvLink","postMessage","setTopBar","Swiper","spaceBetween","autoplay","speed","slidesPerView","delay","loop","setSearchForm","$openForm","$searchForm","$searchInput","focus","blur","setQuickBuy","productWrapper","inputs","from","productId","attributes","reduce","listVariantsProducts","btnBuy","boxMessage","insertAdjacentHTML","textAvailable","setAttribute","textUnavailable","available","sale_price","intl_price","trigger","$form","$parent","respValidated","setMenuMobile","$btnToggleMenuMobile","$btnOpenSubmenu","$btnCloseSubmenu","$overlay","closeSubmenu","siblings","setToggleFooter","$toggleMenu","setProductsCarousel","lazy","checkInView","loadOnTransitionStart","loadPrevNext","loadPrevNextAmount","watchOverflow","breakpoints","mousewheel","forceToAxis","navigation","nextEl","prevEl","pagination","clickable","submitForm","dataForm","contentTypeForm","processDataForm","inputFile","FormData","processData","reset","getPriceProd","products","product","processed","prodId","login","validateLogin","validateRegister","validateRecover","logar","client","redirect_to","recoverPassord","ok","throttle","fn","threshhold","scope","last","deferTimer","context","now","Date","args","arguments","clearTimeout","apply","submitFormNotify","formData","reply_to","email","product_name","referencia","validateFormNewsletter","items_count","toggleBtn","Promise","resolve","observer","MutationObserver","mutations","disconnect","observe","body","childList","subtree","btn","newBtn","cloneNode","parentNode","insertBefore","deleteKits","cartItems","Object","entries","productNames","pName","toLowerCase","id","observeKits","cartEl","mutation","innerText","buttonTrash","wrapperTrash","parentElement","newButton","appendChild","debounce","func","wait","immediate","timeout","callNow","setHeaderOnScroll","header","scrollY","setProductBlockImages","colors","color","block","hasAttribute","colorUrlBlock","colorUrlAttr","home","setPrimaryBanner","slider","setSliderInstagram","init","$sectionProduct","$wrapperImages","$sliderProduct","$thumbsProduct","sliderProduct","showFirstImages","variants","vnda","all","$imagesWithoutSkus","$thumbsWithoutSkus","main","setGallery","galleryThumbs","direction","gallery","thumbs","swiper","allowTouchMove","slideTo","activeZoom","MagicZoom","zoomOut","setCrossSellingCarousel","setRelatedsCarousel","setSizeGuide","$btnSizeGuide","$popupSizeGuide","submitNotify","addToCartSet","skusInputs","catch","setBottomBar","sizes","closes","checked","nextElementSibling","productVariants","v","mainFormSku","available_quantity","propertyValue","variantAvailableText","notify","toggle","setMobileAccordion","_element","maxHeight","panel","scrollHeight","toggleTab","tag","setShowMoreCardsButton","$btnShowMore","$cards","totalCards","visibleCards","slice","setSliderTimeline","setUploadedFile","file","pop","setSliderStudios","collabs","topContentAnimations","topTexts","bottomTexts","topText","calcUpText","transform","opacity","opacityCalc","bottomText","calcBottomText","bottom","opacityBottomCalc","bottomContentAnimations","topContentHeight","offsetHeight","bottomContainer","elementTranslated","rightBanners","element","calcHeaderLimit","getBoundingClientRect","top","calcTranslate","banner","observerElements","optionsElement","rootMargin","IntersectionObserver","entry","isIntersecting","animate","height"],"sourceRoot":""}