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

Modelo trans se inspira em Valentina Sampaio e sonha com Victoria's Secret

A modelo Alexia Dutra, de 18 anos - Nanda Tavares/JOY Model
A modelo Alexia Dutra, de 18 anos Imagem: Nanda Tavares/JOY Model

Mariana Gonzalez

De Universa, em São Paulo

03/09/2020 04h00

Alexia Dutra terminou o Ensino Médio em Cuiabá no ano ado e ou no vestibular para três cursos diferentes: Serviço Social, Odontologia e Nutrição. A jovem, de 18 anos, no entanto, disse "não" a todas essas opções para seguir a carreira de modelo — mais especificamente, realizar o sonho de integrar o casting da gigante Victoria's Secret, que atualmente conta com apenas uma modelo trans entre suas angels.

"Eu sempre fui apaixonada pelo mundo da moda, assistia aos desfiles e me imaginava ali. Então quando surgiu a oportunidade de poder trabalhar nesse mercado, eu não pensei duas vezes", contou para Universa. "Meu maior maior sonho é poder um dia estar na Victoria's Secret".

Descoberta no início do ano por um olheiro nas redes sociais, Alexia vê em Valentina Sampaio, primeira modelo transexual contratada pela famosa marca de lingeries, no ano ado, uma inspiração: "Ela chegou aonde muitas não chegaram e tem quebrado barreiras, provando que mulheres trans podem ser o que quiserem".

A modelo, que não conhecia São Paulo, se tornou moradora da cidade no mês ado — desde então, fez ensaios fotográficos e um desfile virtual da marca À La Garçonne, do estilista Alexandre Herchcovitch. Ela deve estrear nas arelas na próxima temporada, que ainda não tem datas confirmadas, já que os eventos estão paralisados por conta da pandemia de coronavírus.

Alexia 1 - Reprodução/Instagram - Reprodução/Instagram
Imagem: Reprodução/Instagram

Alexia 2 - Nanda Tavares/JOY Model - Nanda Tavares/JOY Model
Imagem: Nanda Tavares/JOY Model

Falta de oportunidades

Alexia Dutra conta que "nem todos aceitaram de bom grado" quando ela se descobriu trans, mas teve todo o apoio da família materna e dos amigos, tanto naquele momento quanto ao decidir pela carreira no mundo da moda. "Desde o começo eles me motivaram e acreditaram em mim", conta. Mas a jovem reconhece que esse é um privilégio e que "faltam muitos direitos básicos para a população trans".

Ela vê falta de respeito e oportunidades para pessoas transexuais, e é justamente isso que espera ajudar a reverter. Questionada sobre como gostaria de ver a moda daqui a dez anos, ela respondeu: "Mais acolhedora e oferecendo grandes oportunidades".

"Espero construir uma carreira na moda e, com isso, espero que minha trajetória possa inspirar outras trans a conquistarem seus sonhos", finaliza.