;(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();
})();
Um apoiador de Trump escreveu: "Lembram os ataques perversos de Alec Baldwin ao presidente Trump? Bom, agora Alec Baldwin tem grandes problemas com o karma..."
Alec Baldwin's Vicious Attacks on President Trump?
Well Alec Baldwin now has big karma problems...
"Woman dies after prop gun was 'discharged by Alec Baldwin' on a film set, police say." ?Google News
-- The ???c??????? Muff Connoisseur (@MuffConnoisseur) October 22, 2021
"Espero que Alec Baldwin esteja sofrendo. O babaca provavelmente vai culpar Trump por isso, também. A lei do karma nunca falha", comentou outro.
I hope Alec Baldwin is suffering. The asshole will probably somehow blame Trump too. I guess karma's a bitch.
Alec Baldwin é odiado pelos fãs de Trump porque sempre foi crítico a sua candidatura, e imitou o ex-presidente em diversas esquetes no programa de humor "Saturday Night Live" (SNL).
Os dois já até brigaram no Twitter algumas vezes. Em março de 2018, Trump fez uma postagem dizendo: "Alex (sic.) Baldwin, cuja carreira medíocre e moribunda foi salva por sua imitação de mim no SNL, agora diz que interpretar Donald J. Trump foi uma agonia para ele. Alex, também foi uma agonia para quem foi obrigado a assistir. Você foi horrível. Tragam de volta Darrell Hammond, ele é muito mais engraçado e talentoso!"
Hoje, a publicação não está mais disponível porque o ex-presidente foi banido da rede social em janeiro deste ano, após incitar a invasão ao Congresso Nacional por perder as eleições. A resposta de Alec Baldwin ainda pode ser lida no Twitter:
"Apesar de ter ado pela agonia, eu gostaria de continuar no SNL para as audiências do impeachment, o discurso de renúncia, o eio de despedida no helicóptero. Você sabe. As coisas boas. Que todos nós estamos esperando".
Agony though it may be, I'd like to hang in there for the impeachment hearings, the resignation speech, the farewell helicopter ride to Mara-A-Lago. You know. The Good Stuff. That we've all been waiting for.
O uso político do acidente que resultou na morte da diretora de fotografia Halyna Hutchins, de 42 anos, causou revolta nas redes sociais.
"É nojento para ca***** ver quantos apoiadores de Trump estão aparecendo do nada para fazer algum comentário ou piada de mau gosto sobre o acidente com Alex (sic.) Baldwin e Halyna Hutching. Meu Deus, gente", escreveu o diretor Stephen Ford.
It's fucking disgusting to see how many trump ers are coming out of the woodwork to make some tasteless comment or joke on the incident with Alex Baldwin and Halyna Hutchins, good god people.
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.