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

Gabi Martins conta que já precisou ir à polícia por perseguição de fã

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

06/08/2022 04h00

Luiza Possi encerra a terceira temporada do "Sai da Caixa" recebendo Gabi Martins. A cantora sertaneja — que participou do "BBB 20" (TV Globo), relembrou o que ganhou no reality: uns quilinhos a mais. De acordo com ela, teve fã que a perseguiu pedindo para ela dar mais uma chance ao seu crush de confinamento e outro que a fez parar na polícia.

Gabi Martins acumula quase 13 milhões de seguidores em apenas uma rede social. Luiza Possi se surpreendeu com os números e pediu para a cantora relembrar algumas situações curiosas vivenciadas por ela com seus fãs. Não foram poucas.

Dona do hit "Neném", que ficou conhecido do grande público enquanto ainda estava na casa, Gabi se viu em uma situação delicada com um fã. Segundo ela, ele a perseguiu e chegou até ir em sua portaria: "Deixou uma mamadeira e uma joia", contou.

"Eu fiquei assustada", relembrou ela que viu a do presente e o encontrou em mensagens enviadas em uma rede social. Ele falava igual um neném: 'Vou dar tapinha da sua bundinha'. Esse cara começou a me seguir nos lugares, eu tive que ir à polícia. Descobri que ele tinha 33 anos, era casado e falava igual neném. Gabi Martins

GM - Reinaldo Canato/UOL - Reinaldo Canato/UOL
Luiza Possi recebe Gabi Martins no 'Sai da Caixa'
Imagem: Reinaldo Canato/UOL

Romance no BBB

Enquanto esteve na casa, Gabi Martins se envolveu com Gui Napolitano. O affair não foi pra frente, mas teve fã que se viu na situação e foi atrás de Gabi para orientá-la a dar outro caminho para a situação.

"Ela saiu de Brasília e, do nada, apareceu na minha casa", começou ela. Durante a conversa, a fã agradeceu o carinho, falou da iração pela cantora e abriu o coração.

Ela falou que era fã do meu antigo 'ship' no 'Big Brother' ainda e que queria que eu voltasse com ele, que ele era o amor da minha vida. Gabi Martins

A visitinha da fã ainda contou com uma revelação da sua vida pessoal que deixou Gabi com dó do marido da pessoa: "Ela falou assim: 'sou casada há 10 anos, mas eu não amo meu marido. Quando eu tinha 20 anos conheci, o homem da minha vida e o perdi, hoje tô com meu marido'", relembrou.

Chocada com o desabafo, Gabi questionou os motivos dela continuar com o marido e a fã reforçou o pedido: "Você tem a chance na sua mão".

Você pode assistir a toda a programação do Canal UOL aqui