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

Dwyane Wade conta como filha de 12 anos se revelou transgênero à família

"Estamos tentando absorver o máximo de informações que pudermos para garantirmos que damos a nossa filha a melhor oportunidade para que ela seja quem é", diz ex-astro da NBA - Getty Images
"Estamos tentando absorver o máximo de informações que pudermos para garantirmos que damos a nossa filha a melhor oportunidade para que ela seja quem é", diz ex-astro da NBA Imagem: Getty Images

Do UOL, em São Paulo

11/02/2020 12h59

Dwyane Wade, ex-ala-armador de Miami Heat, Chicago Bulls e Cleveland Cavaliers na NBA, contou como sua sua filha de 12 anos, Zaya, revelou à família que é transgênero. A garota nasceu do relacionamento de Wade com sua ex-mulher, Siohvaughn Funches, com quem esteve casado entre 2002 e 2010.

"Em primeiro lugar, eu e minha esposa, Gabrielle Union, somos os orgulhosos pais de uma criança da comunidade LGBTQ+, e também somos orgulhosos aliados", disse ele em entrevista ao programa "The Ellen DeGeneres Show".

"Quando nossos filhos chegam em casa com uma questão, quando nossos filhos chegam em casa com uma dúvida, quando nossos filhos chegam em casa com qualquer coisa, é nossa função como pais ouvir aquilo, para dar a eles a melhor informação que pudermos, o melhor retorno que pudermos. E isso não muda só porque a sexualidade está envolvida agora", acrescentou.

Segundo ele, Zaya "nasceu como um menino", originalmente chamado de Zion. No entanto, um dia, ela chegou aos pais e contou sua história.

"Ela disse: 'Olha, quero falar com vocês, quero seguir em frente e viver minha verdade. E quero que vocês se refiram a minha como ela e dela'. Eu adoraria se vocês me chamassem de Zaya'", contou Wade.

Os pais então aram a buscar informações. Gabrielle Union, por exemplo, procurou o elenco da série Pose, que se tornou conhecida pelo grande número de atores transgêneros no casting.

"Estamos tentando absorver o máximo de informações que pudermos para garantirmos que damos a nossa filha a melhor oportunidade para que ela seja quem é", disse Dwyane Wade.

Além de Zaya, Wade tem outros três filhos: Zaire, de 18 anos, nascido do relacionamento com Siohvaughn Funches; Xavier, de 6 anos, de relação com Aja Metoyer; e Kaavia, de um ano, que teve com Gabrielle Union.

Transexuais e transgêneros poderão mudar de nome sem ar por cirurgia

Band News