;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Melhor do mundo, surfista Filipe Toledo é casado com promessa da música pop

Filipe Toledo é casado desde 2015 com Ananda Marçal  - Reprodução/Instagram
Filipe Toledo é casado desde 2015 com Ananda Marçal Imagem: Reprodução/Instagram

Colaboração para Splash, no Rio de Janeiro

01/07/2022 16h50

Atual número 1 do mundo, o surfista Filipe Toledo, que conquistou o tetracampeonato da etapa do Mundial em Saquarema nesta semana, é casado com uma promessa da música pop brasileira. O atleta mantém um relacionamento com a cantora Ananda Marçal, de 28 anos, que se lançou no mercado há dois anos e tem investido na carreira musical.

No início da pandemia da covid-19, Ananda decidiu apostar no seu sonho antigo em ser cantora. Após divulgar alguns covers na internet, ela foi procurada por um produtor e anunciou a sua carreira musical, de acordo com informações do jornal Extra. A primeira das cinco músicas lançadas, "Vontade de mim", chegou às plataformas de streaming no ano ado.

Em uma das canções, "Seu lugar", ela faz um desabafo sobre o machismo. "Quantas vezes me falaram o que fazer. Eu vim e quis fazer, fazer acontecer. Não adianta 'cê' querer me desmerecer. Sei do que sou capaz. Me respeita, bebê", canta ela em um dos trechos da música.

A cantora também tem três clipes lançados desde que começou a sua carreira no mundo da música. Com o último vídeo "Te pegar", ela faz uma parceria com o rapper NOG.

Em um entrevista antiga, quando ela ainda levava a música como hobby ao compartilhar vídeos cantando nas suas redes sociais, ela disse que pretendia investir na carreira.

"Por enquanto levo como hobby (cantar), não canto profissionalmente, mas em breve pretendo começar a investir mais e levar a sério. Sempre tive minha carreira de atriz como prioridade. Muitas pessoas acham que sou carioca, mas não, eu sou capixaba e quando resolvi me mudar pro Rio foi por conta do teatro, das oportunidades que são bem maiores aqui. Sempre foi meu sonho e eu tenho investido nisso desde que cheguei. A carreira de modelo foi consequência disso, mas amo o que faço, tanto como modelo quanto como atriz", disse ela.

Juntos desde 2015, o casal tem dois filhos. Ela nasceu no Espírito Santo, mas se mudou para o Rio de Janeiro, antes dos 20 anos, para trabalhar como modelo na agência 40 graus Models e também fez alguns trabalhos como atriz. "Encontrei o meu lugar no mundo, que é ser mãe e cantora", contou ela, em entrevistas recentes.

" width="560">