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

Liverpool

Mané vai sair do Liverpool e já tem novo clube definido, diz jornal

Mané, do Liverpool, lamenta chance perdida durante a final da Liga dos Campeões - Alex Gottschalk/DeFodi Images via Getty Images
Mané, do Liverpool, lamenta chance perdida durante a final da Liga dos Campeões Imagem: Alex Gottschalk/DeFodi Images via Getty Images

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

29/05/2022 09h51

A derrota do Liverpool para o Real Madrid por 1 a 0, ontem (28), na final da Liga dos Campeões da Europa, pode ter sido o último jogo de Sadio Mané pela equipe inglesa. De acordo com o jornal espanhol "As", o atacante senegalês continuará a usar vermelho na próxima temporada, mas na Alemanha, onde defenderá o Bayern de Munique.

Ontem, após o vice-campeonato da Liga dos Campeões da Europa, Mané adotou um tom de adeus: "Quero agradecer à torcida por tudo e também ao treinador. Eu desejo o melhor do mundo a esta equipe".

Para tirar o atacante do Liverpool, onde tem contrato até 2023, o Bayern de Munique investirá cerca de 30 milhões de euros (aproximadamente R$ 150 milhões na cotação atual), de acordo com o jornal alemão "Bild".

A movimentação no mercado seria uma antecipação do Bayern a uma possível saída de Robert Lewandowski do time. O atacante polonês já deixou claro para a diretoria bávara que não deseja continuar no clube por mais uma temporada.

Multicampeão no Liverpool

Revelado pelo francês Metz, Mané ganhou destaque na Europa no Red Bull Salzburg, da Áustria. De lá, ele foi para o Southampton, onde se tornou um dos destaques do Campeonato Inglês entre 2014 e 2016, ano em que foi contratado pelo Liverpool.

Nos Reds, Mané conquistou quase todos os títulos possíveis: a Copa da Liga Inglesa (2021-22), a Copa da Inglaterra (2021-22), o Campeonato Inglês (2019-20), a Supercopa da Uefa (2019), a Liga dos Campeões da Europa (2018-19) e o Mundial de Clubes (2019).

Liverpool