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

Thales Bretas homenageia Paulo Gustavo no Miaw: 'Muita saudade e angústia'

Thales Bretas no MTV Miaw - Cleiby Trevisan
Thales Bretas no MTV Miaw Imagem: Cleiby Trevisan

Colaboração para Splash, em São Paulo

23/09/2021 23h13Atualizada em 24/09/2021 09h10

Thales Bretas foi um dos convidados do "MTV Miaw" de hoje. Thales recebeu o prêmio Transforma MIAW LGBTQIAP+ em memória do marido Paulo Gustavo, falecido em maio em decorrência de complicações da covid-19.,

"Hoje eu lido com a perda desse homem incrível, pai dos meus filhos, que apostou em mim pra construir o que temos de mais bonito e precioso. Sinto muita saudade e angustia por não viver esse projeto de vida da forma como sempre sonhei", falou Thales no discurso ao receber o prêmio.

Ele continuou: "Quero honrar todo esse esforço dele pra conquistar o respeito e a iração de muita gente, porque não foi fácil e a gente teve que romper muitas barreiras. E espero continuar fazendo isso com a delicadeza que conseguimos, inspirando outras pessoas a seguir seus sonhos e se expor. O amor move montanhas. Amem muito, espalhem amor e respeito porque o mundo precisa".

Esse premio me fez refletir muito sobre minha trajetória na minha adolescência, quando descobri minha sexualidade. Me esconder só ia trazer mais infelicidade e também não ia contribuir nada pro mundo melhorar e as pessoas, inclusive eu, poderem ser feliz pra amar quem quisessem. ei a pensar que eu tinha dever social de levantar a bandeira e me impondo, mostrando que eu era feliz amando outro homem e que isso era um direito meu e não um desrespeito ou afronta a ninguém".

Thales seguiu "Quando conheci Paulo Gustavo, nossos desejos se casaram. Nós dois queríamos construir uma família, baseado no amor e no respeito. A gente tinha orgulho de mostrar isso pra todo mundo que nos acompanhava, de forma natural".

Thales ainda exaltou a repercussão que seu relacionamento com o ator teve. "Fiquei muito feliz e surpreso com repercussão do casamento. Até hoje recebo um carinho enorme de gente do Brasil todo. Hétero, gay, trans, criança, jovem, idoso. Me orgulho muito me orgulho da forma sensível com que o Paulo levou o nosso amor ao brasil e do quanto esse homem transformou a tolerância em muita gente".

O evento foi marcado ainda por uma derrota de Luísa Sonza em todas as categorias que concorria, além da troca de looks de Pabllo, que fez uma apresentação final marcante.

Confira os vencedores do MTV Miaw 2021.