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

Paparazzi

Cristiano Ronaldo revela como filhos reagiram à morte de um dos gêmeos

Cristiano Ronaldo aproveita férias com os filhos em Dubai - Arquivo pessoal/Instagram
Cristiano Ronaldo aproveita férias com os filhos em Dubai Imagem: Arquivo pessoal/Instagram

Do UOL, em São Paulo (SP)

16/11/2022 09h28

Cristiano Ronaldo, atacante do Manchester United e estrela da seleção de Portugal, revelou em uma entrevista como seus filhos reagiram à morte de um dos bebês que ele e Georgina Rodriguez estavam esperando.

Segundo o atleta, Cristiano Ronaldo Jr (12), Eva (5), Mateo (5) e Alana (4) estavam animados em casa esperando a chegada dos pais e dos gêmeos.

"Gio chegou em casa e as crianças começaram a perguntar: cadê o outro bebê, cadê o outro bebê?", disse Cristiano, contando ter chorado muito durante o período, em entrevista ao apresentador Piers Morgan, da Talk TV.

"Os outros [mais novos] no começo, ao redor da mesa, começaram a perguntar 'Mãe, onde está o outro bebê?' …e depois de uma semana, decidimos ser francos vamos ser honestos com as crianças, dissemos que Ángel, que é o nome dele, foi para o céu", acrescentou.

O bebê morreu em abril, mas Cristiano afirma que ele segue presente na vida de sua família: "As crianças entenderam, ainda hoje dizem 'Papai, eu fiz isso por Ángel' e apontam para o céu. O que eu mais gosto porque ele faz parte da vida deles. Não vou mentir para meus filhos, digo a verdade, o que foi um processo difícil".

Em entrevista recente, Cristiano afirmou que deixou a pré-temporada com o Manchester United para poder estar com a sua família durante esse período delicado. O jogador de 37 anos acredita que isso tornou a família ainda mais unida.

"De certa forma, tornei-me mais pai, mais amigo deles; eles ficam mais próximos de mim, assim como eu também da Georgina. Fiquei mais amigo da Gio. Claro que já tínhamos a cumplicidade, mas agora sinto mais amor por ela e pelos meus filhos e começo a ver a vida com uma perspectiva diferente", explicou ele, acrescentando: "Os últimos seis meses foram os momentos mais difíceis da minha vida desde que meu pai morreu", declarou.

Cristiano afirmou que criou uma capela no porão, onde estão guardadas as cinzas de seu pai, José Dinis Avieiro, que morreu em 2005 por insuficiência hepática, e é o mesmo local onde ele guarda as cinzas de seu filho.

"É algo que quero guardar para o resto da minha vida e não jogar no oceano ou no mar. Eles continuam comigo. Tenho uma igrejinha no andar de baixo, uma capela, e mantenho meu pai e meu filho lá", finalizou.

Paparazzi