Acessibilidade CNPJ 68.492.046/0001-09
20260Vote para
Deputado Estadual
Deputado Estadual20260Digite os cinco números e confirme
É assim que vamos ajudar quem precisa!

Não são apenas projetos, são 6 pilares para cuidar de quem precisa!

Não são promessas soltas. São seis programas estaduais desenhados com objetivo, competência e com a capacidade de quem já ajudou milhares de pessoas nos últimos 20 anos. Eu sei o que fazer e eu posso te ajudar.

Quero meu material na sua casa

Adesivo, santinho e praguinha entregues em mãos pela minha equipe.

Toque aqui
para receber
William Sanches com apoiadores
Mais de 2 mil palestras. Mais de 1.500 pessoas atendidas. Uma vida inteira ouvindo gente.
Minha trajetória

Role a página e veja tudo que eu trilhei para me tornar alguém que merece te representar.

Juntos seremos a sua voz!

Dois cargos diferentes.
Um propósito em comum.

Material de campanha: Ana Carolina Oliveira 2026 para Deputada Federal e William Sanches 20260 para Deputado Estadual

A parceria entre William Sanches e Ana Carolina Oliveira, a mãe de Isabela Nardoni, não começou apenas por uma escolha política. Começou pelo encontro de duas histórias muito diferentes, mas que, em determinado momento, perceberam que caminhavam na mesma direção.

2026Ana Carolina OliveiraDeputada Federal
20260William SanchesDeputado Estadual
Canais oficiais

Siga, ouça e compartilhe

Trajetória

Role a página e veja tudo que eu trilhei para me tornar alguém que merece te representar.

Em números

O trabalho que veio antes da política

+30Livros publicadosNo Brasil e no exterior
+2 milPalestras beneficentesEm quase duas décadas
+1.500Pessoas atendidasComo terapeuta
~50 MiVisualizaçõesConteúdo gratuito no YouTube
Projetos de Deputado Estadual

O que muda na sua vida

Seis programas estaduais. Abra cada um para ver como funcionaria na prática e diga qual deles você quer ver acontecer.

Juntos seremos a sua voz!

Dois cargos diferentes.
Um propósito em comum.

A parceria entre William Sanches e Ana Carolina Oliveira, mãe de Isabela Nardoni, não começou apenas por uma escolha política. Começou pelo encontro de duas histórias muito diferentes que, em determinado momento, perceberam que caminhavam na mesma direção.

Ana Carolina transformou uma das experiências mais dolorosas de sua vida em uma trajetória de luta pela proteção das crianças, das mulheres e das famílias. William construiu a dele na educação, na terapia, nos livros e em milhares de palestras.

Eles não têm histórias iguais. E talvez seja justamente por isso que se complementam.

2026Ana Carolina OliveiraDeputada Federal
20260William SanchesDeputado Estadual

São cargos diferentes, com responsabilidades diferentes. Mas existe um compromisso que os aproxima: fazer com que a experiência acumulada fora da política também chegue aos espaços onde leis, recursos e políticas públicas são decididos.

Proteger uma criança, acolher uma mulher, fortalecer uma família e cuidar da saúde emocional não podem ser apenas discursos. Precisam se transformar em trabalho.

Materiais digitais

Baixe, poste, compartilhe

Toque na peça e mande direto pro grupo, pro story ou pro Direct. Cada compartilhamento vale mais que mil outdoors.

Novo

Coloque o 20260 na sua foto de perfil

Envie sua foto, escolha a moldura e baixe pronta. Leva 10 segundos e não precisa de cadastro.

Criar minha foto
Agenda

Onde o William vai estar

O que muda uma vida não é calendário, são ações. Confira onde o William vai estar e apareça.

Acompanhe de perto

Seja o primeiro a saber de tudo

Faça seu cadastro para receber todas as informações e movimentações para acompanhar meus projetos. Tudo que acontecer você vai ser o primeiro a saber sempre!

Seus dados são usados apenas para comunicação da campanha e não são compartilhados com terceiros.

' + '
'; } el.innerHTML = html; if (completo) { el.addEventListener('click', function(e){ var q = e.target.closest('[data-quero]'); if (q) { e.stopPropagation(); querProjeto(q.getAttribute('data-quero')); return; } var abriu = !el.classList.contains('open'); el.classList.toggle('open'); if (abriu) marcarProjetoAberto(p.t); }); } return el; } function querProjeto(nome){ var sel = document.getElementById('ws-selProjeto'); for (var i = 0; i < sel.options.length; i++) if (sel.options[i].value === nome) sel.selectedIndex = i; irPara('participe'); } function cardCanal(c){ var a = document.createElement('a'); a.className = 'canal rv'; a.href = c.u; if (c.u === '#grupo') a.setAttribute('data-grupo', ''); else if (c.u.charAt(0) !== '#') { a.target = '_blank'; a.rel = 'noopener'; } a.innerHTML = '' + logo(c.ico) + '' + '' + c.n + '' + c.s + '' + '' + svg(ICON.seta, 2.6) + ''; return a; } /* ---- trajetória: artigo com galerias, fiel ao documento ---- */ function renderLinha(wrapEl){ var box = wrapEl.querySelector('[data-tj]'); if (!box || box.childElementCount) return; TRAJETORIA.forEach(function(item){ if (item.t === 'h') { var hh = document.createElement('h3'); hh.className = 'tj-cap rv'; hh.textContent = item.v; box.appendChild(hh); return; } if (item.t === 'p') { var pp = document.createElement('p'); pp.className = 'tj-p rv'; pp.textContent = item.v; box.appendChild(pp); return; } if (item.t === 'f') { var ff = document.createElement('p'); ff.className = 'tj-fecho rv'; ff.textContent = item.v; box.appendChild(ff); return; } box.appendChild(montarCarrossel(item.f)); }); observar(); } function montarCarrossel(fotos){ var c = document.createElement('div'); c.className = 'tj-carrossel rv' + (fotos.length === 1 ? ' unico' : ''); var trilho = document.createElement('div'); trilho.className = 'tj-trilho'; fotos.forEach(function(foto){ var s = document.createElement('div'); s.className = 'tj-slide'; s.innerHTML = ''; s.querySelector('button').addEventListener('click', function(){ ampliar(foto); }); trilho.appendChild(s); }); c.appendChild(trilho); var legenda = document.createElement('figcaption'); legenda.className = 'tj-leg'; legenda.textContent = fotos[0].leg || ''; if (!fotos[0].leg) legenda.hidden = true; if (fotos.length > 1) { var ctr = document.createElement('div'); ctr.className = 'tj-ctr'; ctr.innerHTML = '' + '
' + '' + '1/' + fotos.length + ''; c.appendChild(ctr); c.appendChild(legenda); var pontos = ctr.querySelector('.tj-pontos'); fotos.forEach(function(_, i){ var d = document.createElement('button'); d.type = 'button'; d.className = 'tj-ponto' + (i ? '' : ' on'); d.setAttribute('aria-label', 'Imagem ' + (i + 1)); d.addEventListener('click', function(){ irSlide(i); }); pontos.appendChild(d); }); var conta = ctr.querySelector('.tj-conta'); var atual = 0; function irSlide(n){ atual = Math.max(0, Math.min(fotos.length - 1, n)); trilho.scrollTo({ left: atual * trilho.clientWidth, behavior: 'smooth' }); } ctr.querySelectorAll('[data-ir]').forEach(function(b){ b.addEventListener('click', function(){ irSlide(atual + parseInt(b.dataset.ir, 10)); }); }); trilho.addEventListener('scroll', function(){ var i = Math.round(trilho.scrollLeft / trilho.clientWidth); if (i === atual) return; atual = i; conta.textContent = (i + 1) + '/' + fotos.length; [].slice.call(pontos.children).forEach(function(d, k){ d.classList.toggle('on', k === i); }); legenda.textContent = fotos[i].leg || ''; legenda.hidden = !fotos[i].leg; }); } else { c.appendChild(legenda); } return c; } function ampliar(foto){ abrirModal('
' + (foto.leg || '') + '
' + (foto.leg ? '

' + foto.leg + '

' : '')); } /* ---- feed ---- */ function renderFeed(filtro){ var box = document.getElementById('ws-feedList'), fbox = document.getElementById('ws-feedFiltros'); if (!fbox.childElementCount) { var fs = ['Todos'].concat(PECAS.map(function(p){ return p.formato; }).filter(function(v,i,a){ return a.indexOf(v) === i; })); fs.forEach(function(f){ var b = document.createElement('button'); b.className = 'chip' + (f === 'Todos' ? ' on' : ''); b.type = 'button'; b.textContent = f; b.addEventListener('click', function(){ fbox.querySelectorAll('.chip').forEach(function(c){ c.classList.remove('on'); }); b.classList.add('on'); renderFeed(f); }); fbox.appendChild(b); }); } var lista = filtro === 'Todos' ? PECAS : PECAS.filter(function(p){ return p.formato === filtro; }); box.innerHTML = ''; lista.forEach(function(p){ var el = document.createElement('button'); el.className = 'peca rv'; el.type = 'button'; el.setAttribute('aria-label', 'Compartilhar: ' + p.t); el.innerHTML = '' + '' + p.formato + '' + '' + '' + '' + p.t + '' + 'Compartilhar ' + svg(ICON.share, 2.4) + ''; el.addEventListener('click', function(){ abrirPeca(p); }); box.appendChild(el); }); observar(); } /* ---- agenda ---- */ function renderAgenda(filtro){ var box = document.getElementById('ws-agList'), fbox = document.getElementById('ws-agFiltros'); if (!box) return; if (AGENDA_ESTADO === 'carregando') { fbox.innerHTML = ''; box.innerHTML = '
'; return; } if (AGENDA_ESTADO === 'erro' || !AGENDA.length) { fbox.innerHTML = ''; box.innerHTML = '
Não foi possível carregar a agenda agora.' + 'Ver na agenda oficial
'; return; } if (!fbox.childElementCount) { var gs = ['Todos'].concat(AGENDA.map(function(a){ return a.grupo; }).filter(function(v,i,a){ return a.indexOf(v) === i; })); gs.forEach(function(g){ var b = document.createElement('button'); b.className = 'chip' + (g === 'Todos' ? ' on' : ''); b.type = 'button'; b.textContent = g; b.addEventListener('click', function(){ fbox.querySelectorAll('.chip').forEach(function(c){ c.classList.remove('on'); }); b.classList.add('on'); renderAgenda(g); }); fbox.appendChild(b); }); } var lista = filtro === 'Todos' ? AGENDA : AGENDA.filter(function(a){ return a.grupo === filtro; }); box.innerHTML = ''; if (!lista.length) { box.innerHTML = '
Nenhum compromisso neste período.
'; return; } var grupoAtual = ''; lista.forEach(function(a){ if (a.grupo !== grupoAtual) { grupoAtual = a.grupo; var hh = document.createElement('h3'); hh.className = 'ag-mes'; hh.textContent = a.grupo; box.appendChild(hh); } var el = document.createElement('a'); el.className = 'ag-i'; el.href = a.u; el.target = '_blank'; el.rel = 'noopener'; el.innerHTML = '' + a.dia + '' + a.mes + '' + '' + (a.dupla ? 'Com Ana Carolina' : '') + '' + a.t + '' + (a.local ? a.local + (a.hora ? ' · ' : '') : '') + (a.hora || '') + '' + 'Saiba mais'; box.appendChild(el); }); observar(); } /* ========================================================= MODAL ========================================================= */ var PECA_ATUAL = null; function toast(m){ var t = document.getElementById('ws-toast'); t.textContent = m; t.classList.add('show'); clearTimeout(t._h); t._h = setTimeout(function(){ t.classList.remove('show'); }, 2400); } function abrirModal(html){ document.getElementById('ws-sheet').innerHTML = '' + html; document.getElementById('ws-modal').classList.add('open'); document.body.style.overflow = 'hidden'; } function fecharModal(){ document.getElementById('ws-modal').classList.remove('open'); document.body.style.overflow = ''; PECA_ATUAL = null; } function linkPagina(){ return location.origin + location.pathname + '#ws/materiais'; } function abrirPeca(p){ PECA_ATUAL = p; abrirModal('
' + '

' + p.t + '

' + '

' + p.legenda + '

' + '
' + '' + 'Mandar no WhatsApp' + 'Baixar imagem' + '' + '
'); document.getElementById('ws-bDl').href = p.arquivo; document.getElementById('ws-bWa').href = 'https://wa.me/?text=' + encodeURIComponent(p.legenda + ' ' + linkPagina()); document.getElementById('ws-bShare').addEventListener('click', function(){ compartilhar(p); }); document.getElementById('ws-bCopy').addEventListener('click', function(){ var t = p.legenda + ' ' + linkPagina(); if (navigator.clipboard) navigator.clipboard.writeText(t).then(function(){ toast('Legenda copiada'); }); else toast('Copie manualmente'); }); } function compartilhar(p){ var texto = p.legenda + ' ' + linkPagina(); if (navigator.canShare) { fetch(p.arquivo).then(function(r){ if (!r.ok) throw 0; return r.blob(); }) .then(function(b){ var f = new File([b], p.arquivo.split('/').pop(), { type: b.type }); if (!navigator.canShare({ files: [f] })) throw 0; return navigator.share({ files: [f], text: texto }); }) .catch(function(){ compartilharTexto(p, texto); }); return; } compartilharTexto(p, texto); } function compartilharTexto(p, texto){ if (navigator.share) { navigator.share({ title: p.t, text: texto }) .catch(function(){ window.open('https://wa.me/?text=' + encodeURIComponent(texto), '_blank'); }); } else window.open('https://wa.me/?text=' + encodeURIComponent(texto), '_blank'); } /* ========================================================= CAPTURA — grava no Worker + D1 ========================================================= */ var LEADS_API = 'https://apiws.eusamuelcosta.com.br'; var PROJETOS_VISTOS = []; var SESSAO = Math.random().toString(36).slice(2, 12); function utm(){ var q = new URLSearchParams(location.search); return { utm_source:q.get('utm_source'), utm_medium:q.get('utm_medium'), utm_campaign:q.get('utm_campaign') }; } function registrarEvento(tipo, valor){ if (LEADS_API.indexOf('SEU-WORKER') > -1) return; try { var corpo = JSON.stringify({ tipo:tipo, valor:valor, sessao:SESSAO }); if (navigator.sendBeacon) navigator.sendBeacon(LEADS_API + '/api/evento', new Blob([corpo], {type:'application/json'})); else fetch(LEADS_API + '/api/evento', { method:'POST', headers:{'Content-Type':'application/json'}, body:corpo, keepalive:true }); } catch(e){} } function marcarProjetoAberto(nome){ if (PROJETOS_VISTOS.indexOf(nome) > -1) return; PROJETOS_VISTOS.push(nome); registrarEvento('projeto_aberto', nome); } function configurarFormulario(){ var f = document.getElementById('ws-joinForm'); var btn = f.querySelector('button[type=submit]'); f.addEventListener('submit', function(e){ e.preventDefault(); if (LEADS_API.indexOf('SEU-WORKER') > -1) { toast('Endpoint ainda não configurado no arquivo.'); return; } var d = new FormData(f); var u = utm(); var corpo = { nome:d.get('nome'), whatsapp:d.get('whatsapp'), email:d.get('email'), cep:d.get('cep'), projeto:d.get('projeto'), ajuda:d.get('ajuda'), site:d.get('site'), origem:'site-campanha', projetosVistos:PROJETOS_VISTOS, utm_source:u.utm_source, utm_medium:u.utm_medium, utm_campaign:u.utm_campaign, referrer: document.referrer || null }; var rotulo = btn.textContent; btn.disabled = true; btn.textContent = 'Enviando...'; fetch(LEADS_API + '/api/lead', { method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(corpo) }) .then(function(r){ return r.json().then(function(j){ return { ok:r.ok, j:j }; }); }) .then(function(res){ if (!res.ok) { btn.disabled = false; btn.textContent = rotulo; toast(res.j && res.j.erro === 'whatsapp invalido' ? 'Confira o número do WhatsApp' : res.j && res.j.erro === 'email invalido' ? 'Confira o e-mail' : 'Não deu para enviar. Tente de novo.'); return; } liberarGrupo(); }) .catch(function(){ btn.disabled = false; btn.textContent = rotulo; toast('Sem conexão. Tente de novo em instantes.'); }); }); } /* --------------------------------------------------------- ENTRADA NO GRUPO — captura antes de liberar o link --------------------------------------------------------- */ var GRUPO_URL = 'https://sndflw.com/i/h54wokhodWyF8jLJA8Hm'; function abrirGrupo(){ abrirModal( '
' + 'Grupo oficial no WhatsApp' + '

Falta só um passo

' + '

Deixe seu contato e eu te levo direto para o grupo. É lá que as propostas, a agenda e os materiais chegam primeiro.

' + '
' + '' + '' + '' + '' + '' + '

Seus dados são usados apenas para comunicação da campanha.

' + '
' ); var f = document.getElementById('ws-grupoForm'); var btn = f.querySelector('button[type=submit]'); f.addEventListener('submit', function(e){ e.preventDefault(); var d = new FormData(f); var u = utm(); btn.disabled = true; btn.textContent = 'Só um instante...'; fetch(LEADS_API + '/api/lead', { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ nome:d.get('nome'), whatsapp:d.get('whatsapp'), email:d.get('email'), site:d.get('site'), origem:'grupo-whatsapp', ajuda:'Entrar no grupo', projetosVistos:PROJETOS_VISTOS, utm_source:u.utm_source, utm_medium:u.utm_medium, utm_campaign:u.utm_campaign, referrer: document.referrer || null }) }) .then(function(r){ return r.json().then(function(j){ return { ok:r.ok, j:j }; }); }) .then(function(res){ if (!res.ok) { btn.disabled = false; btn.textContent = 'Entrar no grupo agora'; toast(res.j && res.j.campo === 'whatsapp' ? 'Confira o número do WhatsApp' : res.j && res.j.campo === 'email' ? 'Confira o e-mail' : 'Confira os dados e tente de novo.'); return; } liberarGrupo(); }) .catch(function(){ // sem conexao com o Worker: nao segura a pessoa fora do grupo liberarGrupo(); }); }); } function liberarGrupo(){ abrirModal( '
' + 'Tudo certo' + '

Bem-vindo!

' + '

Estamos te levando para o grupo. Se não abrir sozinho, toque no botão.

' + 'Abrir o grupo no WhatsApp' + '
' ); registrarEvento('entrou_no_grupo', 'sendflow'); setTimeout(function(){ location.href = GRUPO_URL; }, 900); } /* --------------------------------------------------------- AGENDA AO VIVO — espelha williamsanches.com/agenda O array local serve de reserva se a busca falhar. --------------------------------------------------------- */ var AGENDA_BUSCADA = false; function carregarAgenda(){ if (AGENDA_BUSCADA) return; AGENDA_BUSCADA = true; fetch(LEADS_API + '/api/agenda') .then(function(r){ return r.ok ? r.json() : null; }) .then(function(d){ if (!d || !d.eventos || !d.eventos.length) { AGENDA_ESTADO = 'erro'; renderAgenda('Todos'); return; } AGENDA = d.eventos; AGENDA_ESTADO = 'pronto'; var fbox = document.getElementById('ws-agFiltros'); if (fbox) fbox.innerHTML = ''; renderAgenda('Todos'); }) .catch(function(){ AGENDA_ESTADO = 'erro'; renderAgenda('Todos'); }); } /* ========================================================= ROTEADOR ========================================================= */ var SLAT_LINKS = ['#/projetos', '#/dupla', '#/trajetoria', 'https://wsmateriais.pages.dev/']; var ROTAS = { inicio:'William Sanches 20260 | Deputado Estadual por São Paulo', trajetoria:'Trajetória | William Sanches 20260', projetos:'Projetos | William Sanches 20260', dupla:'A dupla | William Sanches 20260', materiais:'Materiais | William Sanches 20260', agenda:'Agenda | William Sanches 20260', participe:'Participe | William Sanches 20260' }; function rotaAtual(){ var h = location.hash.replace(/^#ws\/?/, '').split('?')[0]; return ROTAS[h] ? h : 'inicio'; } function irPara(rota, semScroll){ WSROOT.querySelectorAll('.view').forEach(function(v){ v.classList.toggle('active', v.dataset.view === rota); }); WSROOT.querySelectorAll('[data-r]').forEach(function(a){ a.classList.toggle('on', a.dataset.r === rota); }); if (window.WS_TITULO !== false) document.title = ROTAS[rota]; if (rota === 'agenda') carregarAgenda(); document.getElementById('ws-drawer').classList.remove('open'); document.getElementById('ws-burger').setAttribute('aria-expanded', 'false'); if (!semScroll) { var alvo = document.getElementById('ws20260'); if (alvo) { var y = alvo.getBoundingClientRect().top + window.pageYOffset - (window.WS_OFFSET_TOPO || 0); window.scrollTo({ top: y, behavior: 'auto' }); } } observar(); } window.addEventListener('hashchange', function(){ irPara(rotaAtual()); }); var io = null; function observar(){ if (!WSRAIZ.hasAttribute('data-anim')) return; if (!('IntersectionObserver' in window)) { WSROOT.querySelectorAll('.rv, .rv-e, .rv-d').forEach(function(e){ e.classList.add('in'); }); return; } if (!io) io = new IntersectionObserver(function(es){ es.forEach(function(e){ if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }); }, { rootMargin:'0px 0px -8% 0px', threshold:.08 }); WSROOT.querySelectorAll('.view.active .rv:not(.in), .view.active .rv-e:not(.in), .view.active .rv-d:not(.in)').forEach(function(e){ io.observe(e); }); } /* ---- boot ---- */ (function(){ var ph = document.getElementById('ws-projHome'); PROJETOS.forEach(function(p, i){ ph.appendChild(cardProjeto(p, i, true)); }); var pa = document.getElementById('ws-projAll'); PROJETOS.forEach(function(p, i){ pa.appendChild(cardProjeto(p, i, true)); }); var sel = document.getElementById('ws-selProjeto'); PROJETOS.forEach(function(p){ var o = document.createElement('option'); o.value = p.t; o.textContent = p.t + (p.parceria ? ' (' + p.parceria + ')' : ''); sel.appendChild(o); }); var ch = document.getElementById('ws-canaisHome'); CANAIS.forEach(function(c){ ch.appendChild(cardCanal(c)); }); WSROOT.querySelectorAll('.tl-wrap').forEach(renderLinha); renderFeed('Todos'); renderAgenda('Todos'); carregarAgenda(); var b = document.getElementById('ws-burger'), d = document.getElementById('ws-drawer'); b.addEventListener('click', function(){ b.setAttribute('aria-expanded', String(d.classList.toggle('open'))); }); d.querySelectorAll('a').forEach(function(a){ a.addEventListener('click', function(){ d.classList.remove('open'); }); }); var s = 1, r = WSROOT; document.getElementById('ws-fsU').addEventListener('click', function(){ s = Math.min(1.4, s + .1); r.style.setProperty('--fs', s); }); document.getElementById('ws-fsD').addEventListener('click', function(){ s = Math.max(.85, s - .1); r.style.setProperty('--fs', s); }); var c = document.getElementById('ws-ctr'); c.addEventListener('click', function(){ var on = r.getAttribute('data-contrast') === 'alto'; r.setAttribute('data-contrast', on ? 'normal' : 'alto'); c.setAttribute('aria-pressed', String(!on)); }); var m = document.getElementById('ws-modal'); m.addEventListener('click', function(e){ if (e.target.hasAttribute('data-close')) fecharModal(); }); document.addEventListener('keydown', function(e){ if (e.key === 'Escape') fecharModal(); }); configurarFormulario(); var slats = [].slice.call(WSROOT.querySelectorAll('.slat')); if (slats.length) { var vdots = document.getElementById('ws-vitDots'), k = 0, timer = null; var reduz = window.matchMedia('(prefers-reduced-motion: reduce)').matches; slats.forEach(function(s, i){ var d = document.createElement('button'); d.type = 'button'; d.className = 'vit-dot' + (i ? '' : ' on'); d.setAttribute('aria-label', 'Destaque ' + (i + 1)); d.addEventListener('click', function(){ vai(i); reiniciar(); }); vdots.appendChild(d); s.addEventListener('mouseenter', function(){ if (window.innerWidth > 900) { vai(i); parar(); } }); s.addEventListener('click', function(){ if (!s.classList.contains('on')) { vai(i); reiniciar(); return; } var destino = SLAT_LINKS[i]; if (destino.charAt(0) === '#') irPara(destino.replace('#ws/','')); else window.open(destino, '_blank', 'noopener'); }); }); function vai(n){ k = (n + slats.length) % slats.length; slats.forEach(function(s, i){ s.classList.toggle('on', i === k); }); [].slice.call(vdots.children).forEach(function(d, i){ d.classList.toggle('on', i === k); }); } function andar(){ if (!reduz) timer = setInterval(function(){ vai(k + 1); }, 6500); } function parar(){ if (timer) clearInterval(timer); timer = null; } function reiniciar(){ parar(); andar(); } document.getElementById('ws-vitrine').addEventListener('mouseleave', reiniciar); andar(); } document.addEventListener('click', function(e){ var alvo = e.target.closest('[data-grupo]'); if (!alvo) return; e.preventDefault(); abrirGrupo(); }); irPara(rotaAtual(), true); // liga a animacao so depois que o bloco tem altura de verdade. // no Elementor o widget renderiza antes do layout: sem esta espera, // tudo entra na tela junto e nao se ve animacao nenhuma. function ligarAnimacao(){ if (WSRAIZ.hasAttribute('data-anim')) { observar(); return; } var alturaOk = (WSRAIZ.getBoundingClientRect ? WSRAIZ.getBoundingClientRect().height : 1) > 200; if (!alturaOk) { setTimeout(ligarAnimacao, 120); return; } WSRAIZ.setAttribute('data-anim', 'on'); observar(); } requestAnimationFrame(function(){ requestAnimationFrame(ligarAnimacao); }); window.addEventListener('load', function(){ ligarAnimacao(); setTimeout(observar, 200); }); })(); })();