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

Irmão de Daniel Alves fala sobre lealdade após Joana indicar separação

Joana Sanz indicou fim de casamento com Daniel Alves através de uma carta publicada nas redes sociais - AFP PHOTO / MICHAEL BUHOLZER
Joana Sanz indicou fim de casamento com Daniel Alves através de uma carta publicada nas redes sociais Imagem: AFP PHOTO / MICHAEL BUHOLZER

Do UOL, em São Paulo (SP)

16/03/2023 08h37

Ney Alves, irmão de Daniel Alves, compartilhou uma publicação nas redes sociais sobre lealdade, horas após Joana Sanz indicar a separação do jogador.

O que aconteceu?

  • Ney Alves publicou em seus stories no Instagram um post do influencer Rony Kbuloso que fala sobre lealdade.
  • "Vou dar um conselho para vocês, e serve até para mim mesmo, nunca espere consideração, reconhecimento, postura e nem lealdade de ninguém. Nós temos que ser pés no chão porque a mesma pessoa que te faz um bem enorme hoje é a mesma que te joga amanhã no chão e te amassa sem dó", diz Rony no vídeo.
  • A publicação de Ney aconteceu poucas horas depois de Joana Sanz indicar, através de uma carta, que estava se separando de Daniel Alves.
  • A carta da modelo estava escrita à mão em espanhol, onde ela diz que ama e sempre amará o defensor.

Entenda o caso

  • Daniel Alves está preso preventivamente desde janeiro, acusado de estuprar uma jovem de 23 anos em uma boate em Barcelona no fim do ano ado.
  • O Ministério Público e a defesa da mulher que denunciou a agressão sexual pediram prisão provisória e a juíza aceitou o pedido, sem direito a fiança.
  • O Pumas (MEX) rescindiu seu contrato com Daniel Alves por justa causa depois da detenção.
  • O brasileiro vai ficar preso até a investigação terminar. Autoridades espanholas estão tomando depoimento de testemunhas, fazendo a perícia do local e avaliando os exames médicos.
  • Ele pode pegar até 12 anos de prisão se julgado culpado.

Youtube do UOL Esporte

Paparazzi