(function () {
'use strict';
var CONTAINER = '.sabia-galeria';
var LIMITE_MS = 12000;
var inicio = Date.now();
var feito = false;
function normalizar(t) {
return (t || '').toString().normalize('NFD').replace(/[\u0300-\u036f]/g, '')
.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim();
}
function slugAlvo() {
var params = new URLSearchParams(location.search);
var chaves = ['product_cat', 'filter_cat', '_category', 'categoria', 'cat'];
for (var i = 0; i < chaves.length; i++) {
var v = params.get(chaves[i]);
if (v && /[a-z]/i.test(v)) return v;
}
var partes = location.pathname.split('/').filter(Boolean);
return partes.length ? partes[partes.length - 1] : '';
}
function area() {
return document.querySelector(CONTAINER);
}
function candidatos() {
var base = area();
if (!base) return [];
var lista = base.querySelectorAll('a, button, li, [role="tab"], [data-term], span');
var saida = [];
for (var i = 0; i < lista.length; i++) {
var el = lista[i];
var txt = normalizar(el.textContent);
if (txt.length < 5 || txt.length > 120) continue;
saida.push(el);
}
return saida;
}
function disparar(el) {
try {
['mousedown', 'mouseup', 'click'].forEach(function (tipo) {
el.dispatchEvent(new MouseEvent(tipo, {
bubbles: true, cancelable: true, view: window
}));
});
if (typeof el.click === 'function') el.click();
} catch (e) {
console.warn('[SABIA] falha ao clicar:', e);
}
}
function ativou(el) {
var atual = el;
for (var i = 0; i < 4 && atual; i++) {
if (atual.getAttribute && atual.getAttribute('aria-selected') === 'true') return true;
if (atual.className && /active|selected|current|is-on/i.test(atual.className)) return true;
atual = atual.parentElement;
}
return false;
}
function tentar() {
if (feito) return true;
var busca = normalizar(slugAlvo().replace(/-/g, ' '));
if (!busca) {
console.log('[SABIA] pagina sem categoria na URL, nada a fazer');
feito = true;
return true;
}
var lista = candidatos();
if (!lista.length) {
if (Date.now() - inicio > LIMITE_MS) {
console.warn('[SABIA] container nao encontrado:', CONTAINER);
feito = true;
return true;
}
return false;
}
var ordenados = [];
lista.forEach(function (el) {
var texto = normalizar(el.textContent);
var n = 0;
if (texto === busca) n = 100;
else if (texto.indexOf(busca) === 0) n = 90;
else if (texto.indexOf(busca) !== -1) n = 80;
else if (busca.indexOf(texto) !== -1) n = 70;
if (n >= 70) ordenados.push({ el: el, nota: n, ordem: texto.length });
});
if (!ordenados.length) {
if (Date.now() - inicio > LIMITE_MS) {
console.warn('[SABIA] nenhuma aba corresponde a:', busca);
console.log('[SABIA] textos encontrados:', lista.map(function (el) {
return el.textContent.trim().slice(0, 60);
}));
feito = true;
return true;
}
return false;
}
ordenados.sort(function (a, b) {
if (b.nota !== a.nota) return b.nota - a.nota;
return a.ordem - b.ordem;
});
var alvo = ordenados[0].el;
var alvoClicavel = alvo;
if (alvo.tagName === 'SPAN' || alvo.tagName === 'LI') {
var interno = alvo.querySelector('a, button, [role="tab"]');
if (interno) alvoClicavel = interno;
else if (alvo.parentElement) alvoClicavel = alvo.parentElement;
}
disparar(alvoClicavel);
setTimeout(function () {
if (ativou(alvoClicavel) || ativou(alvo)) {
console.log('[SABIA] aba ativada:', alvo.textContent.trim().slice(0, 60));
feito = true;
} else if (ordenados.length > 1) {
console.log('[SABIA] tentando proxima opcao');
disparar(ordenados[1].el);
feito = true;
} else {
console.warn('[SABIA] clique enviado, mas o widget nao reagiu');
feito = true;
}
}, 900);
return true;
}
function iniciar() {
if (tentar()) return;
var timer = setInterval(function () {
if (tentar()) clearInterval(timer);
}, 300);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', iniciar);
} else {
iniciar();
}
})();