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

Por que Demi Lovato escolheu Brasil para volta 4 anos após overdose

De Splash, em São Paulo

19/08/2022 04h00

Demi Lovato está oficialmente de volta. Quatro anos após uma overdose que quase tirou a sua vida, em 24 de julho de 2018, a cantora está saindo em turnê com o seu novo disco, "Holy Fvck", que ela lança hoje.

O Brasil será o primeiro país a receber um show da nova turnê depois do lançamento do disco. Demi já fez duas apresentações prévias nos Estados Unidos, uma espécie de aquecimento para o que vai viver aqui.

Em sua oitava agem pelo Brasil (ela já esteve aqui em 2009, 2010, 2012, 2014, 2015, 2016 e 2017), São Paulo (30 e 31/8), Belo Horizonte (2/9) e Rio de Janeiro receberão a cantora. No Rio, Demi deve fazer um dos shows mais importantes da carreira: sua estreia no Rock in Rio em 4 de setembro, para um público estimado de 100 mil pessoas.

"Antes de tudo, sou tão grata aos meus fãs brasileiros. O apoio deles significa o mundo para mim", conta Demi Lovato em entrevista a Splash (assista ao papo no vídeo acima).

O público do Brasil representa os "lovatics" muito bem. Prova disso é que "Substance", música lançada como single em julho, um mês antes do álbum, foi mais reproduzida aqui do que em qualquer outro país do mundo no streaming, incluindo os Estados Unidos, país onde a cantora nasceu.

Há quem ouse dizer que Demi é mais amada no Brasil do que em qualquer outro lugar do mundo, o que faz com que a cantora sempre traga suas turnês para cá. Nos shows de estreia de "Holy Fvck", nos Estados Unidos, era possível ver a bandeira verde e amarela no público.

"A paixão que eles [brasileiros] demonstram com as minhas músicas, nos meus shows, é algo que eu nunca poderei expressar o quão grata eu sou."

demi - Divulgação - Divulgação
Demi Lovato experimenta fase rock n' roll em seu novo disco, 'Holy Fvck'
Imagem: Divulgação

Demi nunca escondeu suas dores e problemas nas letras de suas canções. Em "Holy Fvck", um álbum em que ela aposta mais no rock do que no pop, ela pede ajuda, fala abertamente sobre o vício em álcool e drogas, sua quase morte em 2018, crises amorosas, entre outras questões que nunca escondeu do público.

Para Demi, esse é um dos pontos que a aproximm dos brasileiros, conhecidos como um povo acolhedor.

"Acredito que o que me conecta aos fãs brasileiros é a total honestidade e a forma como eles reagem à minha música, além da paixão. Sou uma pessoa muito ional, e isso nos conecta", ite.

Um único assunto que a equipe de Demi Lovato pediu que ficasse fora da entrevista é a questão dos pronomes, algo sobre que a cantora ainda não se sente à vontade para conversar.

Em maio do ano ado, Demi revelou que se identificava como uma pessoa não-binária e ou a ser tratada por pronomes neutros. Menos de um ano depois, em abril de 2022, ela anunciou que aceitaria voltar a ser chamada pelos pronomes femininos.

Apesar de aceitar os pronomes femininos, isso não significa que ela deixou de ser uma pessoa não-binária, já que os pronomes neutros também permanecem na bio de seu Instagram.