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

Tabata é apresentado pelo Palmeiras e se diz pronto para estrear no Dérbi

Bruno Tabata é apresentado pelo Palmeiras - Divulgação/Palmeiras
Bruno Tabata é apresentado pelo Palmeiras Imagem: Divulgação/Palmeiras

Gabriel dos Santos

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

12/08/2022 15h42

Bruno Tabata foi apresentado pelo Palmeiras na tarde de hoje (12), na Academia de Futebol. Após receber a camisa 27 das mãos da presidente Leila Pereira, o meia-atacante concedeu sua primeira entrevista coletiva pelo Verdão, se apresentou à torcida e disse que está pronto para estrear. Ele assinou com o clube alviverde até 2026.

Contratado por 5 milhões de euros (R$ 26 milhões, na cotação atual), o reforço já está regularizado no BID (Boletim Informativo Diário) da CBF e pode ao menos ser relacionado no dérbi contra o Corinthians, amanhã (13), às 19h, na Neo Química Arena, pela 22º rodada do Campeonato Brasileiro.

"Realizei a pré-temporada toda, um mês e alguns dias. Fisicamente estou muito bem. Na última semana não treinei muitos dias por conta da negociação, mas já realizei praticamente uma semana de treinos aqui. Estou me sentindo bem fisicamente, integrado ao grupo. Me sinto preparado, fica para o nosso treinador decidir. Como jogador, sonho em jogar grandes jogos. Se pudesse escolher, estaria em campo amanhã", disse Tabata.

"Desafio muito grande, mas trabalho para estar à altura dele. Quando soube da oportunidade de vir para um clube como o Palmeiras, com a estrutura, briga títulos e também essa competitividade me chamou a atenção. Quis sentir a emoção de vestir a camisa do Palmeiras e quis estar aqui, já deu para sentir um pouco desse calor na quarta-feira, na classificação heroica. É um desafio enorme para cada jogador, todo jogador sonha em viver isso", continuou o meia-atacante.

Tabata falou sobre suas características e se disponibilizou a atuar em qualquer função do ataque palmeirense.

"Na minha agem lá fora, acabei virando um jogador muito versátil. Atuei por todas as posições, menos as mais defensivas. Dos dois lados, por dentro, como falso 9. Um pouco diferente da posição que o Rony joga aqui. Ele é um jogador mais de profundidade, enquanto eu sou mais de dar apoio, de ligação. Me sinto preparado para jogar em qualquer posição que o mister precisar. Sempre joguei mais pela direita, mas nunca fui um ponta de profundidade, mas sim um armador, que consegue chegar e fazer as duas funções", explicou.

Antes de chegar ao Palmeiras, Tabata estava no Sporting-POR. O meia-atacante foi revelado pelo Atlético-MG, mas saiu do Brasil aos 18 anos, antes mesmo de jogar pelos profissionais do Galo, a caminho do Portimonense-POR. Sua contratação não foi um projeto recente de Abel Ferreira. O treinador já o observava desde 2020, quando ainda estava no PAOK-GRÉ.

"Não tinha uma relação direta com o Abel, mas nos enfrentamos em Portugal quando ele estava lá. Depois teve uma possibilidade quando ele estava no PAOK, mas acho que os valores eram elevador na época. Desde que ele chegou ao Palmeiras, sabia que ele tinha interesse de que eu viesse para cá. Acho que esse foi o momento perfeito. Juntou o momento do clube com a minha vontade de estar aqui", finalizou Tabata.

Tabata foi o terceiro reforço contratado pelo Verdão nesta janela. Os outros foram os atacantes López e Merentiel.

Palmeiras