{"version":3,"file":"blogSearch.js","mappings":";AAAA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,4BAA4B,YAAY;AACxC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,WAAW,OAAO,oBAAoB;AAC/D,cAAc,SAAS,WAAW,OAAO,oBAAoB;AAC7D,iBAAiB,eAAe,WAAW,OAAO,oBAAoB;AACtE;AACA,SAAS;AACT,gBAAgB,QAAQ;AACxB;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB,EAAE,QAAQ,IAAI,IAAI;AAC/D;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB,UAAU,SAAS,GAAG,UAAU;AAC5E;AACA;AACA;AACA,8BAA8B,WAAW,2BAA2B,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,UAAU,SAAS,GAAG,UAAU;AAC1E;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,uBAAuB,uBAAuB,UAAU,SAAS,GAAG,UAAU;AAC9E,gBAAgB;AAChB;AACA;AACA;AACA,qBAAqB,8BAA8B;AACnD,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,GAAG;AACH;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,MAAM;AACN,mIAAmI,kBAAkB;AACrJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;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,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC","sources":["webpack://build/../laviesports/assets/javascripts/blogSearch.js"],"sourcesContent":["const BlogSearch = {\r\n // Token liberado somente para o endpoint /api/collections/get/posts\r\n Token: '1f67b2941385137ce577fb4014ab4d',\r\n baseURLApi: `${window.location.origin}/admin/conteudo`,\r\n baseList: document.querySelector('[data-posts-list]'),\r\n initialPosts: '',\r\n searchParam: '',\r\n\r\n // ====================================================== //\r\n // ================ Faz o fetch dos posts =============== //\r\n // ====================================================== //\r\n api(search) {\r\n const _this = this;\r\n\r\n fetch(`${_this.baseURLApi}/api/collections/get/posts`, {\r\n method: 'post',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cockpit-Token': `${_this.Token}`,\r\n },\r\n body: JSON.stringify({\r\n filter: {\r\n publish: true,\r\n // Pode usar $and\r\n $or: [\r\n // $options faz com que a filtragem não seja case sensitive\r\n { content: { $regex: `${search}`, $options: 'i' } },\r\n { title: { $regex: `${search}`, $options: 'i' } },\r\n // { description: { $regex: `${search}`, $options: 'i' } },\r\n ],\r\n },\r\n sort: { _o: -1 },\r\n populate: 1,\r\n }),\r\n })\r\n .then((res) => res.json())\r\n .then((res) => {\r\n // Lista os posts\r\n _this.listPosts(res.entries);\r\n\r\n // Seta o spinner de loading como false e remove o spinner\r\n _this.setIsLoading(true);\r\n\r\n // Scroll para o topo da página\r\n _this.scrollToTop();\r\n console.log(res);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n // Seta o spinner de loading como false e remove o spinner\r\n _this.setIsLoading(false);\r\n });\r\n },\r\n\r\n // ================================================================== //\r\n // Responsável por guardar os posts iniciais ao carregar a página //\r\n // ================================================================== //\r\n maintainActualPosts() {\r\n const _this = this;\r\n const Posts = document.querySelector('[data-posts-list]').innerHTML;\r\n\r\n // Guarda os posts iniciais\r\n _this.initialPosts = Posts;\r\n },\r\n\r\n // ====================================================== //\r\n // Função para atrasar a busca, executa ao término do timer //\r\n // ====================================================== //\r\n debounce(cb, delay) {\r\n let timeout;\r\n return (...args) => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n cb(...args);\r\n }, delay);\r\n };\r\n },\r\n\r\n // ====================================================== //\r\n // Faz com que o scroll volte para o topo da página após a busca //\r\n // ====================================================== //\r\n scrollToTop() {\r\n // A ancora do scroll é um span com o atributo data-anchor\r\n document.querySelector('[data-anchor]').scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n });\r\n },\r\n\r\n // ====================================================== //\r\n // == Ajusta a data dos posts para o formato brasileiro = //\r\n // ====================================================== //\r\n dateAdjust(date) {\r\n const _this = this;\r\n const dateAdjust = date.split('-').reverse().join('.');\r\n return dateAdjust;\r\n },\r\n\r\n // ====================================================== //\r\n // ========= Seta o spinner de loading no input ========= //\r\n // ====================================================== //\r\n setIsLoading(boolean) {\r\n let spinner = document.querySelector('[data-search-spinner]');\r\n boolean == true ? spinner.classList.add('-visible') : spinner.classList.remove('-visible');\r\n },\r\n\r\n // ====================================================== //\r\n // ============= Monta o template dos posts ============= //\r\n // ====================================================== //\r\n formatarData(dataString) {\r\n const data = new Date(dataString);\r\n \r\n const meses = [\r\n \"JANEIRO\", \"FEVEREIRO\", \"MARÇO\", \"ABRIL\", \"MAIO\", \"JUNHO\",\r\n \"JULHO\", \"AGOSTO\", \"SETEMBRO\", \"OUTUBRO\", \"NOVEMBRO\", \"DEZEMBRO\"\r\n ];\r\n \r\n const nomeMes = meses[data.getMonth()];\r\n const ano = data.getFullYear();\r\n \r\n const dataFormatada = `${data.getDate()} ${nomeMes}, ${ano}`;\r\n \r\n return dataFormatada;\r\n },\r\n \r\n templatePost(post) {\r\n const _this = this;\r\n\r\n var permalink = post.title.toLowerCase();\r\n permalink = permalink.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n permalink = permalink.replace(/[^a-zA-Z0-9]/g, ' ');\r\n permalink = permalink.replace(/\\s\\s+/g, ' ');\r\n permalink = permalink.trim();\r\n permalink = permalink.replaceAll(' ', '-'); \r\n\r\n const image = post.thumb.path\r\n ? `