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

Kim Kardashian sobre Kanye: 'É o pai dos meus filhos e sempre o protegerei'

Kim Kardashian e Kanye West - Danny Moloshok
Kim Kardashian e Kanye West Imagem: Danny Moloshok

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

17/03/2022 15h38Atualizada em 17/03/2022 15h38

Kim Kardashian falou publicamente sobre as situações difíceis que está vivendo publicamente com seu ex-marido, Kanye West. O rapper teve, inclusive, sua conta no Instagram suspensa por 24 horas após diversas publicações atacando as habilidades de Kim como mãe e seu novo namorado, o comediante Pete Davidson.

A apresentadora elogiou a empresária pela forma positiva com a qual lida com um assunto delicado e como ainda protege Kanye, e a estrela de reality show falou sobre a dificuldade de lidar com isso e criar seus filhos de forma conjunta com seu ex. "É quem eu sou. Tive um ótimo exemplo com meus pais e como eles lidaram com o divórcio. Então sigo sempre esperançosa. Não importa o que aconteça, é o pai dos meus filhos e sempre o protegerei. Quero que meus filhos vejam o melhor. Então, por mais que seja difícil às vezes, eu tento ignorar e fazer o que é melhor para as crianças", disse Kim. Ela e Kanye têm quatro filhos juntos.

Kim falou que tenta pegar o "caminho estreito" quando se trata da criação dos filhos com o rapper. Ela também disse tentar aprender uma lição em todas as situações que a. "Às vezes, penso que tudo isso são lições. Essas coisas, esses desafios aconteceram comigo por uma razão. Por mais que seja difícil, eu tento parar e refletir sobre qual é a lição e o que eu devo aprender com isso, e como posso ar por essas coisas, qual o motivo desse desafio ter sido colocado na minha vida", disse a empresária.

A Kardashian também mostrou sua nova visão de vida após o divórcio. "Eu costumava me importar muito com narrativas, sobre o que é verdade e o que não é, em qualquer assunto. Hoje, eu apenas vivo minha vida do jeito que eu acho que é o melhor e que eu sinto como o certo dentro de mim e sigo adiante. Tento fazer o melhor que posso. E essa é a mensagem que eu tento tirar de qualquer coisa que não acontece do jeito que você quer na vida. Tente aprender, seguir em frente e ser uma boa pessoa", desabafou Kim.