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

Como jovem tido como 'filho' por Guardiola virou alvo de grandes europeus

Eric Garcia, durante treino do Manchester City - Tom Flathers/Manchester City FC via Getty Images
Eric Garcia, durante treino do Manchester City Imagem: Tom Flathers/Manchester City FC via Getty Images

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

02/03/2021 04h00

Após conquistar a confiança de Pep Guardiola no Manchester City, o jovem zagueiro Eric Garcia, de apenas 20 anos, se tornou alvo de disputa entre grandes clubes europeus. Equipes como Paris Saint-Germain e Arsenal apareceram como interessadas, porém, ao que tudo indica, ele deve voltar em breve ao Barcelona, onde começou ainda nas categorias de base.

Atuando pelo profissional do Manchester City, Eric coleciona um total de 32 jogos, uma assistência e apenas dois cartões amarelos. Desde as categorias de base no time inglês, onde disputou 50 jogos, ele nunca foi expulso e ainda fez seis gols.

O nome de Eric entrou em evidência após demonstrar segurança no momento em que o City voltou da pausa devido à pandemia do novo coronavírus. As aparições com a camisa do time inglês fizeram com que as qualidades do defensor ficassem em evidência. As mesmas foram confirmadas após elogios feitos pelo treinador do City, que o considera 'como um filho'.

"Eric Garcia é como um filho para mim. Na temporada ada, durante a quarentena, foi nosso melhor zagueiro central. Não cometeu nenhum erro, assim como nessa temporada também não, jogando com os titulares. Jogou as eliminatórias da Champions e acredito que vai jogar no Barcelona. Isso acontece com os jogadores de alto nível", disse Pep.

Além dos clubes interessados, existe também a insistência por parte do time inglês por sua permanência, afinal, Guardiola acredita que Eric oferece muito do que ele precisa para o estilo de jogo do City.

O contrato do defensor com o City é válido até o final de junho deste ano e até agora não se tem indícios de uma renovação.

Começo em Barcelona

Eric deixou a Espanha em 2017, após nove anos nas categorias de base dos culés. Logo, foi morar na Inglaterra e assinou seu primeiro contrato com o Manchester City, onde jogou durante um ano nas categorias de base.

Em 2018, o espanhol fez seu primeiro jogo como profissional nas quartas de final da Copa da Liga Inglesa. Daí em diante, no ano seguinte ele debutou na Supercopa da Inglaterra, a qual foi campeão, e Campeonato Inglês. Na temporada atual, ele também teve oportunidades na Liga dos Campeões, onde despertou interesse de grandes europeus.

Seleção espanhola

Além disso, suas aparições na seleção da Espanha são frequentes desde que disputou Eurocopa e Copa do Mundo Sub-17. Em constante evolução, Eric jogou a Eurocopa sub-19, seu primeiro título pela seleção, e em 2020 estreou no time principal.

Atualmente, além de peça fundamental no elenco de Guardiola, Garcia também é presença constante nas convocações da Fúria.