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

Marcelle Carvalho

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Despedida de Luciano Huck do 'Caldeirão' foi simples e comovente

Luciano Huck no Caldeirão (Reprodução/TV Globo). - Reprodução / Internet
Luciano Huck no Caldeirão (Reprodução/TV Globo). Imagem: Reprodução / Internet

Colunista do UOL

29/08/2021 20h24

Não deve ser muito fácil se despedir de algo que mereceu dedicação total por anos. Luciano Huck encerrou seu ciclo no "Caldeirão", no sábado, após mais de duas décadas de 'loucura, loucura, loucura'. Sua despedida foi simples e comovente. Do jeito que o apresentador gosta, já que há muito tempo direcionou a atração por esse caminho. Se a lágrima não rolasse com as histórias mostradas fora do estúdio, com certeza, mesmo tímida, ela caía com os quadros apresentados no palco. E foi sentado nele que Huck deu adeus para aquele cenário.

O paulistano foi o dono das tardes de sábado por 21 anos. É muito tempo. O garotão de 28 anos na época, que chegou à TV Globo após chamar atenção na Band, fez uma autoanálise e afirmou o quanto se transformou. A maturidade faz dessas coisas, amigo. E, claro, o programa seguiu também essa linha. Lembro que nos primórdios, a pegada parecia ser mais adolescente, o cenário era mais colorido, mais festivo. Com o ar do tempo, a atração não deixou de ser jovial, porém, se voltou mais para família e buscou nos comover ainda mais.

O adeus de Huck deu um nó na garganta do apresentador, que já estava bem mexido com a história do participante do "Quem quer ser um milionário" - o jovem de Belém do Pará, filho de catadores de lixo, que faturou R$ 150 mil e vai custear o curso de Medicina. Quando acabaram os quadros, ele foi para os bastidores. E ali, vimos um Huck despido. O apresentador deixou o coração falar e ficou tocado com as manifestações de alguns anônimos em relação a ele e ao programa. Através de cartas, eles contavam o quanto a vida mudou por conta do "Caldeirão". "Uau!", repetia Huck, pontuando o quanto arrepiado ficava a cada leitura. Em casa, a sensação da gente não era diferente.

Se um ciclo se fecha, outro se inicia. A atração, agora, será dominical. E chega com um grande desafio para Huck, apesar de ele já ser um apresentador conhecido e querido por muitos telespectadores. O moço vai ocupar, a partir do próximo domingo, o horário que foi de Faustão por 32 anos. Te mete! E ele sabe a responsabilidade que vem com a novidade. Como será a cara do "Domingão" dele? Como será Huck aos domingos? Só o tempo dirá. Carisma e torcida ele tem de sobra.