{"version":3,"file":"infiniteScroll.js","mappings":"YAAA,QAC+B,IAAtBA,OAAOC,aACdD,OAAOC,YAAYC,MAAMC,QAAU,EACnC,CACAC,QAAQC,KAAK,4DAEf,CAEA,IAAIC,iBAAmB,CACrBC,WAAYP,OAAOC,YACnBO,aAAcC,EAAE,gCAChBC,eAAgB,WAEd,OAAOC,KAAKJ,WAAWK,WACzB,EACAC,YAAa,WACX,IAAIC,MAAQH,KACRC,YAAcE,MAAMJ,iBACpBK,QAAUD,MAAMP,WAAWQ,QAG1BD,MAAMN,aAAaQ,SAAS,eAE3BJ,aAAeE,MAAMP,WAAWU,YAClCb,QAAQC,KAAK,uBACbS,MAAMN,aAAaU,SAAS,oBAC5BJ,MAAMN,aACHW,KAAK,iCACLC,KAAK,0BAERN,MAAMN,aAAaU,SAAS,aAE5B,WACE,IAAIG,eAAiBC,MAAMP,SACvBQ,WAAaF,SAASG,OAGtBC,UAFS,IAAIC,WACAC,gBAAgBJ,KAAM,aACpBK,iBACjB,mDAGFd,MAAMe,eAAejB,YAAc,GAKnCE,MAAMgB,mBAAmBL,UACzBzB,OAAO+B,iBAAiBC,SACxBlB,MAAMN,aAAayB,YAAY,aAC/BC,MAAMC,cACP,EAlBD,IAqBN,EACAL,mBAAoB,SAAUM,eAE5B,IAEIC,cAAgB,GAEhBC,IADAD,cAAgB5B,EAAE4B,eACb5B,EAAET,QAAQuC,aAEnBnC,QAAQC,KAAKiC,IAEbD,cAAcjB,KAAKgB,eARPzB,KAUNH,aAAaW,KAAK,kBAAkBqB,OAAOJ,eAVrCzB,KAYN8B,sBAENC,YAAW,WACTjC,EAAET,QAAQuC,UAAUD,GACtB,GAAG,EACL,EACAT,eAAgB,SAAUc,SACVhC,KAAKD,iBAAnB,IACIK,QAAUJ,KAAKJ,WAAWQ,QAG1B4B,SAAWhC,KAAKJ,WAAWU,aAC7Bb,QAAQC,KAAK,WAAYU,SAGzBJ,KAAKJ,WAAWK,YAAc+B,QAG1BA,QAAUhC,KAAKJ,WAAWU,aAE5BF,QAAUJ,KAAKJ,WAAWL,MAAMyC,SAASC,IACzCjC,KAAKJ,WAAWQ,QAAUA,SAGhC,EACA0B,oBAAqB,WACnB,IAIII,IAHAC,eAAiB,EACjBC,aAFQpC,KAEaH,aAAaW,KAAK,MACvC6B,eAAiBD,aAAa5C,OAoBlC,GAdIM,EAAE,QAAQwC,QAAU,MAGtBH,eAAiB,EAEbrC,EAAE,QAAQwC,QAAU,MACtBH,eAAiB,IAMrBD,IAAMG,eAAiBF,eArBXnC,KAuBFJ,WAAWK,YAvBTD,KAuB6BJ,WAAWU,YAC9C4B,IAAM,EACR,IAAK,IAAIK,EAAI,EAAGA,EAAIL,IAAKK,IACvB9C,QAAQC,KAAK0C,aAAaC,eAAiB,EAAIE,IAC/CzC,EAAEsC,aAAaC,eAAiB,EAAIE,IAAIhC,SAAS,oBAKvDd,QAAQC,KAAK,iBAAkByC,gBAC/B1C,QAAQC,KAAK,iBAAkB2C,eACjC,EACAG,KAAM,WACJ,IAAIrC,MAAQH,KAERG,MAAMP,WAAWU,WAAa,GAChCH,MAAM2B,sBAENhC,EAAET,QAAQoD,GAAG,UAAU,SAAUC,OACnB5C,EAAEE,MAAM4B,YACsB,IAAnB9B,EAAEE,MAAM2C,UAI7BxC,MAAMN,aAAa+C,SAASC,KAC3B1C,MAAMN,aAAaiD,aAAY,GAAQ,EAAIzD,OAAO0D,cAOnD5C,MAAMD,aAEV,MAEAC,MAAMN,aAAaU,SAAS,oBAC5BJ,MAAMN,aACHW,KAAK,iCACLC,KAAK,wBAEZ,GAIEd,iBAAiBC,YACnBD,iBAAiB6C,M","sources":["webpack://build/../bolovo2/assets/javascripts/infiniteScroll.js"],"sourcesContent":["if (\r\n typeof window._pagination == \"undefined\" ||\r\n window._pagination.pages.length <= 0\r\n) {\r\n console.info(\"a variável _pagination não foi setada ou não há paginação\");\r\n var _pagination = false;\r\n}\r\n\r\nvar infiniteProducts = {\r\n pagination: window._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 _this.listsWrapper\r\n .find('[data-action=\"load-products\"]')\r\n .html(\"Não há mais produtos\");\r\n } else {\r\n _this.listsWrapper.addClass(\"searching\");\r\n\r\n (async () => {\r\n var response = await fetch(nextUrl);\r\n var data = await response.text();\r\n var parser = new DOMParser();\r\n var doc = parser.parseFromString(data, \"text/html\");\r\n var products = doc.querySelectorAll(\r\n \"[data-list-products-wrapper] .list-products > *\"\r\n );\r\n\r\n _this.setCurrentPage(currentPage + 1);\r\n\r\n // console.log(products)\r\n\r\n // Renderiza os produtos da página\r\n _this.renderMoreProducts(products);\r\n window.lazyLoadInstance.update();\r\n _this.listsWrapper.removeClass(\"searching\");\r\n store.getPriceProd();\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 _this.listsWrapper.find(\".list-products\").append(_htmlProducts);\r\n\r\n _this.runProductsSobrando();\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 = 1;\r\n var listProducts = _this.listsWrapper.find(\">*\");\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 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(\"produto-sobrando\");\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).on(\"scroll\", function (event) {\r\n var stTop = $(this).scrollTop();\r\n var stBottom = stTop + $(this).height() * 1.2;\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) - 3 * window.innerHeight);\r\n\r\n // console.info('stBottom=', stBottom, 'listEnd=', listEnd);\r\n\r\n if (stBottom >= listEnd) {\r\n //console.info('teste');\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 _this.listsWrapper\r\n .find('[data-action=\"load-products\"]')\r\n .html(\"Não há mais produtos\");\r\n }\r\n },\r\n};\r\n\r\n// Verifica se há paginação para inicializar o infinite scroll\r\nif (infiniteProducts.pagination) {\r\n infiniteProducts.init();\r\n}\r\n"],"names":["window","_pagination","pages","length","console","info","infiniteProducts","pagination","listsWrapper","$","getCurrentPage","this","currentPage","getNextPage","_this","nextUrl","hasClass","totalPages","addClass","find","html","response","fetch","data","text","products","DOMParser","parseFromString","querySelectorAll","setCurrentPage","renderMoreProducts","lazyLoadInstance","update","removeClass","store","getPriceProd","_htmlProducts","$listProducts","st","scrollTop","append","runProductsSobrando","setTimeout","_number","url","mod","productsInLine","listProducts","lengthProducts","width","i","init","on","event","height","offset","top","outerHeight","innerHeight"],"sourceRoot":""}