;(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();
})();
'Carnaval': filme com Gkay traz reflexão sobre redes sociais e amizade
Capa do filme "Carnaval"
Divulgação/Netflix
De Splash, em São Paulo
02/06/2021 04h00
O filme "Carnaval" estreia hoje na Netflix e traz um questionamento para o público:
Qual o valor das amizades?
Ambientado no Carnaval de Salvador (sim, muitos gatilhos de uma época em que podíamos festejar a data), quatro amigas vivem com intensidade o melhor e o pior de suas relações.
Continua depois da publicidade
Splash conversou com o elenco, que conta com Giovana Cordeiro, Bruna Inocencio, Samya Pascotto e a polêmica Gessica Kayane, a GKay.
O filme tem direção de Leandro Neri e foi rodado no começo de 2020, quando ainda podia haver Carnaval.
Giovana vive a protagonista Nina, uma influenciadora que, após terminar um relacionamento por causa de uma traição, recebe um convite para curtir o Carnaval da Bahia. E leva suas três melhores amigas Vivi (Samya Pacotto), Michelle (GKay) e Mayra (Bruna Inocencio) para o rolê.
Giovana diz que a principal lição que a trama deixa é sobre a importância da amizade, mas não só:
Continua depois da publicidade
É sobre como cultivamos nossas relações. Mas também sobre esse universo das redes sociais, da comparação, onde a grama do vizinho é mais verde.
Giovana Cordeiro é Nina em "Carnaval"
Imagem: Divulgação/Netflix
Arte que copia a vida
Bruna diz que sua cena favorita é aquela em que Mayra tem de encarar sua fobia de multidões, ao se perder das amigas num trio elétrico. Ela acaba recebendo um apoio espiritual de orixás, da Umbanda, que aparecem para confortá-la.
Sou umbandista, a emoção é real. Aquele momento é muito único, às vezes até esquecia que estava gravando.
Bruna, quando soube que interpretaria uma personagem com essa fobia, procurou sua mãe para saber detalhes de como funciona esse sentimento, já que ela também sofre desse medo.
Continua depois da publicidade
Eu me inspirei na minha mãe, ela tem essa fobia, ela foi a minha inspiração. Eu amo a multidão. Mas minha mãe tem essa questão e sempre observei isso.
Bruna Inocencio é Mayra
Imagem: Reprodução/Instagram
Gkay vive a amiga pegadora do rolê, Michelle.
"Tem bastante coisa da Gkay na Michelle, queria que fosse uma personagem com um lado 'periguete' e engraçado. É uma mensagem que eu tento ar: nós mulheres podemos ser sexies, engraçadas, sérias. A Michelle é um mix dessas personalidades."
Gkay é Michelle em "Carnaval'
Imagem: Reprodução/Instagram
Beijar sem critério? Com ela não!
Samya dá vida a Vivi, uma jovem nerd que faz uma entrevista para saber se o crush está à altura dela. E isso se reflete um pouco na vida da atriz, que diz ter mais filtros para se relacionar hoje em dia.
Continua depois da publicidade
Eu pergunto: 'Em quem você votou na última eleição?'. Esse tipo de filtro eu uso.
Samya é Vivi em "Carnaval"
Imagem: Reprodução/Instagram
Perrengues de gravação? Temos!
Aliás, na última cena, as atrizes brincam que estão praticamente se afogando no mar.
"A cena no filme é a coisa mais linda. Mas a gente gravou às cinco da manhã, no mar gelado. Logo depois pegamos o avião de volta", diz Gkay.
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.