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

Kate distribui abraços após Meghan apontar formalidade da família real

Kate Middleton anda distribuindo abraços em compromissos reais  - Reprodução/Twitter @kensingtonroyal
Kate Middleton anda distribuindo abraços em compromissos reais Imagem: Reprodução/Twitter @kensingtonroyal

De Splash, em São Paulo

10/02/2023 18h13

Nos últimos dias, Kate Middleton, 41, foi fotografada distribuindo abraços nos compromissos reais.

A imprensa britânica comparou o comportamento exibido pela princesa de Gales ao que Meghan Markle, 41, descreveu no documentário "Harry e Meghan". A atriz disse que se surpreendeu com a formalidade dos cunhados ao conhecê-los.

Kate abraçou exploradora e seu ex-professor de história. Na quarta-feira (8), Kate parabenizou a capitã Preet Chandi com um abraço após a exploradora quebrar o recorde de mais longa e independente expedição pela Antártida. Ontem (9), ela abraçou seu ex-professor de história em uma visita ao condado de Cornwall.

Amigos de Kate já haviam desmentido Meghan. "Kate gosta de abraçar. Ela é calorosa e amigável e cumprimenta todo mundo com um grande abraço e um beijo. Isso é natural para ela", disse a fonte próxima à princesa em entrevista a People.

Meghan apontou formalidade da realeza em documentário

Meghan disse que seus abraços foram "chocantes" para os cunhados. "Eu gosto de abraçar. Sempre gostei de abraçar. Não sabia que era algo tão chocante para muitos britânicos. Comecei a entender rapidamente que a formalidade em público também era usada no privado. [...] Isso foi surpreendente pra mim", afirmou ela no documentário "Harry e Meghan" da Netflix.

Harry afirmou que William "recuou" ao ser abraçado por Meghan. "[O abraço] assustou ele. Ele recuou. Willy não abraça muitos estranhos. Meghan abraça a maioria dos estranhos", escreveu ele na autobiografia "O que sobra".

A reação de Kate, William e Charles às acusações de Harry

Kate ficou "indignada e decepcionada" com falas de Harry, mas não vai se diminuir. "Ela é uma mulher forte. É maravilhoso que William tenha Kate ao seu lado para se apoiar, porque ela está mostrando que é uma rocha nessa situação", disse uma amiga da princesa à revista People.

Ela e William querem "seguir adiante". "Muito já foi dito. Acho que eles [Kate e William] só querem seguir em frente. A situação é muito triste, mas negócios são negócios, e Kate está focando no trabalho porque é isso que ela faz", diz outra pessoa próxima de Kate.

Charles quer Harry de volta à família e presente na coroação. "É uma ocasião tão importante para Charles, e ele quer que seu filho esteja na coroação para testemunhá-la. Ele gostaria de ter Harry de volta à família. Se eles não resolverem a situação, isso sempre será parte do reino de Charles, como ele deixou sua família desajustada. Ele já tem uma reputação de pai distante, e seria horrível se isso continuasse assim", afirmou outra fonte ligada ao palácio.