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

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Bruna Linzmeyer justifica fuga de Madeleine, em 'Pantanal': 'É uma prisão'

Em "Pantanal", Madeleine e o pequeno Jove, em seus braços, são levados por Gustavo de volta ao Rio de Janeiro  - Fabio Rocha/Divulgação/TV Globo
Em 'Pantanal', Madeleine e o pequeno Jove, em seus braços, são levados por Gustavo de volta ao Rio de Janeiro Imagem: Fabio Rocha/Divulgação/TV Globo

Colunista do UOL

05/04/2022 04h00

Bruna Linzmeyer viveu uma espécie de dilema durante as gravações de "Pantanal". Ao mesmo tempo em que ficava maravilhada com cada parte da região, a atriz tinha que segurar seu deslumbramento para dar veracidade à tristeza de Madeleine em estar naquele lugar. A carioca não vai conseguir se adaptar à vida pacata e solitária na fazenda no marido, José Leôncio (Renato Góes), principalmente, após o nascimento do filho, Jove. Tanto que ela fugirá com Gustavo (Gabriel Stauffer) quando ele aparecer de surpresa na fazenda, como mostra a imagem, para levá-la de volta ao Rio de Janeiro.

O encontro dela (com o lugar) não é bom. Ela está no isolamento, tem o rio, as árvores e um horizonte. Fiquei investigando essa angústia. Porque esse horizonte pode ser lindo, mas chega para Madeleine, ela quer ir embora dali. Para ela é uma prisão ficar sozinha lá", analisa Bruna.

Na história, Gustavo ficará sabendo do drama da ex namorada por Mariana (Selma Egrei). A mãe de Madeleine receberá uma carta da filha, em que ela relatará todo sofrimento e solidão que vêm enfrentando no Pantanal. Indignada, a socialite vai procurar o psicólogo pedindo a ajuda dele para resgatar a filha. Ainda apaixonado pela loira e incentivado de forma, digamos, incisiva pela ex sogra, Gustavo partirá em uma missão resgate e trará a patricinha para o seio da família.

Aos olhos de Mariana e até mesmo de Madeleine, Gustavo virou um herói. Mas não para Stauffer, que parece lamentar por seu personagem não conseguir se desvencilhar dessa paixão avassaladora pela ex.

Gustavo faz as coisas por amor. Mas a relação com Madeleine não faz bem. Ele quer se separar dela, mas toda vez que sente que vai perdê-la para sempre, corre para cima dela para resgatá-la (como agora). Seja porque Mariana mandou, seja porque ele quer, ele sempre acaba indo atrás dela de novo", analisa.

A decisão intempestiva de Madeleine fará José Leôncio explodir de raiva. O peão estará viajando a trabalho e quando chegar em casa ficará sabendo da novidade. Sem pensar duas vezes, ele partirá para o Rio de janeiro para saber melhor o que aconteceu, já que a mulher foi embora levando seu filho nos braços, e ainda por cima acompanhada pelo ex namorado. A relação entre José Leôncio e Madeleine nunca mais será a mesma após esse acerto de contas!

Em breve, mais cenas dos próximos capítulos.