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

Topo

Leonardo Gonçalves faz cover emocionante de 'Ninguém Explica Deus'

23/07/2022 18h00

O cantor cristão Leonardo Gonçalves se emocionou ao cantar a música "Ninguém Explica Deus", do grupo Preto no Branco, no "Sai da Caixa" desta semana.

Luiza Possi recebeu Leonardo na terceira temporada do programa de Splash. No papo, o cantor, que acumula milhões de visualizações em seus trabalhos, contou que, apesar de gostar de dialogar, chegou no limite com um líder religioso.

Conhecido e irado no mundo cristão, Leonardo se abriu com a apresentadora, que elogiou sua coragem de expor seus posicionamento, mesmo que alguns deles sejam conflituosos com algumas linhas de pensamentos religiosos.

"Eu nem acho que é corajoso", revelou. Para Leonardo, isso é saber istrar as diferenças: "Sou uma pessoa pró-diálogo (...) focando no que nos une, no final das contas, o que nos une eu quero crer que seja maior que nos separa", disse ele.

Mas, nem tudo são flores na hora de istrar as diferenças, exemplo do que aconteceu no período da pandemia.

Aconteceram algumas coisas que me põe no limite da minha capacidade de diálogo, exemplo: quando um líder religioso determinado pede a intervenção militar para garantir que as igrejas continuem abertas em um período de pandemia, onde quatro, cinco mil pessoas estão morrendo no Brasil. Leonardo

Leonardo Gonçalves é o convidado de Luiza Possi no 'Sai da Caixa'

Não tem como deixar ar

"Como que eu posso deixar ar um troço dele?", questionou Leonardo que continuou explicando que sua voz não é algo calculado no que pode ou não ser falado. "Esse cristianismo que tem que ser hegemônico lembra demais o lema da ditadura no Brasil: ame-o ou deixe-o", concluiu.

É isso que está acontecendo, se você não concorda com esse pacote de cristianismo completo, tem que ser um pacote completo, se tem alguma coisa que você não concorda, então sai da igreja. Leonardo

Leonardo foi firme ao dizer que, sempre que puder, vai defender o que crê, que é a palavra de Deus e usar sua voz para isso, mesmo que seja diferente que esperam de um cristão que frequente uma igreja: "Se eu pudesse continuar quietinho na minha, eu continuaria. Mas tem uma tragédia ambiental, as pessoas estão morrendo, literalmente, com a desigualdade social", pontuou.

O "Sai da Caixa" ainda vai receber grandes nomes da terceira temporada, como Paulo Ricardo e Gabi Martins. O programa vai ao ar todas às quartas, às 14h30, no Canal UOL.

Você pode assistir a toda a programação do Canal UOL aqui