;(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();
})();
Fim de namoro de Jade Picon e João Guilherme é marcado por polêmica
Imagem: Reprodução/Instagram
Continua depois da publicidade
Eu não sou o tipo de pessoa que vocês veem entrando em polêmica, que vem aqui se retratar, vaza número, print de conversa. Também tenho meu próprio tempo, acontece que ele fica aqui exposto há mais dez anos. Peço só que meu tempo seja respeitado.
desabafou Jade nos Stories
Influencer e youtuber, Jade é seguida por milhões de pessoas e já quase participou de um programa de enorme sucesso.
Splash te conta mais detalhes sobre a moça.
Família famosa
Antes de se tornar conhecida, Jade aparecia ainda aos 12 anos nos vídeos de seu irmão, o também youtuber Léo Picon, que criou seu canal de vídeos há 10 anos e já participou de realities como o "De Férias com o Ex" da MTV.
Jade Picon, Renato Aragão e Léo Picon
Imagem: REPRODUÇÃO/INSTAGRAM
Falando em reality...
Em entrevista deste ano, Jade revelou que chegou a ser convidada a participar do "BBB" na vigésima edição, exibida em 2020. Ela recusou o convite que faria dela uma das mais jovens a entrar na casa mais vigiada do Brasil, aos 18 anos!
Continua depois da publicidade
É muito complicado você botar em jogo toda a sua carreira, saca? Sinto que o BBB é um lugar onde você ou pega um foguete e vai pro céu ou pega um tobogã e vai pro inferno.
contou Jade, em papo com Lucas Selfie no Youtube
Ostentação
Mesmo sem o "BBB", Jade não tem do que reclamar quando o assunto é seguidores. Ela acumula quase 13 milhões no Instagram e quase 2 milhões de inscritos em seu canal do Youtube.
Quem acompanha a vida de Jade pelas redes sociais pode conferir suas viagens de luxo para destinos como as Maldivas, sua rotina de treinos e também seus vários ensaios como modelo.
Em fevereiro deste ano, Jade também lançou sua marca de roupas, a Jade². A loja ainda é somente online, mas conta com diversas peças que viraram febre entre seus fãs.
O namoro
Jade e João Guilherme assumiram o namoro em 2018, após a volta dela de um intercâmbio na Europa. Os dois viviam grudados: Jade até estampou a capa de um dos singles do ex. Os dois explicaram que o término veio por estarem em momentos diferentes da vida.
A Jade tem 20. A Jade está num momento da vida dela, profissional, muito diferente do meu. Então, a gente achou que é melhor para nós dois, hoje, ela crescer separado durante um tempo.
explicou João Guilherme no Instagram
João Guilherme fez alguns tweets após o rumor de que a ex Jade Picon ficou com Neymar ganhar força na internet
Eu só tenho uma coisa pra falar: a culpa é da CBF (Confederação Brasileira de Futebol). Menino Ney veio desenvolver um belíssimo trabalho, a CBF derrubou a data dele e ele foi pro evento.
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.