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

Cidade italiana relança projeto para vender casas a 1 euro

Salemi, na Itália - Claudio Pavone/EyeEm/Getty Images
Salemi, na Itália Imagem: Claudio Pavone/EyeEm/Getty Images

19/04/2021 16h48

A pequena cidade de Salemi, no sul da Itália, lançou novamente um projeto para vender casas no centro histórico por apenas um euro como forma de revitalizar a região.

A iniciativa foi divulgada pela prefeitura local no site www.1eurohome.it e visa combater o abandono do município, na província de Trapani, que desde 2016 está incluído na lista das mais belas aldeias da Itália.

Na página online é possível ver uma imagem panorâmica de Salemi, vídeos e outros conteúdos multimídia que revelam as belezas da vila no oeste da Sicília. Ao todo, 36 imóveis estão disponíveis, mas existe a exigência de uma série de compromissos por parte dos compradores.

Os interessados precisam apresentar suas propostas para a casa escolhida até o dia 31 de agosto e anexar um depósito caução de 3 mil euros para garantir a real intenção de compra. Quem não vencer o leilão será reembolsado. Já os vencedores, por outro lado, terão que se comprometer a reconstruir os edifícios, respeitando todas as regras e condições paisagísticas.

Os cidadãos estrangeiros também podem fazer uma oferta pelos imóveis. Além disso, é possível usar a propriedade para atividades comerciais e não apenas como habitação. O comprador pode adquirir mais de uma casa, mas as reformas das estruturas devem ser concluídas em três anos.

Para quem abre um negócio na aldeia, o município disponibilizará até 10 mil euros em abatimentos e contribuições não reembolsáveis.

A iniciativa nasceu da vontade da istração municipal de Salemi, que há anos segue um caminho de regeneração urbana e de desenvolvimento sustentável, de se desenvolver também a nível turístico. O projeto foi criado pelo ex-prefeito da cidade Vittorio Sgarbi e foi retomado e desenvolvido pelo governo atual, liderado por Domenico Venuti.

"Estamos a ar por uma fase crucial de um processo que começou há vários anos. As 'casas de 1 euro' não são uma iniciativa improvisada, mas faz parte de um plano orgânico que inclui outras intervenções: todas com o objetivo de relançar o nosso centro histórico", afirmou Venuti.

Em 2010, Salemi foi a primeira a adotar a iniciativa, que foi sucessivamente imitada por outras cidades do sul da Itália.

Apesar do custo simbólico das casas, na ocasião foram determinadas condições específicas para ser respeitadas no ato da compra, como o depósito de um caução de 5 mil euros. O valor era restituído após as obras de reforma e reestruturação dos imóveis, avaliados no mínimo em 15 mil euros.