{"version":3,"file":"store.js","mappings":"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","sources":["webpack://build/../kraftwrk/assets/javascripts/utilities.js","webpack://build/../kraftwrk/assets/javascripts/webforms.js","webpack://build/webpack/bootstrap","webpack://build/webpack/runtime/define property getters","webpack://build/webpack/runtime/hasOwnProperty shorthand","webpack://build/../kraftwrk/assets/javascripts/store.js"],"sourcesContent":["// ===============================================================\r\n// ADIÇÃO MANUAL DE ASSET\r\n// ===============================================================\r\n// Usado para incluir assets no código de forma manual, conforme a necessidade\r\nexport function addAsset(source, onloadCallback) {\r\n\r\n if (!source || source === '') return console.error(`addAsset: caminho não definido.`)\r\n\r\n if (source.includes('.js')) {\r\n const scriptTag = document.createElement('script')\r\n scriptTag.setAttribute('src', source);\r\n\r\n if (onloadCallback && typeof onloadCallback === 'function') {\r\n scriptTag.onload = onloadCallback\r\n }\r\n\r\n return document.body.appendChild(scriptTag)\r\n\r\n } else if (source.includes('.css')) {\r\n const linkTag = document.createElement('link')\r\n linkTag.setAttribute('rel', 'stylesheet')\r\n linkTag.setAttribute('type', 'text/css')\r\n linkTag.setAttribute('href', source)\r\n return document.head.appendChild(linkTag)\r\n\r\n } else {\r\n const error = `addAsset: Erro ao criar o asset. Tipo de script não definido, ou não possui tratamento para este tipo de asset.`\r\n return console.error(error, source)\r\n }\r\n}\r\n\r\n// ===============================================================\r\n// BUSCA O CARRINHO ATIVO\r\n// ===============================================================\r\nexport async function getCart() {\r\n try {\r\n const response = await fetch('/carrinho');\r\n const cart = await response.json();\r\n return cart;\r\n } catch (error) {\r\n console.error('Erro ao buscar os dados do carrinho');\r\n console.error(error);\r\n }\r\n}\r\n\r\n// ===============================================================\r\n// SERIALIZE ARRAY\r\n// ===============================================================\r\nexport function serializeArray(form) {\r\n\r\n const formData = new FormData(form);\r\n const data = {};\r\n\r\n for (const [name, value] of formData) {\r\n data[name] = value\r\n }\r\n\r\n const formBody = [];\r\n\r\n for (const key in data) {\r\n const encodeKey = encodeURIComponent(key)\r\n const encodeValue = encodeURIComponent(data[key])\r\n formBody.push(`${encodeKey}=${encodeValue}`)\r\n }\r\n\r\n return formBody = formBody.join('&')\r\n \r\n}\r\n\r\n// ===============================================================\r\n// URL ENCODE FORM DATA\r\n// ===============================================================\r\nexport function urlencodeFormData(formData) {\r\n let string = '';\r\n\r\n function encode(s) {\r\n return encodeURIComponent(s).replace(/%20/g, '+');\r\n }\r\n\r\n for (const pair of formData.entries()) {\r\n if (typeof pair[1] == 'string') {\r\n string += (string ? '&' : '') + encode(pair[0]) + '=' + encode(pair[1]);\r\n }\r\n }\r\n return string;\r\n}\r\n\r\n// ===============================================================\r\n// SLIDE TOGGLE\r\n// ===============================================================\r\nexport function slideToggle(contentWrapper, content, duration = 500) {\r\n let initialHeight = window.getComputedStyle(contentWrapper).height;\r\n\r\n if (initialHeight == '0px') {\r\n return slideDown(contentWrapper, content, duration);\r\n } else {\r\n return slideUp(contentWrapper, duration);\r\n }\r\n}\r\n\r\n// ===============================================================\r\n// SLIDE UP\r\n// ===============================================================\r\nexport function slideUp(contentWrapper, duration = 500) {\r\n contentWrapper.style.height = '0px';\r\n contentWrapper.style.transition = `height ${duration} ease`;\r\n}\r\n\r\n// ===============================================================\r\n// SLIDE DOWN\r\n// ===============================================================\r\nexport function slideDown(contentWrapper, content, duration = 500) {\r\n let innerHeight = content.clientHeight;\r\n\r\n contentWrapper.style.height = `${innerHeight}px`;\r\n contentWrapper.style.transition = `height ${duration} ease`;\r\n}\r\n\r\n// ===============================================================\r\n// UPDATE DISCOUNT IN PRODUCT BLOCK\r\n// ===============================================================\r\nexport function updatePriceBlock() {\r\n const priceEls = document.querySelectorAll('[data-init-price]');\r\n\r\n if (priceEls == null) return;\r\n\r\n priceEls.forEach((priceEl) => {\r\n const discount = priceEl.dataset.discountPercent;\r\n\r\n priceEl.dispatchEvent(new Event('change'));\r\n\r\n // discount\r\n if (discount != '0') {\r\n priceEl.style.setProperty('--discount', `'-${discount}%'`);\r\n }\r\n });\r\n}\r\n\r\n// ===============================================================\r\n// PREÇO POR AJAX\r\n// ===============================================================\r\nexport function getPriceProd() {\r\n var selectors = document.querySelectorAll('[data-update-price]');\r\n var attr = 'update-price';\r\n\r\n if (selectors.length() > 0) {\r\n selectors.forEach((selector) => {\r\n var prodId = selector.dataset(attr);\r\n var url = '/produto/preco/' + prodId;\r\n\r\n if (prodId != '' && prodId != null) {\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n })\r\n .done((resp) => {\r\n selector.innerHTML = resp;\r\n })\r\n .fail((resp) => {\r\n console.error(resp);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\n// ===============================================================\r\n// DEBOUNCE\r\n// ===============================================================\r\n/*\r\n Debounce retorna uma função que enquanto continuar sendo chamada não é executada\r\n A função só será executada quando para de ser chamada por N milisegundos\r\n Útil para melhorar a performance de códigos que são executados muitas vezes por segundo, como o $(window).resize()\r\n\r\n Ex:\r\n \r\n $(window).resize(debounce(function() {\r\n // código a ser executado\r\n }, 500))\r\n \r\n No exemplo acima a função só será executada 500ms depois do último resize\r\n Abra o link abaixo e redimensione a janela branca e acompanhe o output do console\r\n Exemplo codepen: https://codepen.io/valkervieira/pen/oNgqyWY\r\n\r\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\r\n Com o debounce o usuário pode escolher vários filtros rapidamente e a página só recarrega quando parar de escolher\r\n*/\r\n\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n immediate || (immediate = true);\r\n\r\n return function () {\r\n var context = this,\r\n args = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n// ===============================================================\r\n// THROTTLE\r\n// ===============================================================\r\n/*\r\n Throttle diminui a frequencia que uma função é executada\r\n Enquanto no debounce a função só é executada quando para de ser chamada, no throttle ela\r\n continua sendo executada só que em um intervalo mínimo de N milisegundos (default = 250)\r\n\r\n Ex:\r\n\r\n $(window).resize(throttle() {\r\n // código a ser executado\r\n }, 500)\r\n\r\n No exemplo acima a função resize é chamada várias vezes por segundo mas só é executada 1 vez a cada 500ms\r\n Abra o link abaixo, redimensione a janela branca e acompanhe o console\r\n Exemplo codepen: https://codepen.io/valkervieira/pen/yLyKEPW\r\n\r\n Um caso comum de uso é checar se o scroll passou de um determinado ponto, para fixar um header ou alterar algum elemento do DOM\r\n*/\r\nexport function throttle(fn, threshhold, scope) {\r\n threshhold || (threshhold = 250);\r\n var last, deferTimer;\r\n return function () {\r\n var context = scope || this;\r\n\r\n var now = +new Date(),\r\n args = arguments;\r\n if (last && now < last + threshhold) {\r\n // hold on to it\r\n clearTimeout(deferTimer);\r\n deferTimer = setTimeout(function () {\r\n last = now;\r\n fn.apply(context, args);\r\n }, threshhold);\r\n } else {\r\n last = now;\r\n fn.apply(context, args);\r\n }\r\n };\r\n}\r\n\r\n// ===============================================================\r\n// FORMAT MONEY\r\n// ===============================================================\r\nexport function formatMoney(value) {\r\n // FORMATA UM VALOR\r\n return (\r\n 'R$ ' +\r\n value\r\n .toFixed(2)\r\n .replace('.', ',')\r\n .replace(/(\\d)(?=(\\d{3})+\\,)/g, '$1.')\r\n );\r\n}\r\n\r\n// ===============================================================\r\n// FORMAT VALUE\r\n// ===============================================================\r\n\r\nexport const formatValue = function (value = '') {\r\n let parsedValue = value;\r\n if (typeof value === 'number') {\r\n parsedValue = value.toFixed(2).toString();\r\n }\r\n return parsedValue.replace('.', ',');\r\n};\r\n\r\n// ===============================================================\r\n// VALIDA QUANTIDADE\r\n// ===============================================================\r\nexport function validateQuantity(_val) {\r\n // VALIDA SE A QUANTIDADE INFORMADA É UM NÚMERO\r\n if (!isNaN(_val)) {\r\n if (parseInt(_val) > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// ===============================================================\r\n// CLEAR NUMBER\r\n// ===============================================================\r\nexport function getClearNumber(_val) {\r\n // RETORNA UM NÚMERO LIMPO COMO INT\r\n if (!isNaN(_val)) {\r\n var clearNumber = parseInt(_val);\r\n\r\n return clearNumber;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// ===============================================================\r\n// BUSCA\r\n// ===============================================================\r\nexport function setSearch() {\r\n const toggleButton = document.querySelectorAll('[data-toggle-search]');\r\n const search = document.querySelector('[data-search-container]');\r\n const input = document.querySelector('[data-search-input]');\r\n\r\n toggleButton.length > 0 && toggleButton.forEach(button => {\r\n button.addEventListener('click', () => {\r\n\r\n if (search.classList.contains('open')) {\r\n search.classList.remove('open');\r\n\r\n } else {\r\n search.classList.add('open');\r\n setTimeout(() => { input.focus() }, 400);\r\n }\r\n })\r\n })\r\n}\r\n","import { serializeArray } from './utilities';\n\nconst Webforms = {\n submitWebForm: async function (form, email) {\n const formData = serializeArray(form);\n const textBtnDefault = form.querySelector('.action').innerHTML;\n\n if (typeof email == 'undefined' || email == '') {\n email = form.querySelector('[name=\"email\"]').value;\n }\n\n form.querySelector('[name=\"reply_to\"]').value = email;\n\n if (!form.classList.contains('sending')) {\n\n form.classList.add('sending');\n form.classList.remove('error');\n form.querySelector('.action').innerHTML = 'Enviando';\n\n try {\n const response = await fetch('/webform', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n body: formData\n })\n\n if (response.ok) {\n console.info('Formulário enviado com sucesso');\n form.classList.add('sent');\n form.querySelector('.msg-success').classList.add('-visible');\n form.querySelector('.action').innerHTML = 'Enviado';\n form.reset();\n\n setTimeout(function () {\n form.classList.remove('sent');\n form.querySelector('.msg-success').classList.remove('-visible');\n form.querySelector('.action').innerHTML = textBtnDefault;\n }, 3500);\n } else {\n\n const text = await response.text();\n\n console.error(`Ocorreu um erro no envio do formulário. Erro ${response.status}`);\n console.error(text);\n\n form.classList.add('error');\n form.querySelector('.msg-error').classList.add('-visible');\n form.querySelector('.action').innerHTML = 'Falha ao enviar';\n\n setTimeout(function () {\n form.classList.remove('error');\n form.querySelector('.msg-error').classList.remove('-visible');\n form.querySelector('.action').innerHTML = textBtnDefault;\n }, 3500);\n\n }\n\n } catch (error) {\n console.error('Erro ao enviar o webform');\n console.error(error);\n\n form.classList.add('error');\n form.querySelector('.msg-error').classList.add('-visible');\n form.querySelector('.action').innerHTML = 'Falha ao enviar';\n\n setTimeout(function () {\n form.classList.remove('error');\n form.querySelector('.msg-error').classList.remove('-visible');\n form.querySelector('.action').innerHTML = textBtnDefault;\n }, 3500);\n }\n\n form.classList.remove('sending');\n }\n },\n submitNotify: async function (form) {\n const formData = serializeArray(form);\n const btnTextDefault = form.querySelector('.action').innerHTML;\n\n if (!form.classList.contains('sending')) {\n\n form.classList.remove('error');\n form.classList.add('sending');\n form.querySelector('.action').innerHTML = 'Enviando';\n\n try {\n\n const response = await fetch('/lista_de_espera', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n body: formData\n })\n\n if (response.ok) {\n form.classList.remove('sending');\n \n // Envia um webform de aviso de cadastro\n console.log('Lista de espera enviada com sucesso');\n Webforms.submitWebForm(form);\n\n } else {\n const text = await response.text();\n console.error(`Ocorreu um erro ao enviar o formulário de Lista de Espera. Erro ${response.status}`)\n console.error(text);\n\n form.classList.add('error');\n form.querySelector('.msg-error').classList.add('-visible');\n form.querySelector('.action').innerHTML = 'Falha ao enviar';\n\n setTimeout(() => {\n form.classList.remove('error');\n form.querySelector('.msg-error').classList.remove('-visible');\n form.querySelector('.action').innerHTML = btnTextDefault;\n }, 3500);\n }\n\n } catch (error) {\n console.error('Falha ao enviar lista de espera. Verificar integração.');\n console.error(error);\n\n form.classList.add('error');\n form.querySelector('.msg-error').classList.add('-visible');\n form.querySelector('.action').innerHTML = 'Falha ao enviar';\n\n setTimeout(() => {\n form.classList.remove('error');\n form.querySelector('.msg-error').classList.remove('-visible');\n form.querySelector('.action').innerHTML = btnTextDefault;\n }, 3500);\n }\n\n form.classList.remove('sending');\n }\n },\n showMessage: function (input, form) {\n const alertMessage = form.querySelector('[data-msg]');\n\n alertMessage.classList.add('-visible');\n alertMessage.innerText = 'Preencha os campos obrigatórios';\n\n input.classList.add('-emphasis')\n\n setTimeout(() => {\n\n alertMessage.classList.remove('-visible');\n alertMessage.innerText = '';\n\n input.classList.remove('-emphasis')\n\n }, 2000)\n\n },\n validateForm: function (vndaInput, form) {\n let submitAllowed = true;\n console.log('hcmaou o validateForm')\n // Permite o envio se o input vnda estiver vazio\n if (vndaInput.value == '') {\n vndaInput.setAttribute('required', false);\n\n // Valida se os campos obrigatórios estão preenchidos\n const requiredFields = form.querySelectorAll('[required]:not([required=false])');\n requiredFields.forEach(input => {\n\n if (input.value == '') {\n submitAllowed = false;\n Webforms.showMessage(input, form);\n }\n\n if (input.type == 'checkbox' && input.checked == false) {\n submitAllowed = false;\n Webforms.showMessage(input, form);\n }\n\n })\n\n if (submitAllowed) form.id == 'form-notify' ? Webforms.submitNotify(form) : Webforms.submitWebForm(form)\n }\n },\n setWebForms: function () {\n const webForms = document.querySelectorAll('[data-webform]');\n\n webForms.length > 0 && webForms.forEach(form => {\n\n const button = form.querySelector('button');\n const fieldset = form.querySelector('fieldset');\n\n // Desabilita os campos do formulário, através do fieldset, quando o input vnda recebe algum valor \n let vndaInput = form.querySelector('input[name=\"vnda\"]');\n vndaInput.addEventListener('input', () => fieldset.setAttribute('disabled', true))\n\n // Realiza o envio através do clique e da tecla enter sobre o botão do formulário\n button && button.addEventListener('click', () => Webforms.validateForm(vndaInput, form));\n button && button.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') Webforms.validateForm(vndaInput, form);\n })\n\n })\n },\n init: function () {\n const _this = this;\n _this.setWebForms();\n },\n};\n\nexport default Webforms;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","import Webforms from \"./webforms\";\n\nvar $window = $(window);\nvar $body = $('body');\nvar $header = $('#header');\nvar $wrapper = $('#wrapper');\nvar spaceToHeaderFixed;\nvar language = $('html').attr('lang');\nvar timeTransitionDefault = 350;\nvar texts = [];\n\nwindow.page = $body.data('page');\n\ntexts['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: 'Selecione um atributo para o produto'\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 // Seletor do elemento que engloba um produto\n selectorWrapperProduct: '[data-box-produto]',\n selectorFormProduct: '[data-form-product]',\n // Se a store tem versão internacional ou não\n hasInternacionalVersion: false,\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 textLabel: '[data-cart-item-text-label]',\n },\n priceProds: {\n selector: '[data-update-price]',\n attr: 'update-price',\n }\n },\n setCustomizationPrice: function () {\n var totalPriceCustomizations = 0;\n var item = $(\"[data-appearent]\");\n\n for (let i = 0; i < item.length; i++) {\n itemPrice = parseFloat($(item[i]).attr(\"data-price\"));\n totalPriceCustomizations += itemPrice;\n }\n\n return totalPriceCustomizations;\n },\n formatMoney: function (value) {\n // FORMATA UM VALOR\n return \"R$ \" + value.toFixed(2).replace('.', ',').replace(/(\\d)(?=(\\d{3})+\\,)/g, \"$1.\");\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 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('Selecione um atributo para o produto');\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 {validated: validated, errors: errorsTxt};\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\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 $('html,body').animate({\n scrollTop: $boxResult.offset().top + 100\n },'250');\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 //console.log(\"addItemResultDefault\");\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\n } else if (_typeResult == 'erro-adicionar') {\n var errorText = JSON.parse(_result.responseText);\n\n if (typeof(_$boxResponse) != 'undefined' && _$boxResponse.length > 0) {\n $('html,body').animate({\n scrollTop: _$boxResponse.offset().top\n },'250');\n\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 addItem: async 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 $boxResponse = _$parent.find('[data-form-product] .msg-response:not(.resp-validate)');\n let form = _$form.serializeArray();\n\n\n\n\n let quantity = form.filter(field => field.name.includes('quantity'));\n quantity = quantity[0].value;\n\n let customizations = form.filter(field => field.name.includes('customizations'));\n\n for (i = 1; i < quantity; i++){\n form = form.concat(...customizations)\n }\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\n if (typeof addItemResult == 'function') {\n addItemResult(_$form, 'produto-adicionado', resp, $boxResponse);\n } else {\n _this.addItemResultDefault(_$form, 'produto-adicionado', resp.items_count, $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 addItemResult == 'function') {\n addItemResult(_$form, 'erro-adicionar', resp, $boxResponse);\n } else {\n _this.addItemResultDefault(_$form, 'erro-adicionar', resp, $boxResponse);\n }\n })\n .always(function() {\n //console.log(\"complete\");\n $btnComprar.removeClass('adding');\n });\n }\n },\n deleteItem: function (_itemId, _$item, removeItemResult) {\n var _this = this;\n\n if (!_$item.hasClass('removing')) {\n $.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(\"success\");\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 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 },\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 submitForm: function (_$form, _email, _callback) {\n\n if (typeof _email != 'undefined' && _email != '') {\n _$form.find('[name=\"reply_to\"]').val(_email);\n } else {\n _$form.find('[name=\"reply_to\"]').val(_$form.find('[name=\"email\"]').val());\n }\n\n if (!_$form.hasClass('sending')) {\n $.ajax({\n url: '/webform',\n type: 'POST',\n data: _$form.serialize(),\n beforeSend: function () {\n _$form.removeClass('error');\n _$form.addClass('sending');\n }\n })\n .done(function() {\n // console.info('foi');\n // store.setMsgResponse('Mensagem enviada com sucesso!', 'success', _$form);\n _$form.addClass('sended');\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\n _$form.find(\"button[type=submit]\").text('Enviado');\n\n setTimeout(function() {\n _$form.removeClass('sended');\n _$form.find(\"button[type=submit]\").text('Enviar');\n }, 3500);\n\n _$form[0].reset();\n\n if (typeof _callback == 'function') {\n _callback('success');\n }\n })\n .fail(function() {\n // console.info('foi, mas deu ruim');\n _$form.addClass('error');\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\n setTimeout(function() {\n _$form.find(\"button[type=submit]\").text('Enviar');\n }, 3500);\n\n if (typeof _callback == 'function') {\n _callback('error');\n }\n\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 getPriceProd: function () {\n var selector = store.config.priceProds.selector;\n var attr = store.config.priceProds.attr;\n\n if ($(selector).length > 0) {\n $(selector).each(function(index, value) {\n var $this = $(this);\n var prodId = $(this).data(attr);\n var url = '/produto/preco/' + prodId;\n\n if(prodId != '' && prodId != null) {\n $.ajax({\n url: url,\n type: 'GET',\n })\n .done(function(resp) {\n //console.info(resp);\n $this.html(resp);\n })\n .fail(function(resp) {\n //console.error(resp);\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 {validated: validated, errors: errorsTxt};\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 {validated: validated, errors: errorsTxt};\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 {validated: validated, errors: errorsTxt};\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\nwindow.template_store = {\n setCarrosselProducts: function () {\n // Inicializa os carrosseis de produtos default\n $('[data-carrosel-produtos]').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 slidesPerView: 4,\n spaceBetween: 21,\n watchOverflow: true,\n breakpoints: {\n 325: {\n slidesPerView: 2,\n },\n 520: {\n slidesPerView: 2,\n },\n 991: {\n slidesPerView: 3,\n },\n 1400: {\n slidesPerView: 4,\n },\n },\n mousewheel: {\n forceToAxis: true,\n },\n navigation: {\n nextEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-next'),\n prevEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-prev'),\n },\n });\n });\n },\n setMenuMobile: function () {\n $(\"#menu-mobile\").mmenu({\n slidingSubmenus: true,\n extensions: [\n \"pagedim-black\",\n \"position-front\"\n ],\n navbar: {\n add: true\n }\n },\n {\n offCanvas: {\n pageSelector: \"#wrapper\"\n }\n });\n var mmenu = $(\"#menu-mobile\").data('mmenu');\n $('[data-action=\"open-menu-mobile\"]').on('click', function(event) {\n event.preventDefault();\n if ($(\"#menu-mobile\").hasClass('mm-opened')) {\n mmenu.close();\n } else {\n mmenu.open();\n }\n });\n },\n validateFormNewsletter: function (_$form) {\n var validated = true;\n var errorsTxt = [];\n\n if (_$form.find('[name=\"email-newsletter\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu email!');\n }\n\n return { validated: validated, errors: errorsTxt };\n },\n addItemResult: function (_$form, _typeResult, _result, _$boxResponse) {\n var _this;\n\n if (_typeResult == 'produto-adicionado') {\n var $btnComprar = _$form.find(store.config.selectorBtnBuy);\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 ($body.width() > 768) {\n if (store.config.addToCartOpenCartpopup) {\n template_store.headerCart.loadCart(_result);\n template_store.headerCart.show();\n setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\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 setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\n } else {\n setTimeout(function () {\n window.location.href = urlCart;\n }, 150);\n }\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 $('html,body').animate({\n scrollTop: _$boxResponse.offset().top\n }, '250');\n\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 removeItemResult: function (_$item, _cart) {\n template_store.headerCart.loadCart(_cart);\n },\n validateFormContato: 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=\"nome\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu nome');\n }\n\n if (_$form.find('[name=\"telefone\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe seu nome');\n }\n\n if (_$form.find('[name=\"mensagem\"]').val() == '') {\n validated = false;\n errorsTxt.push('Informe uma mensagem');\n }\n\n return { validated: validated, errors: errorsTxt };\n },\n submitFormNotify: function (_$form) {\n var formData = _$form.serialize();\n\n if (!_$form.hasClass('sending')) {\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 // 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=\"nome\"]').val(),\n referencia: _$form.find('[name=\"referencia\"]').val(),\n sku: _$form.find('[name=\"sku\"]').val(),\n },\n })\n .done(function (resp) {\n _$form.find(\"button[type=submit]\").text(\"Enviado\");\n setTimeout(function () {\n _$form.find(\"button[type=submit]\").text(\"Enviar\");\n }, 3500);\n _$form[0].reset();\n })\n .fail(function (error) {\n _$form.find(\"button[type=submit]\").text(\"Falha ao enviar\");\n setTimeout(function () {\n _$form.find(\"button[type=submit]\").text(\"Enviar\");\n }, 3500);\n })\n .always(function () {\n })\n\n if (resp.error) {\n _$form.find('.msg-response').removeClass('happy').addClass('error');\n _$form.find('.msg-response span').html(resp.error);\n _$form.find('.msg-response').slideDown(350);\n\n setTimeout(function () {\n _$form.find('.msg-response').removeClass('happy').removeClass('error');\n _$form.find('.msg-response span').empty();\n }, 3500);\n\n } else {\n _$form.find('.msg-response').addClass('happy').removeClass('error');\n _$form.find('.msg-response span').html(msgSuccess);\n\n setTimeout(function () {\n _$form.find('.msg-response').removeClass('happy').removeClass('error');\n _$form.find('.msg-response span').empty();\n }, 3500);\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('.msg-response').removeClass('happy');\n _$form.find('.msg-response span').html(errorText.error);\n _$form.find('.msg-response').slideDown(350);\n\n setTimeout(function () {\n _$form.find('.msg-response').slideUp(350);\n }, 3500);\n })\n .always(function () {\n _$form.removeClass('sending');\n });\n }\n },\n headerCart: {\n loadCart: function (total) {\n var _this = this;\n var $boxCart = $('[data-cart-body]');\n\n store.updateCartCount(total);\n\n vnda.loadCartPopup(function(html) {\n $boxCart.empty();\n $boxCart.append(html);\n });\n },\n show: function () {\n var $boxCart = $('[data-cart-body]');\n\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\n\n $boxCart.fadeIn(500, function() {\n $boxCart.addClass('active');\n });\n\n setTimeout(function () {\n $boxCart.fadeOut(500, function() {\n $boxCart.removeClass('active');\n });\n }, 5000);\n },\n },\n popup: {\n closePopup: function (_popup) {\n $('[data-popup=\"' + _popup + '\"]').removeClass('active');\n },\n togglePopup: function (_popup) {\n $('.active[data-popup]').removeClass('active');\n\n if (_popup != '') {\n if ($('.active[data-popup]').length > 0) {\n setTimeout(function () {\n $('[data-popup=\"' + _popup + '\"]').addClass('active');\n }, 350);\n } else {\n $('[data-popup=\"' + _popup + '\"]').addClass('active');\n }\n }\n },\n init: function () {\n var _this = this;\n $(document).on('click', '[data-action=\"open-popup\"]', function (event) {\n event.preventDefault();\n //console.info('event open-opopup');\n var popup = $(this).data('popup');\n _this.togglePopup(popup);\n });\n\n\n $(document).on('click', '[data-action=\"close-popup\"]', function (event) {\n event.preventDefault();\n //console.info('event close-opopup');\n var popup = $(this).data('popup');\n _this.closePopup(popup);\n });\n\n $('[data-trigger-popup=\"cart\"]').on('click', function(event) {\n event.preventDefault();\n\n if( !$('[data-popup=\"cart\"]').hasClass('active') ) {\n $('[data-popup=\"cart\"]').fadeOut();\n $('[data-popup=\"cart\"]').removeClass('active');\n }\n\n if ( $(this).parent().data('cart-count-attr') > 0 ) {\n\n $('[data-popup=\"cart\"]').fadeToggle();\n $('[data-popup=\"cart\"]').toggleClass('active');\n\n } else {\n window.location.href = urlCart;\n }\n });\n\n $(document).on('click', function(event) {\n if ( !$(event.target).closest(\"[data-popup]\").length ) {\n var popup = $(\"body\").find(\".popup.active\");\n\n popup.fadeOut(500, function() {\n popup.removeClass('active');\n });\n }\n });\n }\n },\n home: {\n setFullbanner: function () {\n $('[data-fullbanner]').each(function (index, el) {\n var $el = $(el);\n\n var swiper = new Swiper($el.find('.swiper-container'), {\n slidesPerView: 1,\n spaceBetween: 0,\n watchOverflow: true,\n speed: 1000,\n autoplay: {\n delay: 4000,\n },\n navigation: {\n nextEl: $(el).find('.swiper-button-next'),\n prevEl: $(el).find('.swiper-button-prev'),\n disabledClass: '-disabled'\n },\n pagination: {\n el: $(el).find('.swiper-pagination'),\n type: 'bullets',\n clickable: true\n },\n });\n });\n },\n setBannersCategories: function () {\n $('[data-banner-categories]').each(function (index, el) {\n var $el = $(el);\n\n var swiper = new Swiper($el.find('.swiper-container'), {\n slidesPerView: 3,\n spaceBetween: 20,\n draggable: true,\n watchOverflow: true,\n navigation: {\n nextEl: $(el).find('.swiper-button-next'),\n prevEl: $(el).find('.swiper-button-prev'),\n disabledClass: '-disabled'\n },\n breakpoints: {\n 320: {\n slidesPerView: 1,\n spaceBetween: 0,\n },\n 480: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 640: {\n slidesPerView: 2,\n },\n 769: {\n slidesPerView: 3,\n }\n }\n });\n });\n },\n init: function () {\n var _this = this;\n _this.setFullbanner();\n _this.setBannersCategories();\n }\n },\n product: {\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 /*\n Percorre todas as variantes\n */\n for (var i = 0; i < variants.length; i++) {\n if (variants[i].main) {\n console.info('oii', variants[i]);\n\n // Procura a imagem que contém o sku e a exibe\n _this.$sliderProduct.find('[data-image][data-skus-image*=\"' + variants[i].sku + '\"]')\n .addClass('active')\n .removeClass('inactive');\n\n _this.$thumbsProduct.find('[data-image-thumb][data-skus-image*=\"' + variants[i].sku + '\"]')\n .addClass('active')\n .removeClass('inactive');\n }\n }\n /*\n Todas as imagens sem skus são exibidas sempre\n */\n\n $imagesWithoutSkus\n .removeClass('inactive')\n .addClass('active');\n\n $thumbsWithoutSkus\n .removeClass('inactive')\n .addClass('active');\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 setGallery: function () {\n var _this = this;\n var qtdImages = _this.$sliderProduct.find('[data-image]').length;\n\n if (qtdImages <= 1) {\n _this.$wrapperImages.addClass('without-thumbs');\n } else {\n _this.$wrapperImages.removeClass('without-thumbs');\n }\n\n var gallery = new Swiper(_this.$sliderProduct, {\n slidesPerView: 1,\n spaceBetween: 0,\n watchOverflow: true,\n simulateTouch: false,\n navigation: {\n nextEl: _this.$sliderProduct.parent().find('.button-next'),\n prevEl: _this.$sliderProduct.parent().find('.button-prev'),\n },\n });\n\n var galleryThumbs = new Swiper(_this.$thumbsProduct, {\n spaceBetween: 10,\n slidesPerView: 4,\n // freeMode: true,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n simulateTouch: true,\n watchOverflow: true,\n direction: 'vertical',\n navigation: {\n nextEl: _this.$thumbsProduct.siblings('.swiper-button-next'),\n prevEl: _this.$thumbsProduct.siblings('.swiper-button-prev'),\n },\n })\n gallery.controller.control = galleryThumbs;\n galleryThumbs.controller.control = gallery;\n\n this.sliderProduct.push(gallery);\n\n $('[data-image-thumb]').on('click', function () {\n //console.log('oie');\n //console.log($(this).data('index'));\n gallery.slideTo($(this).data('index'));\n });\n },\n setQuantityProduct: function () {\n var quantityInput = document.querySelectorAll('[data-quantity-selector]');\n\n if (quantityInput) {\n $(document).on('click', '[data-quantity-selector] [data-plus-quantity]', function () {\n var $box = $(this).closest('[data-quantity-selector]');\n var $input = $box.find('input[name=\"quantity\"]');\n var val = $input.val();\n var checkCustomization = $('[data-section-product] .product-infos').find('.customizations');\n\n if (store.validateQuantity(val)) {\n var clearNumber = store.getClearNumber(val);\n $input.val(parseInt(clearNumber) + 1);\n }\n if (checkCustomization.children()){\n window.customizations.addNode();\n console.log('é personalizado');\n } else {\n console.log('não é personalizado');\n }\n });\n\n $(document).on('click', '[data-quantity-selector] [data-minus-quantity]', function () {\n var $box = $(this).closest('[data-quantity-selector]');\n var $input = $box.find('input[name=\"quantity\"]');\n var val = $input.val();\n var checkCustomization = $('[data-section-product] .product-infos').find('.customizations');\n\n if (store.validateQuantity(val)) {\n var clearNumber = store.getClearNumber(val);\n if ((parseInt(clearNumber) - 1) > 0) {\n $input.val(parseInt(clearNumber) - 1);\n }\n }\n if (checkCustomization.children()){\n window.customizations.removeNode();\n console.log('é personalizado');\n } else {\n console.log('não é personalizado');\n }\n });\n }\n },\n setTabs: function() {\n\n var FirstTabHead = $(\".tabs-header .tab\")[0];\n var FirstTabContent = $(\".tabs-content .tab\")[0];\n\n $(FirstTabHead).addClass(\"open\");\n $(FirstTabContent).addClass(\"open\");\n\n $(\".tabs-header .tab\").on(\"click\", function(){\n var tabID = this.classList[1];\n var tabContent = $(\".tabs-content\").find(\".\"+tabID)\n\n $(\".tabs-header .tab\").removeClass(\"open\");\n $(\".tabs-content .tab\").removeClass(\"open\");\n $(this).addClass(\"open\");\n $(tabContent).addClass(\"open\");\n })\n },\n init: function () {\n var _this = this;\n\n _this.showFirstImages();\n _this.setGallery();\n _this.setQuantityProduct();\n _this.submitNotify();\n _this.setTabs();\n\n\n\n\n $(document).on('submit', store.config.selectorFormProduct, function (event) {\n event.preventDefault();\n var $form = $(this);\n\n var blockAddToCart = $(\".add-to-cart-button\").hasClass(\"select-a-customization\")\n\n $(\".customizations label\").on(\"click\", function(){\n blockAddToCart = $body.find(\".add-to-cart-button\").hasClass(\"select-a-customization\");\n if(blockAddToCart == false){\n $(\".customization-notify\").hide()\n } else {\n return\n }\n })\n\n if(blockAddToCart){\n $(\".customization-notify\").show()\n }else{\n var $parent = $form.closest(store.config.selectorWrapperProduct);\n\n var $btnComprar = $parent.find(store.config.selectorBtnBuy);\n\n var respValidated = store.validateFormProduct($form);\n var $boxResponse = $parent.find('.msg-response');\n\n if (respValidated.validated) {\n store.addItem($form, $parent);\n } else {\n //console.info('não foi');\n store.setRespValidateProduct(respValidated, $form, $boxResponse);\n }\n }\n });\n\n }\n },\n tag:{\n setFilterbtn: function(){\n /*$(\".filtro .filter-head\").on(\"click\", function(){\n var container = this.closest('.filtro');\n var list = $(container).find(\".filter-list\");\n\n $(list).slideToggle();\n\n $(this).find(\".plus\").toggleClass(\"show\");\n $(this).find(\".minus\").toggleClass(\"show\");\n });*/\n\n $('.filtro .filter-head').on('click',function(){\n if ($(this).parent().hasClass('is-open')){\n $(this).parent().removeClass('is-open');\n }else{\n $(this).parent().addClass('is-open');\n }\n });\n },\n\n setFilterMobile: function(){\n $(\"#filtros .filters-title\").on(\"click\", function(){\n $(\"#filtros .wrapper\").slideToggle()\n\n $(this).find(\".plus\").toggleClass(\"show\")\n $(this).find(\".minus\").toggleClass(\"show\")\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($('#filtros [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').length > 0){\n //console.log('achou')\n $('#filtros [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').closest('li').addClass('selected')\n $('#filtros [name=\"' + sParameterName[0] + '\"][value=\"' + sParameterName[1] + '\"]').attr('checked', true)\n }\n }\n },\n\n init: function(){\n template_store.tag.setFilterbtn();\n template_store.tag.setFilterMobile();\n template_store.tag.setFilterSelected();\n }\n },\n login: {\n init: function () {\n\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({ height: 'toggle' }, 500);\n $(el).find('.wrapper-form-recover').animate({ height: 'toggle' }, 500);\n });\n\n $(el).on('click', '[data-forget-password-back]', function (event) {\n event.preventDefault();\n $(el).find('.wrapper-form-login').animate({ height: 'toggle' }, 500);\n $(el).find('.wrapper-form-recover').animate({ height: 'toggle' }, 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 },\n init: function () {\n var _this = this;\n\n _this.popup.init();\n\n _this.setMenuMobile();\n _this.setCarrosselProducts();\n store.getCartCount();\n store.getPriceProd();\n\n $('[data-label-input]').on('focus', 'input, textarea, select', function () {\n var $field = $(this).closest('[data-label-input]');\n var $label = $field.find('label');\n\n $label.addClass('on-focus');\n });\n\n $('[data-label-input]').on('blur', 'input, textarea, select', function () {\n var $field = $(this).closest('[data-label-input]');\n var $label = $field.find('label');\n\n $label.removeClass('on-focus');\n });\n\n $('[data-label-input]').on('change', 'input, textarea, select', function () {\n var $field = $(this).closest('[data-label-input]');\n var $label = $field.find('label');\n\n $field.removeClass('invalid');\n $field.removeClass('valid');\n\n if ($(this).val() != '') {\n $label.addClass('not-empty');\n } else {\n $label.removeClass('not-empty');\n }\n });\n\n Webforms.init();\n\n // $('[data-webform]').on('submit', function (event) {\n // event.preventDefault();\n\n // var honeyPot = $(this).find('[name=\"vnda\"]');\n\n // if (honeyPot.length > 0) {\n // if (honeyPot.val() != '') {\n // //console.info('ROBOT DETECTED');\n // return false;\n // }\n // }\n\n // if ($(this).data('webform') == 'contato') {\n // var respValidated = _this.validateFormContato($(this));\n // var htmlErrors = '';\n\n // //console.info('FORM DE CONTATO', respValidated);\n\n // if (respValidated.validated) {\n // store.submitForm($(this), false, function () {\n // store.setMsgResponse(false, 'clear', $(this));\n // });\n // } else {\n // store.setMsgResponse(respValidated.errors, 'error', $(this));\n // }\n\n // } else if ($(this).data('webform') == 'newsletter') {\n // var respValidated = _this.validateFormNewsletter($(this));\n // var htmlErrors = '';\n\n // //console.info('FORM DE NEWSLETTER', respValidated);\n\n // if (respValidated.validated) {\n // store.submitForm($(this), false, function () {\n // store.setMsgResponse(false, 'clear', $(this));\n // showPromoCode();\n // });\n // } else {\n // store.setMsgResponse(respValidated.errors, 'error', $(this));\n // }\n\n // } else {\n // store.submitForm($(this));\n // }\n // });\n\n }\n}\n\n$(function (){\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 setTimeout(() => {\n if (window.performance.navigation.type == 2 ) {\n window.location.reload();\n }\n }, 0);\n }\n\n if (page == 'tag') {\n template_store.tag.init();\n }\n\n if (page == 'login') {\n template_store.login.init();\n }\n});\n\n\nconsole.log('%c V' + '%cnda ' + '%c- Tecnologia em e-commerce', 'color: #b24c19; font-size: 45px;', 'color: #f88d5b; font-size: 45px;', 'color: #000; font-size: 25px;');\n\n"],"names":["serializeArray","form","formData","FormData","data","name","value","formBody","key","encodeKey","encodeURIComponent","encodeValue","push","join","Webforms","submitWebForm","async","email","textBtnDefault","querySelector","innerHTML","classList","contains","add","remove","response","fetch","method","headers","body","ok","console","info","reset","setTimeout","text","error","status","submitNotify","btnTextDefault","log","showMessage","input","alertMessage","innerText","validateForm","vndaInput","submitAllowed","setAttribute","querySelectorAll","forEach","type","checked","id","setWebForms","webForms","document","length","button","fieldset","addEventListener","e","init","this","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","$body","$","window","language","attr","texts","getText","subKey","page","quantity","price","cart_empty","go_product","btn_edit_cart","btn_checkout","btn_success","errorsTxt","withoutSku","store","config","selectorBtnBuy","selectorWrapperProduct","selectorFormProduct","hasInternacionalVersion","addToCartOpenCartpopup","addToCartOpenCartpopupMobile","cartCount","selector","textLabel","priceProds","setCustomizationPrice","totalPriceCustomizations","item","i","itemPrice","parseFloat","formatMoney","toFixed","replace","validateQuantity","_val","isNaN","parseInt","getClearNumber","clearNumber","validateFormProduct","_$form","closest","validated","find","val","errors","setRespValidateProduct","_resp","_$boxResponse","$boxResult","htmlErrors","empty","html","animate","scrollTop","offset","top","addItemResultDefault","_typeResult","_result","$btnComprar","addClass","removeClass","location","href","urlCart","errorText","JSON","parse","responseText","slideDown","slideUp","addItem","_$parent","addItemResult","_this","$boxResponse","filter","field","includes","customizations","concat","hasClass","ajax","url","dataType","beforeSend","done","resp","items_count","fail","always","deleteItem","_itemId","_$item","removeItemResult","_cart","setMsgResponse","_msg","_type","Array","isArray","msgArr","updateCartCount","_itemsCount","parent","getCartCount","itens","getCartItens","then","total","Number","isInteger","$boxCart","template_store","headerCart","loadCart","submitForm","_email","_callback","serialize","getPriceProd","each","index","$this","prodId","login","validateLogin","validateRegister","validateRecover","logar","client","redirect_to","recoverPassord","setCarrosselProducts","el","Swiper","slidesPerView","spaceBetween","watchOverflow","breakpoints","mousewheel","forceToAxis","navigation","nextEl","prevEl","setMenuMobile","mmenu","slidingSubmenus","extensions","navbar","offCanvas","pageSelector","on","event","preventDefault","close","open","validateFormNewsletter","width","show","validateFormContato","submitFormNotify","reply_to","product_name","referencia","sku","vnda","loadCartPopup","append","fadeIn","fadeOut","popup","closePopup","_popup","togglePopup","fadeToggle","toggleClass","target","home","setFullbanner","$el","speed","autoplay","delay","disabledClass","pagination","clickable","setBannersCategories","draggable","product","$sectionProduct","$wrapperImages","$sliderProduct","$thumbsProduct","sliderProduct","showFirstImages","variants","all","$imagesWithoutSkus","$thumbsWithoutSkus","main","setGallery","gallery","simulateTouch","galleryThumbs","watchSlidesVisibility","watchSlidesProgress","direction","siblings","controller","control","slideTo","setQuantityProduct","$input","checkCustomization","children","addNode","removeNode","setTabs","FirstTabHead","FirstTabContent","tabID","tabContent","$form","blockAddToCart","hide","$parent","respValidated","tag","setFilterbtn","setFilterMobile","slideToggle","setFilterSelected","sParameterName","sURLVariables","decodeURI","search","substring","split","height","$field","$label","performance","reload"],"sourceRoot":""}