{"version":3,"file":"lojistas.js","mappings":";;;;AAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE;AAC7B;AACA;;;AC9BwC;AACxC;AACO;AACP;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,qCAAqC,GAAG;AACxC;AACA;AACA,2CAA2C,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA,QAAQ;AACR;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;;ACpG+C;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc,EAAE,aAAa;AACpE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,kBAAkB;AACtE,sDAAsD,kBAAkB;AACxE,SAAS;AACT;AACA;AACA;AACA,oDAAoD,kBAAkB;AACtE,sDAAsD,kBAAkB;AACxE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,6DAA6D,eAAe;AAC5E,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,uBAAuB;AAC5C,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA","sources":["webpack://build/../laviesports/assets/javascripts/utilities.js","webpack://build/../laviesports/assets/javascripts/loginLojistas.js","webpack://build/../laviesports/assets/javascripts/lojistas.js"],"sourcesContent":["export async function getClient() {\r\n try {\r\n let response = await fetch(`/conta/cliente`, {\r\n headers: {\r\n accept: 'application/json'\r\n }\r\n });\r\n let client = await response.json();\r\n\r\n if (Object.keys(client).length > 0) {\r\n return client\r\n } else {\r\n return {}\r\n }\r\n\r\n } catch (error) { console.error(`getClient error`, error) }\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","import { getClient } from \"./utilities\";\r\n\r\nexport const LoginLojistas = {\r\n isLoggedIn: false,\r\n client: {},\r\n initialProducts: [...document.querySelectorAll('.product-block-lojista')],\r\n sectionWaitingAccess: document.querySelector('[data-section=\"waiting-access\"]'),\r\n sectionLogin: document.querySelector('[data-section=\"login\"]'),\r\n sectionProducts: document.querySelector('[data-section=\"products\"]'),\r\n\r\n // Seta as informações do cliente\r\n setClient: async function () {\r\n const client = await getClient();\r\n\r\n if (Object.keys(client).length > 0) {\r\n this.isLoggedIn = true;\r\n this.client = client;\r\n }\r\n\r\n this.showSectionByClientStatus();\r\n },\r\n\r\n // Controla qual seção exibir baseado no status do cliente\r\n showSectionByClientStatus: function () {\r\n if (this.isLoggedIn) {\r\n if (this.client.tags && this.client.tags.includes('lojistas')) {\r\n this.sectionProducts.classList.add('-visible');\r\n this.updateProductsPrice(this.initialProducts);\r\n } else {\r\n this.sectionWaitingAccess.classList.add('-visible');\r\n }\r\n } else {\r\n this.sectionLogin.classList.add('-visible');\r\n }\r\n },\r\n\r\n // Busca o preço baseado nas informações do cliente\r\n fetchPrice: async function (id, sku) {\r\n let priceURL = `/produto/preco/${id}`;\r\n\r\n if (this.isLoggedIn) {\r\n priceURL = `/produto/preco/cliente/${id}`;\r\n }\r\n\r\n const priceConfig = {}\r\n const response = await fetch(priceURL, {\r\n method: \"GET\",\r\n credentials: \"include\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n });\r\n\r\n const data = await response.json();\r\n data.variants.forEach((variant) => {\r\n if (sku == variant.sku) {\r\n priceConfig.price = variant.price;\r\n priceConfig.sale_price = variant.sale_price;\r\n }\r\n })\r\n priceConfig.available = data.available;\r\n\r\n return priceConfig;\r\n },\r\n\r\n // Atualiza os produtos com o preço original e o preço remarcado baseado no cliente\r\n updateProductsPrice: function (products) {\r\n products.forEach(async function (product) {\r\n const id = product.getAttribute('data-product-id');\r\n const sku = product.getAttribute('data-product-sku');\r\n const priceWrapper = product.querySelector('[data-seller-price]');\r\n\r\n const { price, sale_price } = await LoginLojistas.fetchPrice(id, sku);\r\n\r\n if (price != sale_price) {\r\n priceWrapper.innerHTML = `\r\n \r\n Varejo: ${store.formatMoney(price)}\r\n \r\n \r\n Atacado: ${store.formatMoney(sale_price)}\r\n \r\n `;\r\n } else {\r\n priceWrapper.innerHTML = `\r\n Atacado: ${store.formatMoney(price)}\r\n `;\r\n }\r\n\r\n product.setAttribute('data-was-processed', true);\r\n });\r\n },\r\n\r\n init() {\r\n this.setClient();\r\n },\r\n};\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n LoginLojistas.init();\r\n});\r\n","import { LoginLojistas } from \"./loginLojistas\";\r\n\r\nif (typeof _pagination == \"undefined\" || _pagination.pages.length <= 0) {\r\n // console.info('a variável _pagination não foi setada ou não há paginação');\r\n window._pagination = false;\r\n}\r\n\r\nwindow.lojistaCart = {\r\n items: [],\r\n clientInfos: [],\r\n getProductById: function (_productId) {\r\n return this.items.filter(function (el, i) {\r\n return el.id == _productId;\r\n });\r\n },\r\n removeProduct: function (_productId) {\r\n var product = this.getProductById(_productId);\r\n\r\n // console.info('excluindo produto', product);\r\n\r\n if (product.length > 1) {\r\n for (var i = 0; i < product.length; i++) {\r\n this.items.splice(product[i].indice, 1);\r\n }\r\n } else {\r\n this.items.splice(product[0].indice, 1);\r\n }\r\n },\r\n saveLocal: function () {\r\n // console.log('saveLocal')\r\n localStorage.lojistaCart = JSON.stringify(this.items);\r\n },\r\n saveProduct: function (_product) {\r\n _product[\"indice\"] = this.items.length;\r\n this.items.push(_product);\r\n },\r\n saveClientInfosLocal: function () {\r\n localStorage.clientInfos = JSON.stringify(this.clientInfos);\r\n },\r\n saveClientInfos: function (_$form) {\r\n //Transforma array de serializeArray em um objeto\r\n function objectifyForm(formArray) {\r\n var returnArray = {};\r\n for (var i = 0; i < formArray.length; i++) {\r\n returnArray[formArray[i][\"name\"]] = formArray[i][\"value\"];\r\n }\r\n return returnArray;\r\n }\r\n\r\n var infos = _$form.serializeArray();\r\n this.clientInfos = objectifyForm(infos);\r\n },\r\n updateProduct: function (_obj) {\r\n var product = this.getProductById(_obj.id);\r\n\r\n // console.info('updateProduct', product, _obj);\r\n\r\n if (product.length == 0) {\r\n // console.info('não tem produto');\r\n if (_obj.variants.length > 0) {\r\n this.saveProduct(_obj);\r\n }\r\n } else {\r\n // console.info('tem produto', );\r\n if (_obj.variants.length > 0) {\r\n // console.info('1');\r\n _obj[\"indice\"] = product[0].indice;\r\n this.items[product[0].indice] = _obj;\r\n } else {\r\n // console.info('2');\r\n this.removeProduct(_obj.id);\r\n }\r\n }\r\n\r\n this.saveLocal();\r\n this.buildCart();\r\n\r\n // console.info('this.items', this.items);\r\n },\r\n setCartWithoutProducts: function () {\r\n var $wrapperCart = $(\"[data-wrapper-cart-products]\");\r\n var html = \"\";\r\n\r\n html =\r\n \"\" +\r\n '
' +\r\n \"

Nenhum produto adicionado

\" +\r\n \"
\";\r\n\r\n $wrapperCart.html(html);\r\n\r\n this.updateValorTotalOrder();\r\n },\r\n fetchProducts: function () {\r\n if (\r\n typeof localStorage.lojistaCart != \"undefined\" &&\r\n $(\"[data-item-cart]\").length > 0\r\n ) {\r\n var storedProducts = JSON.parse(localStorage.lojistaCart);\r\n\r\n for (var i = 0; i < storedProducts.length; i++) {\r\n storedProducts[i].indice = i;\r\n }\r\n this.items = storedProducts;\r\n } else {\r\n localStorage.lojistaCart = \"\";\r\n this.items = [];\r\n }\r\n },\r\n fetchClientInfos: function () {\r\n if (typeof localStorage.clientInfos != \"undefined\") {\r\n this.clientInfos = JSON.parse(localStorage.clientInfos);\r\n }\r\n },\r\n getValorTotalProduct: function (_product) {\r\n var valorTotal = 0;\r\n var quantity = 0;\r\n\r\n for (var i = 0; i < _product.variants.length; i++) {\r\n quantity += _product.variants[i].quantity;\r\n }\r\n\r\n return quantity * _product.price;\r\n },\r\n getValorTotalOrder: function () {\r\n var valorTotal = 0;\r\n\r\n for (var i = 0; i < this.items.length; i++) {\r\n var valorProduto = this.getValorTotalProduct(this.items[i]);\r\n\r\n valorTotal += valorProduto;\r\n }\r\n\r\n return valorTotal;\r\n },\r\n buildCart: function () {\r\n var $wrapperCart = $(\"[data-wrapper-cart-products]\");\r\n var htmlItems = \"\";\r\n\r\n function buildVariants(_product) {\r\n var htmlVariants = \"\";\r\n\r\n for (var i = 0; i < _product.variants.length; i++) {\r\n var variant = _product.variants[i];\r\n htmlVariants +=\r\n \"\" +\r\n '
' +\r\n \"\" +\r\n variant.label +\r\n \"\" +\r\n '(' +\r\n variant.quantity +\r\n \")\" +\r\n \"
\";\r\n }\r\n\r\n return htmlVariants;\r\n }\r\n\r\n for (var i = 0; i < this.items.length; i++) {\r\n var valorTotal = store.formatMoney(\r\n this.getValorTotalProduct(this.items[i])\r\n );\r\n htmlItems +=\r\n \"\" +\r\n '
' +\r\n '
' +\r\n '' +\r\n \"
\" +\r\n '
' +\r\n '

' +\r\n \"\" +\r\n this.items[i].name +\r\n \"\" +\r\n \"

\" +\r\n '

' +\r\n \"\" +\r\n store.formatMoney(this.items[i].price) +\r\n \"\" +\r\n \"

\" +\r\n '
' +\r\n buildVariants(this.items[i]) +\r\n \"
\" +\r\n '
Total: ' +\r\n valorTotal +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n }\r\n\r\n this.updateValorTotalOrder();\r\n\r\n $wrapperCart.empty();\r\n $wrapperCart.html(htmlItems);\r\n },\r\n updateValorTotalOrder: function () {\r\n var valorTotal = this.getValorTotalOrder();\r\n\r\n $(\"[data-cart-valor-total]\").html(store.formatMoney(valorTotal));\r\n },\r\n init: function () {\r\n this.fetchProducts();\r\n this.fetchClientInfos();\r\n\r\n if (this.items.length > 0) {\r\n this.buildCart();\r\n } else {\r\n this.setCartWithoutProducts();\r\n }\r\n },\r\n};\r\n\r\nwindow.lojistas_template = {\r\n login: {\r\n getClient: async function () {\r\n try {\r\n let response = await fetch(`/conta/cliente`, {\r\n headers: {\r\n accept: \"application/json\",\r\n },\r\n });\r\n let client = await response.json();\r\n\r\n if (Object.keys(client).length > 0) {\r\n return client;\r\n }\r\n } catch (error) {\r\n console.error(`getClient error`, error);\r\n }\r\n },\r\n setFormInformation: async function () {\r\n const formInformation = document.querySelector(\r\n \".logged-waiting #form_information\"\r\n );\r\n\r\n if (formInformation) {\r\n let client = await window.lojistas_template.login.getClient();\r\n if (client) {\r\n let client_email = client.email;\r\n let client_fName = client.first_name;\r\n let client_lName = client.last_name;\r\n\r\n let clientEmailInput = formInformation.querySelector(\r\n \"input[name='email']\"\r\n );\r\n let clientUserInput = formInformation.querySelector(\r\n \"input[name='usuario']\"\r\n );\r\n let clientEmailField =\r\n formInformation.querySelector(\"#information-email\");\r\n\r\n if (clientEmailInput) {\r\n clientEmailInput.value = client_email;\r\n }\r\n\r\n if (clientEmailField) {\r\n clientEmailField.innerHTML = client_email;\r\n }\r\n\r\n if (clientUserInput) {\r\n clientUserInput.value = `${client_fName} ${client_lName}`;\r\n }\r\n }\r\n }\r\n },\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\r\n .find('[name=\"password_confirmation\"]')\r\n .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 var newClient = false;\r\n\r\n if (_$form.find('[name*=\"new_client\"]').length > 0) {\r\n newClient = true;\r\n }\r\n\r\n console.log(\"newClient\", newClient);\r\n\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 console.info(\"novo cliente cadastrado\", newClient);\r\n\r\n if (newClient) {\r\n var email = _$form.find('[name=\"email\"]').val();\r\n _$form.removeClass(\"sending\");\r\n let client = {};\r\n client[\"nome\"] = $(\"#register-first-name\").val();\r\n client[\"sobrenome\"] = $(\"#register-last-name\").val();\r\n client[\"email\"] = $(\"#register-email\").val();\r\n\r\n _$form.find('[name=\"password\"]').remove();\r\n _$form.find('[name=\"password_confirmation\"]').remove();\r\n\r\n // lojistas_template.login.sendClientToAirtable(client);\r\n\r\n store.submitForm(_$form, email, function () {});\r\n console.info(\"mandando form\");\r\n if (location.search.indexOf(\"?\") < 0) {\r\n location.search = \"?first-access\";\r\n } else {\r\n location.search = \"&first-access\";\r\n }\r\n location.reload();\r\n } else {\r\n window.location.href = resp.redirect_to;\r\n location.reload();\r\n }\r\n }\r\n })\r\n .fail(function (resp) {\r\n console.error(\"error\", 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 sendClientToAirtable: function (client) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"https://api.airtable.com/v0/appu9SG0UIPYn8RbP/Clientes?api_key=keyvd6spdHbHanaHb\",\r\n dataType: \"json\",\r\n data: {\r\n fields: {\r\n Nome: client.nome,\r\n Sobrenome: client.sobrenome,\r\n Email: client.email,\r\n },\r\n },\r\n })\r\n .done(function (resp) {\r\n console.info(\"done\", resp);\r\n })\r\n .fail(function () {\r\n console.info(\"error\");\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 init: function () {\r\n var _this = this;\r\n\r\n var $loginWrapper = $(\"[data-wrapper-login]\");\r\n var $wrapperRegister = $(\"[data-wrapper-form-register]\");\r\n var $wrapperLogin = $(\"[data-wrapper-form-login]\");\r\n\r\n _this.setFormInformation();\r\n\r\n $loginWrapper.on(\"click\", '[data-action=\"active-register\"]', function () {\r\n $loginWrapper.removeClass(\"login-active\");\r\n $loginWrapper.addClass(\"register-active\");\r\n\r\n $wrapperLogin.removeClass(\"active\");\r\n $wrapperRegister.addClass(\"active\");\r\n });\r\n\r\n $loginWrapper.on(\"click\", '[data-action=\"active-login\"]', function () {\r\n $loginWrapper.removeClass(\"register-active\");\r\n $loginWrapper.addClass(\"login-active\");\r\n\r\n $wrapperRegister.removeClass(\"active\");\r\n $wrapperLogin.addClass(\"active\");\r\n });\r\n\r\n $(\"[data-content-login]\").each(function (index, el) {\r\n // Animação\r\n\r\n $(el).on(\"click\", \"[data-forget-password]\", function (event) {\r\n event.preventDefault();\r\n $(el).find(\"[data-form-login]\").animate({ height: \"toggle\" }, 500);\r\n $(el).find(\"[data-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(\"[data-form-login]\").animate({ height: \"toggle\" }, 500);\r\n $(el).find(\"[data-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 = _this.validateLogin($form);\r\n\r\n if (respValidated.validated) {\r\n _this.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 firstName = \"\";\r\n var lastName = \"\";\r\n //var nomeCompleto = $form.find('[name=\"nome_completo\"]').val();\r\n var senha = $form.find('[name=\"password\"]').val();\r\n\r\n // nomeCompleto = nomeCompleto.split(' ');\r\n // firstName = nomeCompleto.splice(0 ,1).toString();\r\n // lastName = nomeCompleto.join(' ');\r\n\r\n //console.info(firstName, lastName);\r\n\r\n // console.info($form.serializeArray());\r\n\r\n // console.info($form.find('[name=\"first_name\"]').val());\r\n\r\n //$form.find('[name=\"first_name\"]').val(firstName);\r\n //$form.find('[name=\"last_name\"]').val(lastName);\r\n $form.find('[name=\"password_confirmation\"]').val(senha);\r\n\r\n var respValidated = _this.validateRegister($form);\r\n\r\n // console.info(respValidated);\r\n\r\n if (respValidated.validated) {\r\n store.setMsgResponse(respValidated.errors, \"clear\", $(this));\r\n _this.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 //$('[data-mask=\"cnpj\"]').mask('00.000.000/0000-00', { reverse: true });\r\n },\r\n },\r\n products: {\r\n infiniteProducts: {\r\n pagination: _pagination, // a variável _pagination é montada pelo liquid pegando as infos da paginação\r\n listsWrapper: $(\"[data-list-products-wrapper]\"), // Elemento que engloba as páginas de produtos\r\n getCurrentPage: function () {\r\n // Retorna a página atual\r\n return this.pagination.currentPage;\r\n },\r\n getNextPage: function () {\r\n var _this = this;\r\n var currentPage = _this.getCurrentPage();\r\n var nextUrl = _this.pagination.nextUrl;\r\n\r\n // Verifica se já não há um ajax em andamento para não encadear vários requests\r\n if (!_this.listsWrapper.hasClass(\"searching\")) {\r\n // Verifica se a página atual não é a última página\r\n if (currentPage >= _this.pagination.totalPages) {\r\n // console.info('não há mais páginas');\r\n _this.listsWrapper.addClass(\"no-more-products\");\r\n } else {\r\n // Ajax que busca os produtos da página seguinte\r\n $.ajax({\r\n url: nextUrl,\r\n type: \"GET\",\r\n dataType: \"html\",\r\n xhrFields: { withCredentials: true },\r\n beforeSend: function () {\r\n _this.listsWrapper.addClass(\"searching\");\r\n },\r\n })\r\n .done(function (_resp) {\r\n // Busca os produtos na página carregada por ajax\r\n var products = $(_resp).find(\r\n \".list-products > .product-block-lojista\"\r\n );\r\n\r\n // console.info('products', products);\r\n\r\n // Seta a página do ajax como atual\r\n _this.setCurrentPage(currentPage + 1);\r\n\r\n // Renderiza os produtos da página\r\n _this.renderMoreProducts(products);\r\n })\r\n .fail(function () {\r\n // console.log(\"error\");\r\n })\r\n .always(function () {\r\n _this.listsWrapper.removeClass(\"searching\");\r\n });\r\n }\r\n }\r\n },\r\n renderMoreProducts: function (_htmlProducts) {\r\n // Monta o html dos produtos da página carregada por ajax\r\n var _this = this;\r\n // var $listProducts = '
';\r\n var $listProducts = \"\";\r\n var $listProducts = $($listProducts);\r\n var st = $(window).scrollTop();\r\n\r\n // console.info(st);\r\n\r\n $listProducts.html(_htmlProducts);\r\n\r\n // console.info('_htmlProducts', _htmlProducts);\r\n\r\n _this.listsWrapper.find(\".list-products\").append(_htmlProducts);\r\n\r\n lojistas_template.products.setProductsAdded();\r\n _this.runProductsSobrando();\r\n lojistas_template.products.setImages();\r\n\r\n // Atualiza o preço dos novos produtos carregados\r\n const productsToUpdate = document.querySelectorAll(\r\n '.product-block-lojista[data-was-processed=\"false\"]'\r\n );\r\n LoginLojistas.updateProductsPrice(productsToUpdate);\r\n\r\n setTimeout(function () {\r\n $(window).scrollTop(st);\r\n }, 5);\r\n },\r\n setCurrentPage: function (_number) {\r\n var current = this.getCurrentPage();\r\n var nextUrl = this.pagination.nextUrl;\r\n\r\n // Verifica se a página atual não é maior que o total de páginas\r\n if (_number <= this.pagination.totalPages) {\r\n // console.info('next url', nextUrl);\r\n\r\n // seta a página atual\r\n this.pagination.currentPage = _number;\r\n\r\n // Verifica se há próxima página\r\n if (_number < this.pagination.totalPages) {\r\n // Seta a url da próxima página\r\n nextUrl = this.pagination.pages[_number].url;\r\n this.pagination.nextUrl = nextUrl;\r\n }\r\n }\r\n },\r\n runProductsSobrando: function () {\r\n var _this = this;\r\n var productsInLine = 2;\r\n var listProducts = _this.listsWrapper.find(\".product-block\");\r\n var lengthProducts = listProducts.length;\r\n var mod;\r\n\r\n // Procura produtos que estão sobrando quando ainda há produtos para serem listados\r\n // Ex: 3 produtos em uma linha de 4\r\n\r\n if ($(\"body\").width() > 768) {\r\n // 4 produtos por linha\r\n\r\n productsInLine = 3;\r\n\r\n if ($body.width() < 768) {\r\n productsInLine = 2;\r\n }\r\n } else {\r\n // 2 produtos por linha\r\n }\r\n\r\n mod = lengthProducts % productsInLine;\r\n\r\n // console.info('mod', mod);\r\n\r\n listProducts.removeClass(\"produto-sobrando\");\r\n\r\n if (_this.pagination.currentPage < _this.pagination.totalPages) {\r\n if (mod > 0) {\r\n for (var i = 0; i < mod; i++) {\r\n // console.info(listProducts[(lengthProducts - 1) - i]);\r\n $(listProducts[lengthProducts - 1 - i]).addClass(\r\n \"produto-sobrando\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n // console.info('productsInLine', productsInLine);\r\n // console.info('lengthProducts', lengthProducts);\r\n },\r\n init: function () {\r\n var _this = this;\r\n\r\n if (_this.pagination.totalPages > 1) {\r\n _this.runProductsSobrando();\r\n\r\n $(window).scroll(function (event) {\r\n var stTop = $(this).scrollTop();\r\n var stBottom = stTop + $(this).height();\r\n\r\n // Calcula o final da div de produtos para buscar mais produtos\r\n var listEnd =\r\n _this.listsWrapper.offset().top +\r\n _this.listsWrapper.outerHeight(true);\r\n\r\n if (stBottom >= listEnd) {\r\n // console.info('cheguei no final');\r\n _this.getNextPage();\r\n }\r\n });\r\n } else {\r\n _this.listsWrapper.addClass(\"no-more-products\");\r\n }\r\n },\r\n },\r\n variants: {\r\n $attributes: $(\"[data-product-attributes]\"),\r\n init: function () {\r\n var _this = this;\r\n\r\n $(document).on(\r\n \"click\",\r\n '[data-action=\"minus-quantity-size\"]',\r\n function (event) {\r\n var $wrapper = $(this).closest(\"[data-wrapper-size]\");\r\n var $inputSku = $wrapper.find(\"[data-product-size]\");\r\n var $inputQtd = $wrapper.find(\"[data-input-quantity]\");\r\n var stock = $inputSku.data(\"stock\");\r\n var available = $inputSku.data(\"available\");\r\n var valQtd = parseInt($inputQtd.val());\r\n\r\n if (available) {\r\n if (valQtd - 1 >= 0) {\r\n $inputQtd.val(valQtd - 1).trigger(\"change\");\r\n } else {\r\n $inputQtd.val(0).trigger(\"change\");\r\n }\r\n } else {\r\n $inputQtd.val(0).trigger(\"change\");\r\n }\r\n }\r\n );\r\n\r\n $(document).on(\r\n \"click\",\r\n '[data-action=\"plus-quantity-size\"]',\r\n function (event) {\r\n var $wrapper = $(this).closest(\"[data-wrapper-size]\");\r\n var $inputSku = $wrapper.find(\"[data-product-size]\");\r\n var $inputQtd = $wrapper.find(\"[data-input-quantity]\");\r\n var stock = $inputSku.data(\"stock\");\r\n var available = $inputSku.data(\"available\");\r\n var valQtd = parseInt($inputQtd.val());\r\n\r\n if (available) {\r\n if (valQtd + 1 <= stock) {\r\n $inputQtd.val(valQtd + 1).trigger(\"change\");\r\n } else {\r\n $inputQtd.val(valQtd).trigger(\"change\");\r\n }\r\n } else {\r\n $inputQtd.val(0).trigger(\"change\");\r\n }\r\n }\r\n );\r\n\r\n // $(document).on('change', '[data-input-quantity]', template_store.debounce(function (event) {\r\n // let sku = $(this).closest('.size-wrapper').find('[data-product-size]').val();\r\n // let quantity = $(this);\r\n // var $product = $(this).closest('[data-product-block]');\r\n // var $wrapper = $(this).closest('[data-wrapper-size]');\r\n // var $inputSku = $wrapper.find('[data-product-size]');\r\n // var valQtd = parseInt(quantity.val());\r\n\r\n // $inputSku.data('quantity', valQtd);\r\n\r\n // console.info('atualizando produto');\r\n // lojistas_template.products.addProduct($product);\r\n\r\n // console.log('alouuuu', sku, valQtd)\r\n\r\n // lojistas_template.products.submitNewQuantity(valQtd, sku);\r\n // }, 1000));\r\n\r\n $(document).on(\r\n \"click\",\r\n '[data-action=\"update-product\"]',\r\n function (event) {\r\n var comboItems = [];\r\n $(this)\r\n .closest(\"[data-product-block]\")\r\n .find(\"[data-input-quantity]\")\r\n .each(function (index, el) {\r\n let sku = $(el)\r\n .closest(\".size-wrapper\")\r\n .find(\"[data-product-size]\")\r\n .val();\r\n let quantity = $(el);\r\n var $product = $(el).closest(\"[data-product-block]\");\r\n var $wrapper = $(el).closest(\"[data-wrapper-size]\");\r\n var $inputSku = $wrapper.find(\"[data-product-size]\");\r\n var valQtd = parseInt(quantity.val());\r\n\r\n $inputSku.data(\"quantity\", valQtd);\r\n\r\n if (valQtd > 0) {\r\n // console.info('atualizando produto');\r\n lojistas_template.products.addProduct($product);\r\n\r\n // console.log('alouuuu', sku, valQtd)\r\n\r\n //lojistas_template.products.submitNewQuantity(valQtd, sku);\r\n\r\n var item = {\r\n sku: sku,\r\n quantity: parseInt(valQtd, 10),\r\n };\r\n\r\n comboItems.push(item);\r\n }\r\n });\r\n var result = lojistas_template.products\r\n .addItemsCombo(comboItems)\r\n .then(function (response) {\r\n return response;\r\n }, Promise.resolve([]));\r\n\r\n result.then(function (results) {\r\n template_store.headerCart.loadCart(results);\r\n });\r\n }\r\n );\r\n },\r\n },\r\n submitNewQuantity: function (quantity, sku) {\r\n $.ajax({\r\n url: \"/carrinho/adicionar\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: {\r\n quantity: quantity,\r\n sku: sku,\r\n },\r\n xhrFields: { withCredentials: true },\r\n })\r\n .done(function (resp) {\r\n // console.log(\"success\");\r\n // console.info(resp);\r\n //template_store.headerCart.loadCart(resp);\r\n\r\n var $boxCart = $(\"[data-cart-body]\");\r\n\r\n store.updateCartCount(resp.items_count);\r\n\r\n vnda.loadCartPopup(function (html) {\r\n $boxCart.empty();\r\n $boxCart.append(html);\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 .always(function () {\r\n // console.log(\"complete\");\r\n });\r\n },\r\n addProduct: function (_$product) {\r\n // console.log('addProduct', _$product)\r\n\r\n var productId = _$product.data(\"product-id\");\r\n var productReference = _$product.data(\"product-reference\");\r\n var productName = _$product\r\n .find(\"[data-product-name]\")\r\n .data(\"product-name\");\r\n var productPrice = _$product\r\n .find(\"[data-product-price]\")\r\n .data(\"product-price\");\r\n var productImage = _$product\r\n .find(\"[data-product-image]\")\r\n .data(\"product-image\");\r\n var variantsAdded = [];\r\n\r\n _$product\r\n .find('[data-product-size][data-available=\"true\"]')\r\n .each(function (index, el) {\r\n if ($(el).data(\"quantity\") > 0) {\r\n variantsAdded.push({\r\n sku: String($(el).val()),\r\n quantity: $(el).data(\"quantity\"),\r\n label: String($(el).data(\"variant-label\")),\r\n });\r\n }\r\n });\r\n\r\n // console.log('variantsAdded', variantsAdded)\r\n\r\n lojistaCart.updateProduct({\r\n reference: String(productReference),\r\n id: productId,\r\n variants: variantsAdded,\r\n name: productName,\r\n price: parseFloat(productPrice),\r\n image: productImage,\r\n });\r\n },\r\n updateProductAdded: function (_$product, _product) {\r\n var $attributes = _$product.find(\"[data-product-attributes]\");\r\n\r\n for (var i = 0; i < _product.variants.length; i++) {\r\n var $input = $attributes.find(\r\n '[data-product-size][value=\"' + _product.variants[i].sku + '\"]'\r\n );\r\n var $variant = $input.closest(\"[data-wrapper-size]\");\r\n\r\n $input.data(\"quantity\", _product.variants[i].quantity);\r\n $variant.addClass(\"size-added\");\r\n $variant\r\n .find(\"[data-input-quantity]\")\r\n .val(_product.variants[i].quantity);\r\n }\r\n },\r\n setProductsAdded: function () {\r\n var _this = this;\r\n var $wrapperProducts = $(\"[data-list-products-wrapper] .list-products\");\r\n var $products = $wrapperProducts.find(\"[data-product-block]\");\r\n\r\n $products.each(function (index, el) {\r\n var productId = $(el).data(\"product-id\");\r\n var product = lojistaCart.getProductById(productId);\r\n\r\n if (product.length > 0) {\r\n _this.updateProductAdded($(el), product[0]);\r\n }\r\n });\r\n },\r\n toggleProductsWrapper: function () {\r\n var _this = this;\r\n var $wrapperProducts = $(\"[data-box-cart-products]\");\r\n var heightContent = $wrapperProducts\r\n .find(\"[data-wrapper-cart-products]\")\r\n .outerHeight(true);\r\n\r\n if ($wrapperProducts.hasClass(\"active\")) {\r\n // $wrapperProducts.css('height', '0px');\r\n $wrapperProducts.removeClass(\"active\");\r\n } else {\r\n // $wrapperProducts.css('height', heightContent + 'px');\r\n $wrapperProducts.addClass(\"active\");\r\n }\r\n },\r\n focusProductBlock: function (_productId) {\r\n var $productBlock = $(\r\n '[data-product-block][data-product-id=\"' + _productId + '\"]'\r\n );\r\n var top = $productBlock.offset().top;\r\n\r\n this.toggleProductsWrapper();\r\n\r\n setTimeout(function () {\r\n $(\"html, body\").animate(\r\n {\r\n scrollTop: top - 250,\r\n },\r\n \"250\"\r\n );\r\n\r\n $productBlock.addClass(\"focus\");\r\n\r\n setTimeout(function () {\r\n $productBlock.removeClass(\"focus\");\r\n }, 1500);\r\n }, 350);\r\n },\r\n setImages: function () {\r\n var $productBlock = $(\"[data-product-block]\");\r\n\r\n $productBlock.each(function (i, el) {\r\n var $img = $(el).find(\"[data-product-image]\");\r\n\r\n if (typeof $img.data(\"image-seted\") == \"undefined\") {\r\n var src = $img.data(\"src\");\r\n $img.attr(\"src\", src);\r\n $img.data(\"image-seted\", true);\r\n }\r\n });\r\n },\r\n addItemsCombo: function (comboItems) {\r\n var data = {\r\n items: comboItems,\r\n };\r\n\r\n var form_data = JSON.stringify(data);\r\n\r\n return $.ajax({\r\n url: \"/carrinho/adicionar/kit\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n cache: false,\r\n data: form_data,\r\n });\r\n },\r\n init: function () {\r\n var _this = this;\r\n\r\n this.variants.init();\r\n this.infiniteProducts.init();\r\n\r\n lojistaCart.init();\r\n\r\n $(document).on(\r\n \"click\",\r\n '[data-action=\"update-product\"]',\r\n function (event) {\r\n event.preventDefault();\r\n\r\n var $product = $(this).closest(\"[data-product-block]\");\r\n\r\n // console.info('atualizando produto');\r\n _this.addProduct($product);\r\n }\r\n );\r\n\r\n $(document).on(\"click\", '[data-action=\"open-cart\"]', function (event) {\r\n _this.toggleProductsWrapper();\r\n });\r\n\r\n $(document).on(\r\n \"click\",\r\n '[data-action=\"concluir-pedido\"]',\r\n function (event) {\r\n lojistas_template.popupFinish.togglePopup(\"finish-order\");\r\n }\r\n );\r\n\r\n $(document).on(\r\n \"click\",\r\n \"[data-wrapper-cart-products] [data-product-item]\",\r\n function () {\r\n var productId = $(this).data(\"product-id\");\r\n\r\n _this.focusProductBlock(productId);\r\n }\r\n );\r\n\r\n this.setProductsAdded();\r\n this.setImages();\r\n },\r\n },\r\n init: function () {\r\n var _this = this;\r\n\r\n _this.login.init();\r\n _this.products.init();\r\n },\r\n};\r\n\r\nlojistas_template.init();\r\n"],"names":[],"sourceRoot":""}