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

"Meu corpo fala", diz mulher trans que conquistou vaga no mundo corporativo

Yasmin Vitoria estrelou campanha de maior rede social do mundo corporativo - Reprodução/LinkedIn
Yasmin Vitoria estrelou campanha de maior rede social do mundo corporativo Imagem: Reprodução/LinkedIn

Marcos Candido

De Universa

28/11/2019 04h00

Yasmin Vitória não se esconde mais. E como poderia? Em seu portfólio profissional, ela ressalta de antemão que é uma mulher transgênero, negra e periférica. "Se esses marcadores sociais foram fatores da minha exclusão no ado, hoje são dois marcadores que mostram como foi possível chegar onde cheguei", diz.

Há um ano e meio, Yasmin foi contratada para trabalhar frente à frente com clientes de uma empresa da tecnologia em São Paulo. Neste ano, também tornou-se a cara de uma campanha em prol da diversidade do LinkedIn, rede social voltada para o mundo corporativo.

De acordo com a plataforma, apenas 25% dos profissionais LGBTs já tocaram no assunto com um colega de trabalho. Outros 25% nunca falaram de identidade de gênero e orientação sexual a ninguém. Os dados mostram um desconforto dos LGBTs no mercado de trabalho: 58% dos heteros entrevistados sabiam da existência de um colega LGBT, a pessoa falando sobre isso ou não.

Não à toa, Yasmin faz parte de um movimento encabeçado por empresas de dar oportunidades a mais funcionários LGBTs, negros, PCDs e criar um ambiente de trabalho mais inclusivo e respeitoso. Em processo de transição, Yasmin fez a entrevista na SalesForce. Ainda não tinha retificado o nome.

A vaga não pedia por uma pessoa LGBT. Mas quando foi convidada a juntar-se ao time, a empresa já tinha preparado uma estrutura para resolver questões burocráticas importantes para Yasmin, como confeccionar crachás e s de e-mail com o nome social.

'Não fico só nos bastidores'

Outra novidade é a de que ela iria dar a cara. "Não fico apenas nos bastidores. Também conduzo reuniões com clientes", diz. Claro, isso desperta reações. "Meu corpo fala primeiro. Na maioria das vezes, não preciso nem abrir a boca. Isso destrava emoções em quem me conhece."

Yasmin Vitória (ou "Yas") demora 1 hora para sair da periferia em direção ao mundo corporativo da Berrini - Reprodução - Reprodução
Yasmin Vitória (ou "Yas") demora 1 hora para sair da periferia em direção ao mundo corporativo da Berrini
Imagem: Reprodução

Para chegar ao trabalho, ainda é preciso enfrentar um trajeto de mais 1 hora para sair da periferia de Interlagos, na zona sul da cidade, até região da Berrini, bairro povoado pelo mundo corporativo paulistano.

"Vivo em dois mundos. Quando olho pela janela da minha casa, vejo uma realidade nua e crua. Quando vou ao trabalho, vejo outro estado, de grande prestígio. A realidade que vivo enquanto trabalho não é a mesmo. São dois mundos", diz.

O próximo o na vida é formar-se em istração. Yasmin está no último semestre do curso.

"A gente que é minoria não pode chegar a um determinado ponto da carreira e esquecer quem é. O mercado ainda não foi configurado a pessoas como nós. Quando me coloco como trans negra, eu mostro ao mercado, que ainda é racista e homofóbico, sobre um monte de pessoas que ainda estão em busca de oportunidade para chegar onde eu cheguei"