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

Fluminense

Com mercado nacional retraído, Flu mapeia América do Sul e busca "joias"

Caio Blois

Do UOL, no Rio de Janeiro

07/01/2020 04h00

O Fluminense vem tendo dificuldades neste mercado da bola. Após ver as situações de suas duas principais renovações se dificultarem, o Tricolor garimpou atletas mais experientes e pesquisou outros países da América do Sul em busca de "joias". O problema é, mais uma vez, a falta de dinheiro: as revelações do continente custam valores fora da realidade do clube no momento.

Com poucas opções no ataque, por exemplo, o Flu sondou o atacante Kevin Quevedo, destaque do Alianza Lima na última temporada. O jovem de 22 anos foi o melhor jogador do futebol peruano em 2019 e virou titular da seleção pré-olímpica. Livre no mercado após encerrar seu vínculo com o gigante do país, gostou da oferta salarial, mas pediu altas luvas.

Por ora, o Tricolor recuou, assim como Internacional, Sporting e até clubes da MLS. Em coletiva de imprensa na segunda-feira (6), o presidente Mario Bittencourt afirmou que tem negociações encaminhadas no continente.

"No mercado sul-americano tem boas coisas encaminhadas também. Lá é ao contrário: os salários não são altos, mas o valor de compra é muito alto, porque atraem o mercado europeu. Dentro do que podemos arcar e da dificuldade que encontramos aqui, teremos um time muito forte, muito competitivo", declarou.

Além dele, o Flu também buscou informações de outros atletas que foram oferecidos, como os atacantes Federico Martínez e Ignacio Ramirez, revelações do Liverpool-URU e da seleção olímpica uruguaia, e o centroavante Michael Rangel, artilheiro e craque do último Campeonato Colombiano. As altas cifras (mais de US$ 2 milhões), entretanto, impediram avanços.

"É bem nítido que o mercado não está aquecido. São poucos jogadores se movimentando, e isso porque não há dinheiro no mercado, exceto alguns clubes. Os times que não conseguem adquirir jogadores pagando direitos econômicos estão concorrendo por bons nomes íveis. Todos os dias nos reunimos. Tem bastante coisa adiantada nossa, mas às vezes não compreendo que não seja feita uma leitura de que o mercado está bem devagar, porque o dinheiro está escasso para a maioria dos clubes. Para buscar jogadores fora do país está caro, e dentro, está complicado ainda", opinou o presidente do clube.

Apesar de não ter falado em nomes, os cinco reforços já bem encaminhados pelo Tricolor para 2020 são o lateral-esquerdo Egídio, o volante Henrique, o volante Yago Felipe e os atacantes Caio Paulista e Felippe Cardoso. O Flu segue negociando com Guilherme Arana, do Sevilla e o atacante Rossi, livre no mercado após rescindir com o Shenzhen. Há boa possibilidade de o clube aguardar o fim dos Estaduais para voltar ao mercado por mais contratações, dado o difícil panorama de momento.

No caminho inverso está o volante Jefferson Orejuela, que deve jogar no Querétaro (MEX) em 2020. A proposta dos mexicanos para comprar o jogador equatoriano, que não seguir atuando no Brasil, esteve próxima da pedida do clube, de US$ 4 milhões, e as partes devem se acertar até o fim da semana.

Fluminense