;(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();
})();
Maioria dos perfis dos peões pede permanência de Solange na 9ª roça
A Fazenda 2021: Solange ganha 'beijo' de ovelha Imagem: Reprodução/PlayPlus
Colaboração para Splash, em São Paulo
18/11/2021 15h59
Hoje acontece a nona eliminação de "A Fazenda 13" (RecordTV). Aline Mineiro, Valentina Francavilla e Solange Gomes se enfrentam na berlinda. A página oficial da maioria dos participantes manifestou sua torcida nesta roça e a ex-banheira do Gugu vem recebendo o maior apoio para a permanência no reality show rural.
Os perfis dos eliminados Fernanda Medrado, Erika Schneider, Nego do Borel, Liziane Gutierrez, Erasmo Viana e Mussunzinho não publicaram seus posicionamentos até o momento.
Neste roça não podemos de forma alguma nos distrair, portanto, todos aqueles que estarão focados no R7 durante essas 24h, usem no icon o modo #OffLine. Vamos com tudo pra cima! #FicaAline#AFazendapic.twitter.com/vmTGSRmg99
Uma grande aliada de Day está na roça e vamos precisar do foco de vocês mais uma vez. Pedimos para que todos não DIVIDAM votos! Nosso foco tem que ser somente na VALENTINA! Iremos realizar alguns mutirões ao decorrer do dia. Bora de #DayOFF?! #FicaValentinapic.twitter.com/8jYZRs5u77
Todas as peoas que estão na roça já votaram no Dynho e o tem como uma das suas opções de voto, então, fiquem livres para votar em quem acharem melhor! E boa sorte a todas
Temos que fazer o jogo externo do Gui e sim, ele indicou a Aline, mas no momento temos a visão de fora e devemos pensar no que é melhor para ele dentro do jogo. Então somos #FicaSolange e #FicaAline.
Galerinha, roça formada e, por ser muito próxima de Marina, nós somos #FicaAline! Teremos mutirões no decorrer do dia com a @alinemineiro, o primeiro será agora às 01h! Foco lá no R7, o voto é para FICAR, então votem bastante na Aline! #TeamMarina
Precisamos ser coerentes com o jogo interno e externo do Rico. Seu desejo é que Aline e Solange fiquem e daremos essa resposta a ele. Nesta Roça, somos #FicaAline e #FicaSol. #TeamRico
Pessoal, devido aos últimos acontecimentos, e a aproximação delas hoje, também iremos ajudar a Aline. Continuamos com #FicaSol mas também somos #FicaAline! Foquem muito no R7!
Temos 3 pessoas super queridas pelo Tiago na roça, é impossível ele querer que alguma das 3 saia porque tem um carinho enorme por elas. Mas aqui no Twitter, só damos apoio à quem SEMPRE nos apoiou. O jogo acontece aqui fora também, temos que ser justos. #FicaSolange