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

Resort de luxo no nordeste é eleito o melhor da América do Sul

Mais de 10.000 propriedades foram avaliadas com notas de 0 a 100 - Divulgação
Mais de 10.000 propriedades foram avaliadas com notas de 0 a 100 Imagem: Divulgação

Do UOL

09/10/2019 12h08

O UXUA Casa Hotel & Spa de Trancoso foi reconhecido como o melhor resort da América do Sul pela Condé Nast Traveler, uma das mais renomadas revistas de roteiros de luxo.

A votação contou com mais de 600.000 leitores em todo o mundo, que enviaram um número recorde de respostas classificando suas experiências de viagem.

Banheiro do UXUA Casa Hotel & Spa de Trancoso  - Divulgação - Divulgação
Imagem: Divulgação
Sofá em um dos quartos do UXUA Casa Hotel & Spa de Trancoso  - Divulgação  - Divulgação
Imagem: Divulgação
O UXUA está entre os 20 melhores resorts do mundo - Divulgação  - Divulgação
Imagem: Divulgação

Projetado pelo designer holandês Wilbert Das, o resort tem 12 casas, com 1 a 3 quartos. Quatro delas e a entrada do hotel são moradias de pescadores restauradas com as frentes voltadas para o Quadrado.

Os serviços disponíveis incluem um restaurante especializado em culinária baiana tradicional da chef Ju Pedrosa, o UXUA Quadrado, piscina, lounge e um restaurante na praia construído com o uso de antigos barcos de pesca, o UXUA Praia.

Foram mais de 10.000 propriedades consideradas com notas que poderiam chegar até 100. A pontuação geral do UXUA foi de 99,34, que o classifica entre os 20 melhores resorts do mundo.

O restante da lista dos melhores resorts sul-americanos é:

2. Pikaia Lodge (Santa Cruz Island, em Galápagos)

3. Bahia Vik José IgnacioJosé Ignacio, Uruguay

4. Tierra Chiloé Adventure and Spa Hotel (Ilha Chiloé, Chile)

5. Tambo del Inka, a Luxury Collection Resort & Spa, Valle Sagrado (Urubamba, Peru)

6. The Singular Patagonia (Puerto Bories, Chile)

7. Tierra Patagonia Hotel & Spa (Torres del Paine, Chile)

8. Hotel Paracas, a Luxury Collection Resort, (Paracas, Peru)

9. Aranwa Pueblito Encantado del Colca, Peru

10. Hotel Las IslasI (sla Barú, Colômbia)

11. Inkaterra Hacienda Urubamba (Vale Sagrado, Peru)

12. EcoCamp Patagonia (Torres del Paine, Chile)

13. Mashpi Lodge (Pichincha, Equador)

14. Playa Vik José Ignacio (Maldonado, Uruguai)

15. Vines Resort & Spa (Mendoza, Argentina)

16. Patagonia Camp (Torres del Paine, Chile)

17. andBeyond Vira Vira (Pucón, Chile)

18. Tierra Atacama Hotel & Spa (San Pedro de Atacama, Chile)

19. Finch Bay Galapagos Hotel (Puerto Ayora, Ilhas Galápagos)

20. Estancia VIK José Ignacio (José Ignacio, Uruguai)

As listas completa de outras categorias do prêmio podem ser conhecidas no site da Conde Nast Traveller.

Um dos quartos do resort UXUA Casa Hotel & Spa de Trancoso  - Divulgação  - Divulgação
Imagem: Divulgação