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

Ex-amiga diz que Meghan cortou relação ao namorar Harry: 'Senti como merda'

Millie Mackintosh diz que último contato com Meghan Markle foi uma mensagem fria da duquesa - Reprodução/Instagram
Millie Mackintosh diz que último contato com Meghan Markle foi uma mensagem fria da duquesa Imagem: Reprodução/Instagram

Colaboração para Splash, no Rio de Janeiro

13/05/2023 14h20

Estrela do reality show Made in Chelsea e ex-amiga de Meghan Markle, Millie Mackintosh, 33, contou que a duquesa de Sussex cortou relações com ela assim que começou a namorar com o príncipe Harry.

Em um bate-papo no seu podcast, Millie contou sobre a amizade que ficou estremecida com Meghan. "Ela me ignorou totalmente", afirmou.

Último contato foi uma mensagem após relacionamento de Meghan e Harry vir a público. "Nunca mais ouvi falar dela e nunca mais mandei mensagens para ela porque senti que ela meio que mandou me f#### basicamente naquela mensagem. Meghan Markle me deu um ghosting, querida."

Preocupação com a cobertura da mídica em volta da então amiga. "Eu sei como é ter muita atenção da mídia. Pode ser realmente opressor e desagradável, então mandei uma mensagem para ela e disse: 'Ei, espero que você esteja bem. Pensando em você'."

Millie diz ter estranhado a frieza de Meghan na resposta da mensagem. "O que li naquela mensagem foi que talvez ela precisasse de um pouco de espaço. Talvez ela precisasse se acalmar, ela estava com raiva, ela estava talvez sob muita pressão? Então eu não mandei mensagem para ela de novo? Mas eu esperava que mantivéssemos contato."

A estrela de reality show se "sentiu como uma merda". "O que eu poderia oferecer a ela naquele momento? Ela conheceu seu príncipe. Eu estava em um reality show, então... Acho que ela pensou, 'Não posso ser associada a 'Made in Chelsea'. Eu vou ser da realeza". Por isso, ela contou ter se sentido "um pouco como merda".

Sem convite para ir ao casamento. Tudo ganhou mais intensidade quando Milie não recebeu um convite para ir ao casamento da então amiga. "Isso foi muito doloroso porque eu não tinha feito nada, mas meu nome está sendo citado de uma forma bastante negativa. Foi um pouco embaraçoso", disse.

Início da amizade entre as duas. Millie contou que conheceu Meghan em 2015, quando as duas participavam da inauguração de um hotel em Istambul, na Turquia.

Último encontro entre as duas teve confissão sobre romance da duquesa com Harry. "Pensei: 'Ótimo, isso é bom para ela'. Não conheço [Harry] só para esclarecer. Eu nunca o conheci. Eu estava, tipo, 'legal', realmente não perguntei muito sobre ele. Na verdade, não pensei muito sobre isso na época. Se ao menos eu soubesse..."

Ela diz que superou a amizade com Meghan e não deseja mal. Apesar da mulher de príncipe Harry ter cortado relações, a estrela de reality show disse ter superado a amizade delas e que não deseja nenhum mal a Meghan.