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

Microsoft, EA e Gerabox se posicionam contra transfobia do governo do Texas

Decisão executiva do governo do Texas permite investigações contra famílias com crianças trans - Stephanie Gonot / Pexels
Decisão executiva do governo do Texas permite investigações contra famílias com crianças trans Imagem: Stephanie Gonot / Pexels

De START, em São Paulo

15/03/2022 11h37

Mais de 60 companhias (entre elas Microsoft, Electronic Arts e Gerabox Entertainment) am uma carta escrita pela ONG Human Rights Campaign em oposição a uma nova decisão executiva do governador do Texas, Greg Abbott, a respeito de crianças trans.

Em 22 de fevereiro, Aboott autorizou agências estaduais de proteção à criança a investigar famílias cujos pais oferecem cuidados de saúde a crianças trans que levem em consideração sua transgeneridade. A alegação do governo é que tal cuidado pode ser entendido como "abuso infantil".

No dia seguinte, também pediu que cidadãos comuns se envolvam na questão, denunciando esses pais, novamente sob alegação de "abuso infantil".

Agora, sob o título "Discriminação é ruim para os negócios", a Human Rights Capaign lançou uma carta aberta nos principais jornais dos EUA, pedindo ao governador para "abandonar seus esforços anti-LGBTQ+".

O documento é endossado por diversas corporações, inclusive várias do setor de games.

"Nossas empresas fazem negócios, criam trabalhos e servem clientes no Texas", diz o texto. "Convocamos nossos líderes públicos, em Texas e em todo o país, para abandonar seus esforços para oficializar desiciminação em leis e regualmentações".

"Não é apenas errado. Há um impacto nos nossos funcionários, nossos clientes, suas famílias e nosso trabalho", continua.

Segundo Jessica Shortall, diretora-executiva da Texas Competes, uma rede empresarial pró-LGBTQIA+, muitos empregadores já estão tendo dificuldade de preencher vagas com expertise técnica no estado. Candidatos têm recusado a oportunidade quando são informados que precisam realocar para o Texas - um dos estados mais conservadores dos EUA.

No segmento dos games, isso é ainda mais impactante quando se analisam os dados da International Game Developers Association. A última pesquisa, de 2021, revela que 32% das pessoas que trabalham com desenvolvimento de jogo não se identificam como hétero e quase 10% não se identificam com o gênero a que foram designadas no nascimento.

SIGA O START NAS REDES SOCIAIS

Twitter: https://twitter.com/start_uol
Instagram: https://www.instagram.com/start_uol/
Facebook: https://www.facebook.com/startuol/
TikTok: https://www.tiktok.com/@start_uol?
Twitch: https://www.twitch.tv/startuol