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

Ateu, Caetano explica como lida com dois filhos evangélicos; vídeo

De Splash, em São Paulo

04/11/2021 19h28Atualizada em 05/11/2021 15h06

Caetano Veloso abriu a alma e o coração em um papo descontraído com o amigo Nelson Motta. A conversa, gravada no teatro recém-reformado do Copacabana Palace, no Rio, estará disponível no dia 10 de novembro na Amazon Music e no YouTube, mas o trailer exclusivo você confere aqui no Splash.

Durante o bate-papo, Nelson conduz a conversa íntima com Caetano por assuntos como sua relação com a família, dinheiro, psicanálise, livros, política, religião, entre outros. Ateu, o compositor explicou como ele lida com os filhos Zeca e Tom, que são evangélicos e frequentam a igreja Universal do Reino de Deus.

"O convívio é muito bom em todos os campos. E nesse campo, como você falou, aprendemos mais com os filhos do que eles conosco. Então, nesse retrato aparentemente de exaltação que o Brasil ganhou de mim no 'Meu Coco', tem um momento falando do povo brasileiro eu digo: 'católicos de axé e neopentecostais'", analisa.

Caetano ainda falou que só teve vontade de ser pai quando saiu do Brasil. "Eu tinha certeza de que eu não queria ter filhos. Meu desejo mudou quando eu tinha 28 anos, em Londres. Eu tinha pena dos meus amigos que tinham filho. Quando Moreno, meu primeiro filho, nasceu, foi a coisa mais importante que aconteceu na minha vida adulta."

Já sobre política, ao ser questionado por Nelsinho Motta se ele está mais para a política ou para a filosofia, Caetano ite:

"Eu sou mais para filosofia. Mas a política me interessa como manifestação da movimentação da sociedade e da mente coletiva. Então, eu levo isso em conta; e fui levando mais e mais ao longo da vida. Meu pai me ensinou isso desde muito cedo. O que é curioso, porque ele nunca me ensinou sobre dinheiro, sobre como gastá-lo. Mas sobre ter uma perspectiva sobre política, sim. Acho que eu tinha 7 ou 8 anos quando aprendi a primeira lição. Meu pai era muito equilibrado; então a política tem essa importância para mim".