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

Grêmio

Douglas vai casar? Dirigente do Grêmio nega liberação durante pré-temporada

Douglas Costa vive um relacionamento com a modelo Nathália Félix  - Reprodução/Instagram
Douglas Costa vive um relacionamento com a modelo Nathália Félix Imagem: Reprodução/Instagram

Do UOL, em Porto Alegre

06/01/2022 14h55

Mais uma polêmica tomou o noticiário do Grêmio envolvendo Douglas Costa. A nova data estipulada para seu casamento com a modelo Nathália Felix está dentro do período de pré-temporada do Tricolor. Em entrevista à Rádio Gaúcha, o vice de futebol Denis Abrahão negou que qualquer jogador seja liberado dos compromissos para uma eventual festa.

"Nem se fosse o meu casamento eu iria convidá-los. Não liberaria. E não tem nada a ver com Douglas Costa. É uma questão de profissionalismo, de comprometimento com o clube. A não ser em um dia de folga, mas duvido muito porque folga agora só depois de sofrerem muito. Vai ter muita festa no trabalho, serão 30 dias de uma grande pré-temporada, disso eu não abro mão", disse.

Douglas já conviveu com uma polêmica sobre este tema. No fim do ano ado, a data original para festa de casamento, que ocorrerá no Rio de Janeiro, era dias antes da última rodada do Brasileirão. Com o Grêmio ameaçado de rebaixamento — que acabou se confirmando — o clube negou sua liberação. O jogador ficou irritado com tal postura.

De férias, Douglas posta repetidamente fotos e vídeos treinando com o uniforme do clube. Ainda que tenha ofertas de equipes da MLS (Liga Norte-Americana de futebol), do Qatar e do São Paulo, ele indicou uma reaproximação para permanecer no Grêmio, como informou o UOL Esporte.

Abrahão ainda fez questão de sublinhar que não falava exatamente sobre Douglas, mas sobre qualquer jogador que venha a pedir liberação.

"Vamos estabelecer conceitos para não ter devaneios sobre o que estou falando. Estou dizendo que os jogadores do Grêmio não irão participar de festas durante a pré-temporada. Quem está falando sobre o Douglas Costa são vocês (jornalistas)", disse.

O assunto "Douglas Costa", por sinal, é tratado unicamente pelo presidente Romildo Bolzan Júnior. O mandatário, inclusive, já disse publicamente que o jogador pretende seguir atuando na equipe gaúcha.

Grêmio