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

Palmeiras

Palmeiras: Lucas Lima explica lamentação antes do gol de Breno Lopes; vídeo

O jogador Lucas Lima, do Palmeiras, comemora seu gol contra o São Caetano, durante partida válida pela primeira rodada, do Campeonato Paulista, Série A1, na arena Allianz Parque. - Cesar Greco
O jogador Lucas Lima, do Palmeiras, comemora seu gol contra o São Caetano, durante partida válida pela primeira rodada, do Campeonato Paulista, Série A1, na arena Allianz Parque. Imagem: Cesar Greco

Thiago Ferri

Do UOL, em São Paulo

12/03/2021 12h18

Destaque na vitória do Palmeiras sobre o São Caetano, Lucas Lima teve uma reação curiosa ao dar a assistência para o segundo gol, marcado por Breno Lopes. Ao tocar para o atacante, o meia e capitão levou as mãos à cabeça, lamentando. Para ele, o e havia sido forte demais.

"Eu estava meio que lamentado, porque achei que dei o e um pouco longo, mas por um segundo esqueci como o Breno é rápido [risos]. Quando eu o vi disparando, sabia que 'já era'. O e tinha que ser basicamente perfeito para chegar finalizando. O Breno é muito rápido, mesmo", comentou Lucas, em entrevista coletiva hoje (12), na Academia de Futebol

Lucas participou de todos os gols na vitória de ontem, inclusive marcando o terceiro no triunfo por 3 a 0. O meia vai jogar todo o Campeonato Paulista depois de recusar o período de descanso que a maioria do elenco teve após o título da Copa do Brasil.

"A motivação é de estar jogando. A gente trabalha, treina forte, tenta aproveitar todas as chances. É uma boa oportunidade para mostrar meu valor, tento me dedicar nos treinos, porque sei que é a partir dos treinos que as coisas vão dar certo em campo. O professor falou que eu poderia ser liberado, porque tive muitos jogos, mas comentou que eu queria ficar para a segunda turma. Eu disse que não estava pensando em férias, queria jogar. Estou aproveitando da melhor forma possível", completou.

Ainda que não seja unanimidade na torcida do Palmeiras, Lucas Lima tem quatro títulos pouco mais de três anos pelo clube: Brasileiro, Paulista, Copa Libertadores e Copa do Brasil. Um currículo que ele considera já o deixar na história do Verdão.

"Meu futuro está nas mãos de Deus, tem de pensar no agora, no jogo de domingo, o mais importante da minha vida. O pensamento é isso, feliz por tudo que já conquistei aqui. História eu sei que fiz aqui, porque você fica marcado por títulos. Isto é legal para o individual. Para o que sempre luta, são os títulos. Só tenho que agradecer a Deus pelas chances todos os dias. Dou muito valor, um momento totalmente diferente, às vezes participando menos, às vezes mais. É um aprendizado todos os dias. Sempre pude atuar de forma diferente, mas o professor deixou claro que todos somos um e este é o espírito. O mais importante é o Palmeiras ser campeão", completou.

Palmeiras