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

Maisa se emociona e pede desculpas ao seu cabelo durante transição capilar

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

08/04/2020 08h40

Na noite de ontem, Maisa Silva mostrou como está a sua transição capilar. A apresentadora abriu mão dos cabelos "ao natural" há alguns anos, mas desde 2019 tem retornado às madeixas originais.

Para celebrar, ela publicou um álbum de fotos mostrando-se orgulhosa com os fios, e escreveu um texto para "pedir desculpas". "Querido cabelo, estamos em 2020. Eu tenho quase 18 anos e não escrevo mais em diário, na verdade você acredita que meu diário é uma página com 30 milhões de pessoas, várias fotos e vídeos? Pois é... que mundo doido. Tô aqui pra te pedir desculpas", começou ela.

"A gente tem ado mais tempo juntos, sozinhos e eu tenho percebido que você é muito legal! Que você nunca quis me machucar, que talvez, eu tenha colocado a culpa de muitas coisas em você (foi sem querer, eu juro). Me desculpe por reclamar tanto de você.
Me desculpe por rir das piadinhas que faziam de você, ou por falar coisas piores; acho que cada vez que eu fazia isso, eu me machucava também. Me desculpe por querer você uma hora loiro, ora preto, ora curto, ora longo. Me desculpe por não entender que você não tem que estar do jeito que eu quero, o tempo todo", lamentou.

Ela continuou: "Me desculpe pelo tempo em que eu quis que você fosse diferente. Me desculpe por sempre te queimar.
Me desculpe por esquecer te de hidratar. Me desculpe por ter achado que você era responsável por me fazer sentir bonita... Me desculpe por chorar escrevendo isso, mas é que eu não sei pedir desculpas sem chorar. Por último, eu queria dizer que você deve ter percebido que nos últimos anos a nossa relação mudou né? Poxa, eu te quero de volta, do seu jeitinho, eu juro que eu vou tentar te amar do jeito que você merece", prometeu.

"Eu mudei, você mudou e a gente continua unidos. Que lindo isso. Te aceito de volta, você aceita minhas desculpas? Com amor, +A", finalizou.

Nos comentários, ela recebeu apoio de seus seguidores anônimos e famosos, como Sabrina Sato. "Seu cabelo é lindo demais. Você é linda demais. E você falou tudo o que a gente sente pelo nosso cabelo. Lembro de criança ficar horas fazendo um negócio para tentar enrolar o meu que era liso espetado (bem japa). Meu sonho era ter cachos e queria eles mais claros também. Sonhava com isso", escreveu a apresentadora da Record.

Querido cabelo, estamos em 2020. Eu tenho quase 18 anos e não escrevo mais em diário, na verdade você acredita que meu diário é uma página com 30 milhões de pessoas, várias fotos e vídeos? Pois é... que mundo doido. Tô aqui pra te pedir desculpas. A gente têm ado mais tempo juntos, sozinhos e eu tenho percebido que você é muito legal! Que você nunca quis me machucar, que talvez, eu tenha colocado a culpa de muitas coisas em você (foi sem querer, eu juro). Me desculpe por reclamar tanto de você. Me desculpe por rir das piadinhas que faziam de você, ou por falar coisas piores; acho que cada vez que eu fazia isso, eu me machucava também. Me desculpe por querer você uma hora loiro, ora preto, ora curto, ora longo. Me desculpe por não entender que você não tem que estar do jeito que eu quero, o tempo todo. Me desculpe pelo tempo em que eu quis que você fosse diferente. Me desculpe por sempre te queimar. Me desculpe por esquecer te de hidratar. Me desculpe por ter achado que você era responsável por me fazer sentir bonita... Me desculpe por chorar escrevendo isso, mas é que eu não sei pedir desculpas sem chorar. Por último, eu queria dizer que você deve ter percebido que nos últimos anos a nossa relação mudou né? Poxa, eu te quero de volta, do seu jeitinho, eu juro que eu vou tentar te amar do jeito que você merece. Eu mudei, você mudou e a gente continua unidos. Que lindo isso. Te aceito de volta, você aceita minhas desculpas? Com amor, +A. #transicaocapilar #selflove (pra quem tá com duvida, comecei a transição em junho de 2018)

Uma publicação compartilhada por +A (@maisa) em