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

Vinícola na Nova Zelândia cria primeira 'companhia aérea do vinho'; entenda

O novo serviço de companhia aérea quer transformar o vinho em foco das férias, não apenas um coadjuvante - IStock
O novo serviço de companhia aérea quer transformar o vinho em foco das férias, não apenas um coadjuvante
Imagem: IStock

De Nossa

23/12/2021 10h04

A vinícola Invivo anunciou na última semana que inaugurará no primeiro semestre de 2022 a Invivo Air, primeira "companhia aérea do vinho" no mundo.

A proposta inicial do serviço é realizar rotas entre Auckland, onde a empresa está sediada, e a região produtora de Queenstown.

Viajantes poderão ter uma experiência de um dia completo na área, visitando as vinícolas que produzem uvas para os Pinot Noirs do rótulo, segundo informações da revista "Travel and Leisure". Além disso, estará incluso no pacote um pernoite no Hotel Hilton de Queenstown.

34 convidados devem viajar no voo inaugural, a bordo de um avião fretado pela companhia, que cobrirá cerca de 1.000 km. Parte destes assentos serão colocados à disposição do público, que poderá registrar o interesse em realizar a viagem no site da empresa. Apenas maiores de 18 anos completamente vacinados serão considerados.

A prioridade será dada a funcionários do setor de turismo e hotelaria da região que foram afetados pelos lockdowns na pandemia, assim como pessoas separadas de suas famílias no período, além de acionistas da Invivo.

Entre os parceiros comerciais famosos da empresa estão a atriz Sarah Jessica Parker e o apresentador britânico Graham Norton. Até o momento, nenhum dos dois revelou se irá acompanhar o primeiro voo da Invivo Air.

Com as fronteiras neozelandesas ainda fechadas, a companhia ainda não divulgou se cobrirá outras rotas, com que frequência deve realizar os trechos, quais as datas dos primeiros voos comerciais ou quais os valores. No entanto, o fundador Tim Lightbourne indicou que uma ampliação pode estar no futuro.

"Gerenciar um voo para o sul da ilha é a forma com que pudemos mostrar ao público que o país está aberto novamente para o turismo doméstico e, ao mesmo tempo, apoiar alguns daqueles que aram maiores dificuldades. Não estamos descartando outros voos para outros destinos na Nova Zelândia também", insinuou à publicação.