{"version":3,"file":"store.js","mappings":"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","sources":["webpack://build/../miudamobilia/assets/javascripts/store.js"],"sourcesContent":["window.$window = $(window);\r\nwindow.$body = $('body');\r\nwindow.page = $body.data('page');\r\nwindow.$header = $('#header');\r\nwindow.$wrapper = $('#wrapper');\r\nwindow.spaceToHeaderFixed;\r\nwindow.language = $('html').attr('lang');\r\nwindow.timeTransitionDefault = 350;\r\nwindow.texts = [];\r\n\r\ntexts['pt-BR'] = {\r\n quantity: 'quantidade',\r\n price: 'preço',\r\n cart_empty: 'O seu carrinho está vazio',\r\n go_product: 'Ir para a página do produto',\r\n btn_edit_cart: 'Editar pedido',\r\n btn_checkout: 'Finalizar pedido',\r\n btn_success: 'Adicionado!',\r\n errorsTxt: {\r\n withoutSku: 'Selecione um atributo para o produto',\r\n },\r\n};\r\n\r\nfunction getText(key, subKey) {\r\n if (typeof subKey == 'undefined') {\r\n return texts[language][key];\r\n } else {\r\n return texts[language][key][subKey];\r\n }\r\n}\r\n\r\nwindow.store = {\r\n config: {\r\n // Seletor do botão de comprar\r\n selectorBtnBuy: '[data-action=\"add-cart\"]',\r\n selectorBtnBuyAssinatura: '[data-action=\"add-cart-assinatura\"]',\r\n // Seletor do elemento que engloba um produto\r\n selectorWrapperProduct: '[data-box-produto]',\r\n selectorWrapperProductAssinatura: '[data-box-produto-assinatura]',\r\n selectorFormProduct: '[data-form-product]',\r\n selectorFormProductAssinatura: '[data-form-product-assinatura]',\r\n // Se a store tem versão internacional ou não\r\n hasInternacionalVersion: false,\r\n errorsTxt: {\r\n withoutSku: getText('errorsTxt', 'withoutSku'),\r\n },\r\n // configuração de comportamento ao add um produto\r\n addToCartOpenCartpopup: true,\r\n addToCartOpenCartpopupMobile: true,\r\n cartCount: {\r\n selector: '[data-cart-count]',\r\n attr: '[data-cart-count-attr]',\r\n text: '[data-cart-item-text]',\r\n },\r\n priceProds: {\r\n selector: '[data-update-price]',\r\n attr: 'data-update-price',\r\n processedAttr: 'data-price-processed'\r\n },\r\n },\r\n isInViewport: function(element, percentVisible) {\r\n let rect = element.getBoundingClientRect();\r\n let windowHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n const percentFromTop = Math.floor(100 - (((rect.top >= 0 ? 0 : rect.top) / +-(rect.height / 1)) * 100));\r\n const percentToBottom = Math.floor(100 - ((rect.bottom - windowHeight) / rect.height) * 100);\r\n return percentFromTop < percentVisible || percentToBottom > percentVisible;\r\n },\r\n formatMoney: function (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 validateQuantity: function (_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 getClearNumber: function (_val) {\r\n // RETORNA UM NÚMERO LIMPO COMO INT\r\n if (!isNaN(_val)) {\r\n clearNumber = parseInt(_val);\r\n\r\n return clearNumber;\r\n }\r\n\r\n return false;\r\n },\r\n getPriceProd: function () {\r\n const { selector, attr, processedAttr } = store.config.priceProds;\r\n const products = document.querySelectorAll(selector);\r\n\r\n if (products.length > 0) products.forEach(product => {\r\n const processed = product.getAttribute(processedAttr);\r\n\r\n if (processed != 'true') {\r\n const prodId = product.getAttribute(attr);\r\n const url = `/produto/preco/${prodId}`;\r\n\r\n if (prodId != null && prodId != '') {\r\n $.ajax({\r\n url: url,\r\n type: 'GET',\r\n })\r\n .done(function (resp) {\r\n // console.info(resp);\r\n product.innerHTML = resp;\r\n product.setAttribute(processedAttr, true);\r\n })\r\n .fail(function (resp) {\r\n // console.error(`Falha ao buscar o preço do produto ${prodId}`);\r\n // console.log(resp);\r\n });\r\n }\r\n }\r\n })\r\n },\r\n\r\n getCurrentCart: async function() {\r\n try {\r\n const cart = await $.ajax({\r\n url: '/carrinho',\r\n type: 'GET',\r\n dataType: 'json',\r\n })\r\n\r\n return cart;\r\n\r\n } catch (error) {\r\n console.error('Erro ao buscar a quantidade de produtos do carrinho');\r\n console.error(error);\r\n }\r\n },\r\n validateFormProduct: function (_$form) {\r\n // VALIDA O FORM DE PRODUTO PARA VER SE O PRODUTO PODE SER ADICIONADO\r\n var $parent = _$form.closest('[data-box-produto]');\r\n var $btnComprar = _$form.find('[data-action=\"add-cart\"]');\r\n var validated = true;\r\n var errorsTxt = [];\r\n\r\n if ($btnComprar.data('available') == 'false') {\r\n validated = false;\r\n errorsTxt.push('');\r\n } else {\r\n // verifica se o sku foi selecionado\r\n if (_$form.find('[name=\"sku\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Selecione um atributo para o produto');\r\n }\r\n\r\n // verifica se a quantidade é válida\r\n console.log(_$form.find('input[name=\"quantity\"]').val());\r\n if (_$form.find('input[name=\"quantity\"]').val() <= 0) {\r\n console.log('qtd invalida');\r\n validated = false;\r\n errorsTxt.push('Quantidade indisponível');\r\n }\r\n }\r\n\r\n return { validated: validated, errors: errorsTxt };\r\n },\r\n setRespValidateProduct: function (_resp, _$form, _$boxResponse) {\r\n // var $boxResult = _$form.find('.resp-validate');\r\n var $boxResult = _$boxResponse;\r\n var htmlErrors = '';\r\n\r\n if (_resp.validated) {\r\n $boxResult.empty();\r\n } else {\r\n for (var i = _resp.errors.length - 1; i >= 0; i--) {\r\n htmlErrors += '' + _resp.errors[i] + '';\r\n }\r\n\r\n $boxResult.html(htmlErrors);\r\n }\r\n },\r\n addItemResultDefault: function (_$form, _typeResult, _result, _$boxResponse) {\r\n var _this = this;\r\n if (_typeResult == 'produto-adicionado') {\r\n var $btnComprar = _$form.find(_this.config.selectorBtnBuy);\r\n\r\n $btnComprar.addClass('success').html('Produto adicionado!');\r\n\r\n template_store.headerCart.updateCartCount(_result.items_count);\r\n\r\n setTimeout(function () {\r\n // _$form.find('.msg-response').slideUp(350);\r\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\r\n }, 3500);\r\n\r\n setTimeout(function () {\r\n window.location.href = urlCart;\r\n }, 150);\r\n } else if (_typeResult == 'erro-adicionar') {\r\n var errorText = JSON.parse(_result.responseText);\r\n\r\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\r\n console.info(errorText);\r\n\r\n _$boxResponse.addClass('error');\r\n _$boxResponse.removeClass('success');\r\n\r\n _$boxResponse.find('span').html(errorText.error);\r\n _$boxResponse.slideDown(350);\r\n\r\n setTimeout(function () {\r\n _$boxResponse.slideUp(350);\r\n }, 3500);\r\n }\r\n }\r\n },\r\n addItemResultDefaultAssinatura: function (_$form, _typeResult, _result, _$boxResponse) {\r\n var _this = this;\r\n if (_typeResult == 'produto-adicionado') {\r\n var $btnComprar = _$form.find(_this.config.selectorBtnBuyAssinatura);\r\n\r\n $btnComprar.addClass('success').html('Adicionado!');\r\n\r\n setTimeout(function () {\r\n // _$form.find('.msg-response').slideUp(350);\r\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\r\n }, 3500);\r\n\r\n setTimeout(function () {\r\n window.location.href = urlAssinaturaCart;\r\n }, 150);\r\n } else if (_typeResult == 'erro-adicionar') {\r\n if (typeof _result == 'object') {\r\n var errorText = _result;\r\n } else {\r\n var errorText = JSON.parse(_result);\r\n }\r\n\r\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\r\n console.info(errorText);\r\n\r\n _$boxResponse.addClass('error');\r\n _$boxResponse.removeClass('success');\r\n\r\n _$boxResponse.find('span').html(errorText.error);\r\n _$boxResponse.slideDown(350);\r\n }\r\n }\r\n },\r\n addItem: async function (_$form, _$parent, dispatchExtra = false) {\r\n var _this = this;\r\n var $btnComprar = _$parent.find('[data-action=\"add-cart\"]');\r\n var urlAdd = '/carrinho/adicionar';\r\n var urlUpdate = '/carrinho';\r\n var url = urlAdd;\r\n \r\n var $boxResponse = _$parent.find('[data-form-product] .msg-response:not(.resp-validate)');\r\n\r\n\r\n let form = _$form.serializeArray();\r\n\r\n const currentSku = form.find(input => input.name === 'sku').value;\r\n \r\n const quantity = +$('input[name=\"quantity\"]').attr('value');\r\n\r\n const colchao = $('input[name=\"customizations[][Colchão]\"]:checked').val();\r\n const montagem = $('input[name=\"customizations[][Montagem]\"]:checked').val();\r\n const grade = $('input[name=\"customizations[][Grade de proteção]\"]:checked').val();\r\n\r\n console.log('colchao',colchao )\r\n console.log('montagem',montagem)\r\n console.log('quantity',quantity)\r\n\r\n\r\n // const currentCart = await store.getCurrentCart();\r\n // if (currentCart) {\r\n // if (currentCart.items.length > 0) {\r\n // const previousProduct = currentCart.items.find(item => currentSku === item.variant_sku && item.customizations.length > 0)\r\n // if (previousProduct) {\r\n // form.forEach(input => {\r\n // if (input.name === 'quantity') {\r\n // input.value = +input.value + previousProduct.quantity;\r\n // }\r\n // })\r\n // previousProduct.customizations.forEach(customization => {\r\n // form.unshift({\r\n // name: `customizations[][${customization.group_name}]`,\r\n // value: customization.name\r\n // })\r\n // })\r\n // await store.deleteItem(previousProduct.id, _$form);\r\n // }\r\n // }\r\n // }\r\n\r\n \r\n if (colchao && !montagem && grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Colchão]', \r\n value: colchao\r\n },\r\n {\r\n name: 'customizations[][Grade de proteção]', \r\n value: grade\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (colchao && montagem && !grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Colchão]', \r\n value: colchao\r\n },\r\n {\r\n name: 'customizations[][Montagem]', \r\n value: montagem\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (!colchao && montagem && grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Montagem]', \r\n value: montagem\r\n },\r\n {\r\n name: 'customizations[][Grade de proteção]', \r\n value: grade\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (colchao && montagem && grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Colchão]', \r\n value: colchao\r\n },\r\n {\r\n name: 'customizations[][Montagem]', \r\n value: montagem\r\n },\r\n {\r\n name: 'customizations[][Grade de proteção]', \r\n value: grade\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (colchao && !montagem && !grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Colchão]', \r\n value: colchao\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (!colchao && montagem && !grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Montagem]', \r\n value: montagem\r\n }\r\n )\r\n }\r\n }\r\n if (!colchao && !montagem && grade ) {\r\n for (let index = 1; index < quantity; index++) {\r\n console.log('entro', index)\r\n form.push(\r\n {\r\n name: 'customizations[][Grade de proteção]', \r\n value: grade\r\n }\r\n )\r\n }\r\n }\r\n\r\n console.info('addItem');\r\n console.info('addItem', form);\r\n\r\n\r\n if (!$btnComprar.hasClass('adding')) {\r\n console.log('form',form)\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: form,\r\n beforeSend: function () {\r\n $btnComprar.addClass('adding');\r\n },\r\n })\r\n .done(function (resp) {\r\n console.log('success');\r\n console.info(resp);\r\n\r\n if (dispatchExtra) {\r\n window.dispatchEvent(new Event('vnda:dispatched-extra'));\r\n } else {\r\n if (typeof template_store.addItemResult == 'function') {\r\n template_store.addItemResult(_$form, 'produto-adicionado', resp, $boxResponse);\r\n } else {\r\n template_store.addItemResultDefault(_$form, 'produto-adicionado', resp, $boxResponse);\r\n }\r\n } \r\n })\r\n .fail(function (resp) {\r\n console.log('error');\r\n console.error(resp);\r\n console.error(resp.responseText);\r\n console.error(resp.responseText.error);\r\n\r\n if (typeof template_store.addItemResult == 'function') {\r\n template_store.addItemResult(_$form, 'erro-adicionar', resp, $boxResponse);\r\n } else {\r\n template_store.addItemResultDefault(_$form, 'erro-adicionar', resp, $boxResponse);\r\n }\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n $btnComprar.removeClass('adding');\r\n });\r\n }\r\n },\r\n addItemAssinatura: function (_$form, _$parent, addItemResult) {\r\n var _this = this;\r\n var $btnComprar = _$parent.find(store.config.selectorBtnBuyAssinatura);\r\n var url = urlAssinaturaCartAdd;\r\n var form = _$form.serialize();\r\n var $boxResponse = _$parent.find(\r\n store.config.selectorFormProductAssinatura + ' .msg-response:not(.resp-validate)'\r\n );\r\n var data = {};\r\n\r\n data.subscription_item = {\r\n quantity: _$form.find('[name=\"quantity\"]').val(),\r\n sku: _$form.find('[name=\"sku\"]').val(),\r\n extra: {\r\n vindi_plan_id: _$form.find('[name=\"extra[vindi_plan_id]\"]').val(),\r\n },\r\n };\r\n\r\n console.info('addItemAssinatura');\r\n console.info('addItemAssinatura', data);\r\n console.info('addItemAssinatura', JSON.stringify(data));\r\n\r\n if (!$btnComprar.hasClass('adding')) {\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n // dataType: 'json',\r\n contentType: 'application/json',\r\n data: JSON.stringify(data),\r\n xhrFields: { withCredentials: true },\r\n beforeSend: function () {\r\n $btnComprar.addClass('adding');\r\n },\r\n })\r\n .done(function (resp) {\r\n console.log('success');\r\n console.info(resp);\r\n\r\n if (typeof template_store.addItemResult == 'function') {\r\n template_store.addItemResult(_$form, 'produto-adicionado', resp, $boxResponse);\r\n } else {\r\n template_store.addItemResultDefaultAssinatura(\r\n _$form,\r\n 'produto-adicionado',\r\n resp,\r\n $boxResponse\r\n );\r\n }\r\n })\r\n .fail(function (xhr, status, error) {\r\n console.log('error');\r\n console.error(xhr);\r\n console.error(status);\r\n console.error(error);\r\n\r\n var resp = {\r\n error: 'Houve um problema ao adicionar. Tente mais tarde ou entre em contato.',\r\n };\r\n\r\n if (typeof template_store.addItemResult == 'function') {\r\n template_store.addItemResult(_$form, 'erro-adicionar', resp, $boxResponse);\r\n } else {\r\n template_store.addItemResultDefaultAssinatura(\r\n _$form,\r\n 'erro-adicionar',\r\n resp,\r\n $boxResponse\r\n );\r\n }\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n $btnComprar.removeClass('adding');\r\n });\r\n }\r\n },\r\n deleteItem: async function (_itemId, _$item, removeItemResult) {\r\n var _this = this;\r\n\r\n if (!_$item.hasClass('removing')) {\r\n const deleteResult = await $.ajax({\r\n url: '/carrinho',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n _method: 'delete',\r\n item_id: _itemId,\r\n },\r\n beforeSend: function () {\r\n _$item.addClass('removing');\r\n },\r\n }) \r\n .done(function (_cart) {\r\n console.log('success');\r\n\r\n if ($body.width() > 768) {\r\n if (store.config.addToCartOpenCartpopup) {\r\n template_store.headerCart.updateCartCount(_cart);\r\n }\r\n } else {\r\n if (store.config.addToCartOpenCartpopupMobile) {\r\n template_store.headerCart.updateCartCount(_cart);\r\n }\r\n }\r\n\r\n if (typeof removeItemResult == 'function') {\r\n removeItemResult(_$item, _cart);\r\n }\r\n })\r\n .fail(function (error) {\r\n console.log('erro ao remover', error.responseText);\r\n })\r\n .always(function () {\r\n _$item.removeClass('removing');\r\n });\r\n }\r\n },\r\n setMsgResponse: function (_msg, _type, _$parent) {\r\n /*\r\n O tipo pode conter um dos 3 valores: success, warning, error ou CLEAR.\r\n O type CLEAR limpa as mensagens e faz sumir a mensagem\r\n */\r\n\r\n // Verifica se não há mais de uma mensagem\r\n // caso tenha, gera um html para cada mensagem\r\n if (Array.isArray(_msg)) {\r\n var msgArr = _msg;\r\n _msg = '';\r\n for (var i = msgArr.length - 1; i >= 0; i--) {\r\n _msg += '' + msgArr[i] + '';\r\n }\r\n }\r\n\r\n _$parent\r\n .find('[data-msg-retorno]')\r\n .removeClass('success')\r\n .removeClass('warning')\r\n .removeClass('error');\r\n\r\n _$parent.find('[data-msg-retorno] [data-msg]').empty();\r\n\r\n if (_type != 'clear') {\r\n _$parent.find('[data-msg-retorno]').addClass(_type);\r\n _$parent.find('[data-msg-retorno] [data-msg]').html(_msg);\r\n }\r\n },\r\n getCartItens: async function() {\r\n try {\r\n const itens = await $.ajax({\r\n url: '/carrinho/itens',\r\n type: 'GET',\r\n dataType: 'text',\r\n })\r\n\r\n return itens;\r\n\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n },\r\n submitForm: function (_$form) {\r\n _$form.find('[name=\"reply_to\"]').val(_$form.find('[name=\"email\"]').val());\r\n\r\n if (!_$form.hasClass('sending')) {\r\n $.ajax({\r\n url: '/webform',\r\n type: 'POST',\r\n data: _$form.serialize(),\r\n beforeSend: function () {\r\n _$form.addClass('sending');\r\n },\r\n })\r\n .done(function () {\r\n // console.info('foi');\r\n // store.setMsgResponse('Mensagem enviada com sucesso!', 'success', _$form);\r\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\r\n _$form.find('button[type=submit]').text('Enviado');\r\n\r\n if (_$form.hasClass('form-campanha-newsletter')) {\r\n _$form.find('.field').addClass('hide');\r\n }\r\n\r\n setTimeout(function () {\r\n _$form.find('button[type=submit]').text('Enviar');\r\n }, 3500);\r\n _$form[0].reset();\r\n\r\n })\r\n .fail(function () {\r\n // console.info('foi, mas deu ruim');\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\r\n _$form.find('button[type=submit]').text('Falha ao enviar');\r\n setTimeout(function () {\r\n _$form.find('button[type=submit]').text('Enviar');\r\n }, 3500);\r\n // store.setMsgResponse('Houve um problema ao enviar sua mensagem, tente novamente! Ou entre em contato conosco pelo telefone (21) 99644-6925 ', 'error', $form);\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n _$form.removeClass('sending');\r\n });\r\n }\r\n },\r\n login: {\r\n validateLogin: function (_$form) {\r\n var validated = true;\r\n var errorsTxt = [];\r\n\r\n if (_$form.find('[name=\"email\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Informe seu email!');\r\n }\r\n\r\n if (_$form.find('[name=\"password\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Informe a senha!');\r\n }\r\n\r\n return { validated: validated, errors: errorsTxt };\r\n },\r\n validateRegister: function (_$form) {\r\n var validated = true;\r\n var errorsTxt = [];\r\n\r\n if (_$form.find('[name=\"email\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Informe seu email!');\r\n }\r\n\r\n if (_$form.find('[name=\"password\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Informe uma senha!');\r\n }\r\n\r\n if (_$form.find('[name=\"password\"]').val() != '') {\r\n var pass = _$form.find('[name=\"password\"]').val();\r\n var confirmationPass = _$form.find('[name=\"password_confirmation\"]').val();\r\n\r\n if (pass != confirmationPass) {\r\n validated = false;\r\n errorsTxt.push('Senha e confirmação são diferentes!');\r\n }\r\n }\r\n\r\n return { validated: validated, errors: errorsTxt };\r\n },\r\n validateRecover: function (_$form) {\r\n var validated = true;\r\n var errorsTxt = [];\r\n\r\n if (_$form.find('[name=\"email\"]').val() == '') {\r\n validated = false;\r\n errorsTxt.push('Informe seu email!');\r\n }\r\n\r\n return { validated: validated, errors: errorsTxt };\r\n },\r\n logar: function (_$form) {\r\n if (!_$form.hasClass('sending')) {\r\n $.ajax({\r\n url: '/entrar',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: _$form.serialize(),\r\n beforeSend: function () {\r\n _$form.addClass('sending');\r\n },\r\n })\r\n .done(function (resp) {\r\n console.log('success', resp);\r\n\r\n if (resp.error) {\r\n store.setMsgResponse(resp.error, 'error', _$form);\r\n }\r\n\r\n if (resp.client) {\r\n window.location.href = resp.redirect_to;\r\n }\r\n })\r\n .fail(function (resp) {\r\n console.error('error', error.responseText);\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n _$form.removeClass('sending');\r\n });\r\n }\r\n },\r\n recoverPassord: function (_$form) {\r\n if (!_$form.hasClass('sending')) {\r\n $.ajax({\r\n url: '/recuperar_senha',\r\n type: 'POST',\r\n dataType: 'json',\r\n data: _$form.serialize(),\r\n beforeSend: function () {\r\n _$form.addClass('sending');\r\n },\r\n })\r\n .done(function (resp) {\r\n console.log('success', resp);\r\n\r\n if (resp.error) {\r\n store.setMsgResponse(resp.error, 'error', _$form);\r\n }\r\n\r\n if (resp.ok) {\r\n store.setMsgResponse(resp.ok, 'success', _$form);\r\n }\r\n\r\n /*if (resp.client) {\r\n window.location.href = resp.redirect_to;\r\n }*/\r\n })\r\n .fail(function (resp) {\r\n console.error('error', error.responseText);\r\n })\r\n .always(function () {\r\n console.log('complete');\r\n _$form.removeClass('sending');\r\n });\r\n }\r\n },\r\n },\r\n};\r\n\r\nwindow.template_store = {\r\n /* \r\n Manda um ajax para o form de avise-me e também para um form da plataforma para o cliente receber um email\r\n */\r\n submitFormNotify: function (_$form) {\r\n var formData = _$form.serialize();\r\n\r\n if (!_$form.hasClass('sending')) {\r\n $.ajax({\r\n url: '/lista_de_espera',\r\n type: 'post',\r\n dataType: 'json',\r\n data: formData,\r\n beforeSend: function () {\r\n _$form.addClass('sending');\r\n },\r\n })\r\n .done(function (resp) {\r\n console.log('success');\r\n console.info(resp);\r\n\r\n var msgSuccess = 'Você receberá um e-mail quando o produto estiver disponível';\r\n\r\n if (resp.error) {\r\n _$form.find('[data-msg-retorno] [data-msg-error]').html(resp.error);\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\r\n } else {\r\n // Envia um email para o cliente saber que o usuário solicitou o avise-me\r\n $.ajax({\r\n url: '/webform',\r\n type: 'POST',\r\n data: {\r\n key: _$form.find('[name=\"key\"]').val(),\r\n reply_to: _$form.find('[name=\"email\"]').val(),\r\n email: _$form.find('[name=\"email\"]').val(),\r\n product_name: _$form.find('[name=\"nome\"]').val(),\r\n referencia: _$form.find('[name=\"referencia\"]').val(),\r\n sku: _$form.find('[name=\"sku\"]').val(),\r\n },\r\n })\r\n .done(function (resp) {\r\n _$form.find('[data-msg-retorno] [data-msg-success]').addClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').removeClass('visible');\r\n\r\n _$form[0].reset();\r\n })\r\n .fail(function (error) {\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\r\n });\r\n }\r\n })\r\n .fail(function (resp) {\r\n console.log('error');\r\n console.error(resp);\r\n console.error(resp.responseText);\r\n console.error(resp.responseText.error);\r\n\r\n var errorText = JSON.parse(resp.responseText);\r\n console.info(errorText);\r\n\r\n _$form.find('[data-msg-retorno] [data-msg-error]').html(errorText.error);\r\n _$form.find('[data-msg-retorno] [data-msg-success]').removeClass('visible');\r\n _$form.find('[data-msg-retorno] [data-msg-error]').addClass('visible');\r\n })\r\n .always(function () {\r\n _$form.removeClass('sending');\r\n });\r\n }\r\n },\r\n /* \r\n Função que executa o comportamento de quando o produto é adicionado no carrinho\r\n */\r\n addItemResult: function (_$form, _typeResult, _result, _$boxResponse) {\r\n var _this;\r\n \r\n if (_typeResult == 'produto-adicionado') {\r\n var $btnComprar = _$form.find(store.config.selectorBtnBuy);\r\n\r\n $btnComprar.addClass('success').html(getText(language));\r\n\r\n setTimeout(function () {\r\n // _$form.find('.msg-response').slideUp(350);\r\n $btnComprar.removeClass('success').html($btnComprar.data('text-available'));\r\n }, 3500);\r\n\r\n template_store.headerCart.updateCartCount(_result.items_count);\r\n\r\n if ($body.width() > 768) {\r\n if (store.config.addToCartOpenCartpopup) {\r\n template_store.headerCart.show();\r\n } else {\r\n setTimeout(function () {\r\n window.location.href = urlCart;\r\n }, 150);\r\n }\r\n } else {\r\n if (store.config.addToCartOpenCartpopupMobile) {\r\n template_store.headerCart.show();\r\n } else {\r\n setTimeout(function () {\r\n window.location.href = urlCart;\r\n }, 150);\r\n }\r\n }\r\n } else if (_typeResult == 'erro-adicionar') {\r\n var errorText = JSON.parse(_result.responseText);\r\n\r\n if (typeof _$boxResponse != 'undefined' && _$boxResponse.length > 0) {\r\n $('html,body').animate(\r\n {\r\n scrollTop: _$boxResponse.offset().top,\r\n },\r\n '250'\r\n );\r\n\r\n console.info(errorText);\r\n\r\n _$boxResponse.addClass('error');\r\n _$boxResponse.removeClass('success');\r\n\r\n _$boxResponse.find('span').html(errorText.error);\r\n _$boxResponse.slideDown(350);\r\n\r\n setTimeout(function () {\r\n _$boxResponse.slideUp(350);\r\n }, 3500);\r\n }\r\n }\r\n },\r\n headerCart: {\r\n button: document.querySelector('[data-toggle-cart]'),\r\n\r\n initDrawer: function () {\r\n if (this.button != null)\r\n this.button.addEventListener('click', window.componentCartDrawer.toggle);\r\n },\r\n\r\n updateCartCount: async function(_itemsCount = null) {\r\n let items = _itemsCount;\r\n if (_itemsCount == null) {\r\n items = await store.getCartItens();\r\n }\r\n\r\n $(store.config.cartCount.attr).data('cart-count-attr', items);\r\n $(store.config.cartCount.attr).attr('data-cart-count-attr', items);\r\n \r\n $(store.config.cartCount.attr).html(items);\r\n $(store.config.cartCount.text).html(items);\r\n $(store.config.cartCount.textLabel).html(items > 1 ? 'itens' : 'item');\r\n },\r\n \r\n show: function () {\r\n window.componentCartDrawer.open();\r\n },\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 debounce: function (func, wait, immediate = true) {\r\n var timeout;\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 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\n throttle: function (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 setMenu: function () {\r\n $(\".open-menu\").on(\"click\", function () {\r\n MenuElements = document.querySelectorAll('[data-animation-delay-menu]');\r\n MenuElements.forEach(animatedElementsItem => {\r\n delay = animatedElementsItem.getAttribute('data-animation-delay-menu');\r\n setTimeout(() => {\r\n animatedElementsItem.classList.add('open');\r\n }, delay);\r\n });\r\n $(\".icon-hamburguer-close\").addClass('open')\r\n $(\".open-menu\").addClass('toclose')\r\n $(\".menu-open\").addClass(\"open\");\r\n $(\".header\").addClass(\"open\")\r\n });\r\n\r\n $(\".icon-hamburguer-close\").on(\"click\", function () {\r\n MenuElements = document.querySelectorAll('[data-animation-delay-menu]');\r\n MenuElements.forEach(animatedElementsItem => {\r\n delay = animatedElementsItem.getAttribute('data-animation-delay-menu');\r\n setTimeout(() => {\r\n animatedElementsItem.classList.remove('open');\r\n }, delay);\r\n });\r\n $(\".icon-hamburguer-close\").removeClass('open')\r\n $(\".open-menu\").removeClass('toclose')\r\n $(\".menu-open\").removeClass(\"open\");\r\n $(\".header\").removeClass(\"open\")\r\n });\r\n //TROCAR PRA INTERSECTION OBSERVER\r\n $(window).scroll(function(){\r\n if ($(this).scrollTop() > 70) {\r\n $('.header').addClass('-scrolled');\r\n } else {\r\n $('.header').removeClass('-scrolled');\r\n }\r\n }); \r\n\r\n if (page != 'home') {\r\n $(\".header\").addClass(\"-not-home\")\r\n }\r\n\r\n },\r\n\r\n setSearchBox: function() {\r\n $('[data-search]').on('click', function(e) {\r\n $('[data-box-search]').addClass('active');\r\n e.stopPropagation()\r\n });\r\n\r\n $('[data-search-close]').on('click', function(e) {\r\n $('[data-box-search]').removeClass('active');\r\n }); \r\n $(document).on('keyup',function(e) { \r\n if(e.key == \"Escape\") {\r\n $('[data-box-search]').removeClass('active');\r\n }\r\n });\r\n },\r\n setCarrosselProducts: function () {\r\n // Inicializa os carrosseis de produtos default\r\n $('[data-carrosel-produtos]').each(function(index, el) {\r\n\r\n // Pega a quantidade de itens que o carrossel contém\r\n var qtdItems = $(el).find('[data-item]').length;\r\n\r\n var swiperProductsCarousel = new Swiper($(el), {\r\n slidesPerView: 3,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1.2,\r\n },\r\n 520: {\r\n slidesPerView: 2.1,\r\n },\r\n 767: {\r\n slidesPerView: 2,\r\n },\r\n 991: {\r\n slidesPerView: 3,\r\n },\r\n },\r\n mousewheel: {\r\n forceToAxis: true,\r\n },\r\n navigation: {\r\n nextEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-next'),\r\n prevEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-prev'),\r\n },\r\n });\r\n });\r\n },\r\n setCarrosselShowcase: function () {\r\n // Inicializa os carrosseis de produtos default\r\n $('[data-carrosel-showcase]').each(function(index, el) {\r\n\r\n // Pega a quantidade de itens que o carrossel contém\r\n var qtdItems = $(el).find('[data-item]').length;\r\n\r\n var swiperProductsCarousel = new Swiper($(el), {\r\n slidesPerView: 1.4,\r\n spaceBetween: 40,\r\n watchOverflow: true,\r\n navigation: {\r\n nextEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-next'),\r\n prevEl: $(el).closest('.section-carrosel-produtos').find('.swiper-button-prev'),\r\n },\r\n });\r\n });\r\n },\r\n handleAnimations: function () {\r\n // ===========================================================\r\n // Animação de entrada\r\n // ===========================================================\r\n animatedElements = document.querySelectorAll('[data-animation]');\r\n\r\n viewportDistance = 10;\r\n\r\n if (animatedElements.length > 0) {\r\n animatedElements.forEach(animatedElementsItem => {\r\n const animatedElementsInterval = setInterval(() => {\r\n if (store.isInViewport(animatedElementsItem, viewportDistance)) {\r\n animatedElementsItem.classList.add('-visible');\r\n clearInterval(animatedElementsInterval);\r\n }\r\n }, 1)\r\n })\r\n }\r\n // ===========================================================\r\n // Animação de entrada com atraso\r\n // ===========================================================\r\n animatedElements = document.querySelectorAll('[data-animation-delay]');\r\n\r\n viewportDistance = 10;\r\n delay = 0;\r\n\r\n if (animatedElements.length > 0) {\r\n animatedElements.forEach(animatedElementsItem => {\r\n const animatedElementsInterval = setInterval(() => {\r\n if (store.isInViewport(animatedElementsItem, viewportDistance)) {\r\n delay = animatedElementsItem.getAttribute('data-animation-delay');\r\n setTimeout(() => {\r\n animatedElementsItem.classList.add('-visible');\r\n }, delay);\r\n clearInterval(animatedElementsInterval);\r\n }\r\n }, 1);\r\n })\r\n }\r\n },\r\n\r\n handleLoader: function() {\r\n const loader = document.querySelector('#loader');\r\n \r\n if (loader != null) {\r\n window.addEventListener('load', () => {\r\n loader.classList.add('-hidden');\r\n setTimeout(() => { loader.parentElement.removeChild(loader) }, 1000)\r\n })\r\n }\r\n },\r\n\r\n home: {\r\n // Aqui ficam os js da home \r\n setFullbanner: function () { \r\n $('[data-fullbanner]').each(function (index, el) {\r\n var $el = $(el);\r\n \r\n var swiper = new Swiper($el.find('.swiper-container'), {\r\n slidesPerView: 1,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n autoplay: {\r\n delay: 5000\r\n },\r\n navigation: {\r\n nextEl: $(el).find('.swiper-button-next'),\r\n prevEl: $(el).find('.swiper-button-prev'),\r\n disabledClass: '-disabled'\r\n },\r\n pagination: {\r\n el: $(el).find('.swiper-pagination'),\r\n type: 'bullets',\r\n clickable: true\r\n }, \r\n });\r\n }); \r\n },\r\n\r\n setSliderGrid: function () {\r\n $(\"[data-slider-grid-mobile]\").each(function (i, el) {\r\n var $el = $(el);\r\n var swiper = new Swiper($el, {\r\n slidesPerView: 1,\r\n spaceBetween: 5,\r\n watchOverflow: true,\r\n speed: 850,\r\n breakpoints: {\r\n 0: {\r\n slidesPerView: 1.1,\r\n }\r\n },\r\n });\r\n window.addEventListener('load', () => {\r\n swiper.update();\r\n });\r\n })\r\n },\r\n\r\n setSliderCategorys: function () {\r\n $(\"[data-slider-categorys]\").each(function (i, el) {\r\n var $el = $(el);\r\n var swiper = new Swiper($el, {\r\n slidesPerView: 1,\r\n watchOverflow: true,\r\n spaceBetween: 0,\r\n breakpoints: {\r\n 426: {\r\n slidesPerView: 2,\r\n },\r\n 768: {\r\n slidesPerView: 3,\r\n },\r\n 1200: {\r\n slidesPerView: 5,\r\n }\r\n }\r\n });\r\n window.addEventListener('load', () => {\r\n swiper.update();\r\n });\r\n })\r\n },\r\n setSliderInstagram: function () {\r\n $(\"[data-slider-instagram]\").each(function (i, el) {\r\n var $el = $(el);\r\n var swiper = new Swiper($el, {\r\n slidesPerView: 1,\r\n spaceBetween: 10,\r\n preloadImages: true,\r\n watchOverflow: true,\r\n speed: 850,\r\n breakpoints: {\r\n 426: {\r\n slidesPerView: 2,\r\n },\r\n 768: {\r\n slidesPerView: 4,\r\n },\r\n 1200: {\r\n slidesPerView: 5,\r\n }\r\n },\r\n autoplay: {\r\n delay: 5000\r\n },\r\n //swiper lazy load\r\n preloadImages: false,\r\n watchVisibility: true,\r\n lazy: {\r\n loadPrevNext: true,\r\n Amount: 1,\r\n loadOnTransitionStart: true\r\n },\r\n navigation: {\r\n nextEl: $el\r\n .parents(\".section-instagram\")\r\n .find(\".swiper-button-next\"),\r\n prevEl: $el\r\n .parents(\".section-instagram\")\r\n .find(\".swiper-button-prev\"),\r\n },\r\n });\r\n window.addEventListener('load', () => {\r\n swiper.update();\r\n });\r\n })\r\n },\r\n init: function () {\r\n const _this = this;\r\n _this.setFullbanner();\r\n template_store.setCarrosselProducts();\r\n template_store.setCarrosselShowcase();\r\n _this.setSliderGrid();\r\n _this.setSliderCategorys();\r\n _this.setSliderInstagram();\r\n\r\n },\r\n },\r\n product: {\r\n // Aqui ficam os js do transacional\r\n $sectionProduct: $('[data-section-product]'),\r\n $wrapperImages: $('[data-section-product]').find('[data-product-images]'),\r\n $sliderProduct: $('[data-section-product]').find('[data-product-images] [data-main-slider]'),\r\n $thumbsProduct: $('[data-section-product]').find('[data-product-images] [data-slider-thumbs]'),\r\n sliderProduct: [],\r\n /* \r\n Exibe as primeiras imagens do produto\r\n ** Importante para quando houver imagem por sku **\r\n */\r\n showFirstImages: function () {\r\n var _this = this;\r\n var variants = vnda.variants.all();\r\n var $imagesWithoutSkus = _this.$sliderProduct.find('.image-without-sku');\r\n var $thumbsWithoutSkus = _this.$thumbsProduct.find('.image-without-sku');\r\n\r\n if ($imagesWithoutSkus.length > 0) {\r\n\r\n /*\r\n Todas as imagens sem skus são exibidas sempre\r\n */\r\n\r\n $imagesWithoutSkus\r\n .removeClass('inactive')\r\n .addClass('active');\r\n\r\n $thumbsWithoutSkus\r\n .removeClass('inactive')\r\n .addClass('active');\r\n } else {\r\n /*\r\n Percorre todas as variantes\r\n */\r\n for (var i = 0; i < variants.length; i++) {\r\n if (variants[i].main) {\r\n //console.info(variants[i]);\r\n\r\n // Procura a imagem que contém o sku e a exibe\r\n _this.$sliderProduct.find('[data-image][data-skus-image*=\"' + variants[i].sku + '\"]')\r\n .addClass('active')\r\n .removeClass('inactive');\r\n\r\n _this.$thumbsProduct.find('[data-image-thumb][data-skus-image*=\"' + variants[i].sku + '\"]')\r\n .addClass('active')\r\n .removeClass('inactive');\r\n }\r\n }\r\n }\r\n },\r\n setGallery: function () {\r\n var _this = this;\r\n\r\n var gallery = new Swiper(_this.$sliderProduct, {\r\n slidesPerView: 1,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n simulateTouch: false,\r\n navigation: {\r\n nextEl: _this.$sliderProduct.parent().find('.button-next'),\r\n prevEl: _this.$sliderProduct.parent().find('.button-prev'),\r\n },\r\n preloadImages: false,\r\n watchVisibility: true,\r\n lazy: {\r\n loadPrevNext: true,\r\n loadOnTransitionStart: true\r\n }\r\n });\r\n\r\n var galleryThumbs = new Swiper(_this.$thumbsProduct, {\r\n spaceBetween: 0,\r\n slidesPerView: 5,\r\n freeMode: true,\r\n watchSlidesVisibility: true,\r\n watchSlidesProgress: true,\r\n simulateTouch: true,\r\n watchOverflow: true,\r\n direction: 'vertical',\r\n navigation: {\r\n nextEl: _this.$thumbsProduct.parent().find('.button-next'),\r\n prevEl: _this.$thumbsProduct.parent().find('.button-prev'),\r\n },\r\n preloadImages: false,\r\n watchVisibility: true,\r\n lazy: {\r\n loadPrevNext: true,\r\n loadOnTransitionStart: true\r\n }\r\n })\r\n\r\n this.sliderProduct.push(gallery);\r\n this.sliderProduct.push(galleryThumbs);\r\n\r\n $('[data-image-thumb]').on('click', function () {\r\n //console.log('oie');\r\n //console.log($(this).data('index'));\r\n gallery.slideTo($(this).data('index'));\r\n });\r\n },\r\n submitNotify: function () {\r\n const webForms = document.querySelectorAll('[data-form-notify]');\r\n\r\n webForms.length > 0 && webForms.forEach(form => {\r\n\r\n const\r\n button = form.querySelector('button'),\r\n fieldset = form.querySelector('fieldset'),\r\n msg = form.querySelector('[data-msg]');\r\n\r\n let vnda = form.querySelector('input[name=\"vnda\"]');\r\n vnda.addEventListener('input', () => fieldset.setAttribute('disabled', true))\r\n\r\n button && button.addEventListener('click', () => {\r\n let allowed = true;\r\n\r\n if (vnda.value == '') {\r\n vnda.setAttribute('required', false);\r\n const requiredFields = form.querySelectorAll('[required]:not([required=false])');\r\n\r\n requiredFields.forEach(input => {\r\n if (input.value == '') {\r\n allowed = false;\r\n\r\n msg.classList.add('visible');\r\n msg.innerText = 'Preencha todos os campos obrigatórios'\r\n\r\n setTimeout(() => {\r\n msg.classList.remove('visible');\r\n msg.innerText = ''\r\n }, 2000)\r\n }\r\n })\r\n\r\n if (allowed) template_store.submitFormNotify($(form));\r\n }\r\n })\r\n })\r\n\r\n /*\r\n $(document).on('submit', '[data-form-notify]', function (event) {\r\n event.preventDefault();\r\n template_store.submitFormNotify($(this));\r\n });\r\n */\r\n },\r\n setButtonFixed: function() {\r\n const observerActions = new IntersectionObserver(function(entries, observer){\r\n entries.forEach(entry => {\r\n if(entry.isIntersecting) {\r\n $('.main-infos').removeClass('-active');\r\n }\r\n else {\r\n $('.main-infos').addClass('-active');\r\n }\r\n })\r\n },\r\n { \r\n root: null,\r\n rootMargin: '-150px',\r\n threshold: 0\r\n });\r\n observerActions.observe(document.querySelector(\".product-infos\"));\r\n },\r\n setQuantity: function () {\r\n window.addEventListener(\"click\", (e) => {\r\n let target = e.target.dataset.quantity;\r\n if (target) {\r\n let input = e.target.parentNode.querySelector(\"input\");\r\n let value = parseFloat(input.value);\r\n\r\n switch (target) {\r\n case \"minus\":\r\n if (value > 1) {\r\n input.setAttribute(\"value\", value - 1);\r\n }\r\n break;\r\n case \"plus\":\r\n input.setAttribute(\"value\", value + 1);\r\n break;\r\n }\r\n }\r\n });\r\n },\r\n init: function () {\r\n var _this = this;\r\n\r\n _this.submitNotify();\r\n _this.setButtonFixed();\r\n _this.showFirstImages();\r\n _this.setGallery();\r\n _this.setQuantity();\r\n\r\n template_store.setCarrosselProducts();\r\n\r\n $('.tabs .titulo').on('click', function(){\r\n var id = $(this).data('content');\r\n let tab = $(this).data('tab') \r\n $(`.tabs .titulo[data-tab=\"${tab}\"]`).removeClass('active');\r\n $(this).addClass('active');\r\n console.log($(`.contents .content[data-tab=\"${tab}\"]`))\r\n $(`.contents .content[data-tab=\"${tab}\"]`).removeClass('active');\r\n $(id).addClass('active')\r\n })\r\n\r\n $('.see_more_description').on('click', function(){\r\n $('[data-description-short]').toggleClass('-hidden');\r\n $('[data-description-full]').toggleClass('-show');\r\n $('.see_more_description').toggleClass('see_less');\r\n });\r\n \r\n $(document).on('submit', store.config.selectorFormProduct, function (event) {\r\n event.preventDefault();\r\n\r\n var $form = $(this);\r\n var $parent = $form.closest(store.config.selectorWrapperProduct);\r\n\r\n var $btnComprar = $parent.find(store.config.selectorBtnBuy);\r\n\r\n var respValidated = store.validateFormProduct($form);\r\n var $boxResponse = $parent.find('.resp-validate');\r\n\r\n if (respValidated.validated) {\r\n store.addItem($form, $parent);\r\n } else {\r\n console.info('não foi');\r\n store.setRespValidateProduct(respValidated, $form, $boxResponse);\r\n }\r\n });\r\n },\r\n },\r\n tag: {\r\n\r\n expandDescription: function(){\r\n tagDescription = document.querySelector(['[data-tag-description]']);\r\n btnDescription = document.querySelector(['[data-read-more]']);\r\n\r\n if (btnDescription){\r\n btnDescription.addEventListener('click', () => {\r\n if (!btnDescription.classList.contains('active')){\r\n tagDescription.classList.add('active');\r\n btnDescription.classList.add('active');\r\n btnDescription.textContent = btnDescription.dataset.less;\r\n }else{\r\n tagDescription.classList.remove('active');\r\n btnDescription.classList.remove('active');\r\n btnDescription.textContent = btnDescription.dataset.more;\r\n }\r\n })\r\n }\r\n },\r\n init: function () {\r\n const _this = this;\r\n _this.expandDescription();\r\n\r\n $('.open-filter-mobile').on('click', function(){\r\n $('.filter-list').toggleClass('open')\r\n })\r\n\r\n },\r\n },\r\n login: {\r\n init: function () {\r\n $('[data-content-login]').each(function (index, el) {\r\n // Animação\r\n $(el).on('click', '[data-forget-password]', function (event) {\r\n event.preventDefault();\r\n $(el).find('.wrapper-form-login').animate({ height: 'toggle' }, 500);\r\n $(el).find('.wrapper-form-recover').animate({ height: 'toggle' }, 500);\r\n });\r\n\r\n $(el).on('click', '[data-forget-password-back]', function (event) {\r\n event.preventDefault();\r\n $(el).find('.wrapper-form-login').animate({ height: 'toggle' }, 500);\r\n $(el).find('.wrapper-form-recover').animate({ height: 'toggle' }, 500);\r\n });\r\n\r\n $(el).on('submit', '[data-form-login]', function (event) {\r\n event.preventDefault();\r\n\r\n var $form = $(this);\r\n var respValidated = store.login.validateLogin($form);\r\n\r\n if (respValidated.validated) {\r\n store.login.logar($form);\r\n } else {\r\n store.setMsgResponse(respValidated.errors, 'error', $(this));\r\n }\r\n });\r\n\r\n $(el).on('submit', '[data-form-register]', function (event) {\r\n event.preventDefault();\r\n\r\n var $form = $(this);\r\n var respValidated = store.login.validateRegister($form);\r\n\r\n if (respValidated.validated) {\r\n store.login.logar($form);\r\n } else {\r\n store.setMsgResponse(respValidated.errors, 'error', $(this));\r\n }\r\n });\r\n\r\n $(el).on('submit', '[data-form-recover]', function (event) {\r\n event.preventDefault();\r\n\r\n var $form = $(this);\r\n var respValidated = store.login.validateRecover($form);\r\n\r\n if (respValidated.validated) {\r\n store.login.recoverPassord($form);\r\n } else {\r\n store.setMsgResponse(respValidated.errors, 'error', $(this));\r\n }\r\n });\r\n });\r\n },\r\n },\r\n ambiente: {\r\n setSliderAmbiente: function () { \r\n $('[data-ambiente]').each(function (index, el) {\r\n var $el = $(el);\r\n \r\n var swiper = new Swiper($el.find('.swiper-container'), {\r\n slidesPerView: 1,\r\n spaceBetween: 0,\r\n watchOverflow: true,\r\n navigation: {\r\n nextEl: $(el).find('.swiper-button-next'),\r\n prevEl: $(el).find('.swiper-button-prev'),\r\n disabledClass: '-disabled'\r\n }, \r\n });\r\n }); \r\n },\r\n \r\n init: function () {\r\n var _this = this;\r\n _this.setSliderAmbiente();\r\n template_store.setCarrosselProducts();\r\n }\r\n },\r\n blog_post:{\r\n setSliderBlog: function () {\r\n $(\"[data-blog-slider]\").each(function (i, el) {\r\n var $el = $(el);\r\n var swiper = new Swiper($el, {\r\n slidesPerView: 1,\r\n spaceBetween: 10,\r\n preloadImages: true,\r\n watchOverflow: true,\r\n speed: 850,\r\n autoplay: {\r\n delay: 5000\r\n },\r\n navigation: {\r\n nextEl: $el\r\n .parents(\".post-content\")\r\n .find(\".swiper-button-next\"),\r\n prevEl: $el\r\n .parents(\".post-content\")\r\n .find(\".swiper-button-prev\"),\r\n },\r\n });\r\n window.addEventListener('load', () => {\r\n swiper.update();\r\n });\r\n })\r\n },\r\n init: function () {\r\n var _this = this;\r\n _this.setSliderBlog();\r\n }\r\n },\r\n init: function () {\r\n var _this = this;\r\n store.getPriceProd();\r\n _this.headerCart.updateCartCount();\r\n _this.headerCart.initDrawer();\r\n _this.setMenu();\r\n _this.setSearchBox();\r\n _this.handleLoader();\r\n window.addEventListener('load', () => {\r\n _this.handleAnimations();\r\n });\r\n \r\n // ENVIO DE FORMULÁRIOS\r\n $('[data-webform]').on('submit', function (event) {\r\n event.preventDefault();\r\n var $form = $(this);\r\n var vnda = $(this).find('[name=\"vnda\"]');\r\n\r\n if (vnda.length > 0) {\r\n if (vnda.val() != '') {\r\n //console.info('ROBOT DETECTED');\r\n return false;\r\n }\r\n }\r\n\r\n store.submitForm($form);\r\n });\r\n },\r\n};\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n template_store.init();\r\n\r\n if (page == 'home') {\r\n template_store.home.init();\r\n }\r\n\r\n if (page == 'product') {\r\n template_store.product.init();\r\n }\r\n\r\n if (page == 'tag') {\r\n template_store.tag.init();\r\n }\r\n\r\n if (page == 'login') {\r\n template_store.login.init();\r\n }\r\n\r\n if (page == 'media/ambientes_post'){\r\n template_store.ambiente.init();\r\n }\r\n \r\n if (page == 'media/blog_post'){\r\n template_store.blog_post.init();\r\n }\r\n});\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function(event) {\r\n window.componentCartDrawer = new Vnda.Component.CartDrawer({\r\n anchor: 'right',\r\n disableShippingCalculation: false,\r\n display: 'list',\r\n enableSamples: true,\r\n freeShipping: 260,\r\n startOpen: false,\r\n suggestedProductsTag: 'relacionado',\r\n titleCart: 'Carrinho de compras', \r\n titleSuggested: 'Produtos sugeridos',\r\n widthItemSuggested: 25,\r\n nameItemSuggested: 'properties'\r\n });\r\n \r\n componentCartDrawer.render(document.getElementById('component-cart-drawer-root'));\r\n \r\n var button = document.querySelector('[data-toggle-cart]')\r\n\r\n button.addEventListener('click', componentCartDrawer.toggle)\r\n});\r\n\r\n\r\n\r\n\r\nconsole.log(\r\n '%cVnda - Tecnologia em Ecommerce',\r\n 'color: #f88d5b; font-size: 15px; font-family: \"Verdana\", sans-serif; font-weight: bold;'\r\n);\r\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","isInViewport","element","percentVisible","rect","getBoundingClientRect","windowHeight","innerHeight","document","documentElement","clientHeight","percentFromTop","Math","floor","top","height","percentToBottom","bottom","formatMoney","value","toFixed","replace","validateQuantity","_val","isNaN","parseInt","getClearNumber","clearNumber","getPriceProd","products","querySelectorAll","length","forEach","product","getAttribute","prodId","url","ajax","type","done","resp","innerHTML","setAttribute","fail","getCurrentCart","async","dataType","error","console","validateFormProduct","_$form","closest","validated","find","push","val","log","errors","setRespValidateProduct","_resp","_$boxResponse","$boxResult","htmlErrors","empty","i","html","addItemResultDefault","_typeResult","_result","$btnComprar","this","addClass","template_store","headerCart","updateCartCount","items_count","setTimeout","removeClass","location","href","urlCart","errorText","JSON","parse","responseText","info","slideDown","slideUp","addItemResultDefaultAssinatura","urlAssinaturaCart","addItem","_$parent","dispatchExtra","$boxResponse","form","serializeArray","input","name","colchao","montagem","grade","index","hasClass","beforeSend","dispatchEvent","Event","addItemResult","always","addItemAssinatura","urlAssinaturaCartAdd","serialize","subscription_item","sku","extra","vindi_plan_id","stringify","contentType","xhrFields","withCredentials","xhr","status","deleteItem","_itemId","_$item","removeItemResult","_method","item_id","_cart","width","setMsgResponse","_msg","_type","Array","isArray","msgArr","getCartItens","submitForm","reset","login","validateLogin","validateRegister","validateRecover","logar","client","redirect_to","recoverPassord","ok","submitFormNotify","formData","reply_to","email","product_name","referencia","show","animate","scrollTop","offset","button","querySelector","initDrawer","addEventListener","componentCartDrawer","toggle","_itemsCount","items","textLabel","open","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","apply","throttle","fn","threshhold","scope","last","deferTimer","now","Date","setMenu","on","MenuElements","animatedElementsItem","delay","classList","add","remove","scroll","setSearchBox","e","stopPropagation","setCarrosselProducts","each","el","Swiper","slidesPerView","spaceBetween","watchOverflow","breakpoints","mousewheel","forceToAxis","navigation","nextEl","prevEl","setCarrosselShowcase","handleAnimations","animatedElements","viewportDistance","animatedElementsInterval","setInterval","clearInterval","handleLoader","loader","parentElement","removeChild","home","setFullbanner","$el","autoplay","disabledClass","pagination","clickable","setSliderGrid","swiper","speed","update","setSliderCategorys","setSliderInstagram","preloadImages","watchVisibility","lazy","loadPrevNext","Amount","loadOnTransitionStart","parents","init","$sectionProduct","$wrapperImages","$sliderProduct","$thumbsProduct","sliderProduct","showFirstImages","variants","vnda","all","$imagesWithoutSkus","$thumbsWithoutSkus","main","setGallery","gallery","simulateTouch","parent","galleryThumbs","freeMode","watchSlidesVisibility","watchSlidesProgress","direction","slideTo","submitNotify","webForms","fieldset","msg","allowed","innerText","setButtonFixed","IntersectionObserver","entries","observer","entry","isIntersecting","root","rootMargin","threshold","observe","setQuantity","target","dataset","parentNode","parseFloat","id","tab","toggleClass","event","preventDefault","$form","$parent","respValidated","tag","expandDescription","tagDescription","btnDescription","contains","textContent","more","less","ambiente","setSliderAmbiente","blog_post","setSliderBlog","_this","Vnda","Component","CartDrawer","anchor","disableShippingCalculation","display","enableSamples","freeShipping","startOpen","suggestedProductsTag","titleCart","titleSuggested","widthItemSuggested","nameItemSuggested","render","getElementById"],"sourceRoot":""}