;(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

Lucas Pasin

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

O ano em que Vitão aprendeu a lidar com os haters: 'Foi muito libertador'

Vitão fala do poder de sua música e de como 2022 foi "libertador" - Reprodução/Instagram
Vitão fala do poder de sua música e de como 2022 foi 'libertador' Imagem: Reprodução/Instagram

Colunista do UOL

21/12/2022 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Vitão começou o ano no "Dança dos Famosos", na Globo, lançou músicas, ampliou seu estilo de se vestir e o principal: aprendeu a lidar com todo o tipo de ódio nas redes sociais - algo que o assombrou desde o início da carreira - e a filtrar críticas que considera construtivas.

Em entrevista a esta coluna de Splash, já no clima de retrospectiva, o cantor classifica 2022 como um "ano libertador".

"Hoje em dia não me privo mais de fazer coisas que tenho vontade. Me resguardo sim, de forma saudável, mas não fico proibindo minha liberdade de ir e vir, de estar no lugar, de estar com pessoas. Se não, a gente deixa de viver. Se eu ficar com medo de ser observado, não saio mais de casa. Faço tudo o que tenho vontade", diz.

Vitão avalia os últimos meses:

Foi, de verdade, um ano muito libertador, principalmente artisticamente. No 'Dança dos Famosos', sai completamente da minha zona de conforto. Interpretei personagens diferentes, com estilos diferentes. E todo esse furacão artístico me ajudou a me expressar mais e colocar para fora tudo que existe dentro de mim, toda a minha visão de mundo e musicalidade.

Na vida pessoal, após dizer que sua sexualidade não deveria ganhar tanto destaque nas manchetes, ele brinca, quando questionado se está solteiro:

"Estou mais solto que arroz de vó. Estar sozinho é saudável. É meu momento de trabalho, carreira e muito foco. Quero desenvolver meu lado empresário, gerir minha empresa. É o momento de virar adulto, né?".

'Música é o poder que eu tenho'

Vitão - Reprodução/Instagram - Reprodução/Instagram
Vitão
Imagem: Reprodução/Instagram

O cantor, em entrevista recente publicada por esta coluna, já havia afirmado que usa o hate como algo positivo:

"Muito do ódio gratuito das pessoas, que me odeiam simplesmente pela minha forma de ser, acaba sendo combustível. Me dá mais gás para entregar um disco foda e calar a boca de todo mundo. Sempre fiz isso e seguirei fazendo."

Ele também disse que seguirá apostando na força de sua música e no poder que ela traz: "Minha música me deu autoconfiança. Nos momentos em que me senti mais lixo, que é ainda a maneira que muitos me colocam, o que me trouxe segurança foi fazer música. Produzo. Toco todos os instrumentos, componho, e vejo que fiz tudo isso sozinho. Esse é o poder que eu tenho".