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

Abel foge do tema seleção e se derrete pelo Palmeiras: 'time do amor'

Do UOL, em São Paulo (SP)

09/04/2023 18h25Atualizada em 09/04/2023 19h32

Abel Ferreira desconversou sobre assumir a seleção brasileira e se declarou ao Palmeiras após o bicampeonato paulista.

O que aconteceu

O técnico português diz que "não acredita" em um suposto interesse da CBF. Ele fugiu de responder ao ser questionado se seria o próximo comandante da seleção brasileira.

Ele também colocou panos quentes sobre sua declaração após a derrota no jogo de ida da final. Ele chegou a falar que "ou o Palmeiras virava" ou ava uma vergonha diante do Água Santa.

Depois, Abel se declarou ao Alviverde. Ele chegou ao seu oitavo título com o clube, igualou Luxemburgo e se tornou o segundo técnico que mais vezes foi campeão no comando do clube.

"Somos o time do amor e da virada", afirmou o treinador.

O que ele disse

Seleção brasileira? "Não acredito nisso [assumir seleção]."

Virada ou vergonha. "O que posso dizer é que primeiro é preciso perder. Falei 'vergonha', mas alguns confundiram, sei qual foi minha intenção. Conheço esses jogadores, sei do que eles são capazes."

Declaração de amor. "Há duas palavras mágicas: amor e virada, somos o time do amor e da virada."

Torcida como 'plano': "Todos os treinadores têm um plano, mas a minha função é essa. É olhar para o jogo, ver o que fizemos de errado no último, o que é que podemos mudar. Os jogadores, é verdade, que alteramos a estratégia, o plano do último jogo do Água Santa para esse, mas jogar em nossa casa, com a nossa torcida, fosse qual fosse o plano... Eu acho que o nosso plano era nossa torcida comparecer em massa, como compareceu e nos ajudar como aconteceu hoje."

Sucesso: "Desde que sou jogador e treinador, para mim a palavra sucesso significa eu fazer o melhor que sei com os recursos que tenho e chegar ao final de cada jogo, competição em paz comigo mesmo. Os títulos são consequência. Para mim, o sucesso é dar o melhor que tenho, que posso, com os recursos que eu tenho e chegar ao final de cada dia e, quando me deitar, estar em paz comigo. Eu ainda não fiz gol nenhum. De fato, temos uma boa estrutura, uma presidente que ajuda, um diretor esportivo absolutamente extraordinário. As pessoas não fazem ideia do trabalho do Barros, mas também não interesse. Quem está fora não tem que saber o que fazemos dentro [do clube]... E ter jogadores com caráter extraordinário."

Palmeiras