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

O papagaio real - Quem tudo quer, tudo ganha!

Da Página 3 Pedagogia & Comunicação

Duas irmãs moravam juntas, mas a mais velha era muito boa e a mais nova, maldizente e preguiçosa. Várias noites seguidas, a mais nova escutou um barulho de asas e depois a voz de um homem no quarto da sua irmã. Achou aquilo muito esquisito. Certa noite, resolveu espiar pelo buraco da fechadura. Viu, no meio do quarto, uma bacia cheia de água.
 
Quando bateu a meia-noite, chegou na janela um papagaio enorme e muito bonito. A ave voou para dentro do quarto, entrou na bacia e sacudiu-se, espalhando água para todos os lados. Cada gota que caía se transformava numa moeda de ouro e, quando o banho terminou, o papagaio tinha se transformado no príncipe mais formoso do mundo. Ele se sentou do lado da irmã mais velha, tomou sua mão e os dois começaram a namorar.
 
Louca de inveja, a irmã mais nova resolveu acabar com aquela história no dia seguinte. À tarde, quando a irmã não estava, encheu o peitoril da janela e a bacia com cacos de vidro que eram invisíveis de tão transparentes. À noite, o papagaio chegou e, batendo asas no peitoril, cortou-se todo. Voou para a bacia e cortou-se mais ainda. O papagaio não virou príncipe, arrastou-se até a janela e disse para a moça, assustada com o que sucedera:
 
– Ingrata! Agora, se quiseres me ver, só no reino de Acelóis.
 
Batendo as asas ensanguentadas, desapareceu. A moça quase se acabou de tanto chorar. Brigou muito com a irmã invejosa e deixou a casa, decidida a procurar o noivo mundo afora. Andou por muitos lugares. Empregou-se como criada nas casas, só para perguntar onde ficava o reino de Acelóis. Ninguém sabia ensinar e a moça foi ficando desanimada.
 
Depois de muito viajar, viu-se perdida numa floresta. Com a chegada da noite, resolveu subir numa árvore para descansar. Foi aí que viu algumas aves conversando e ficou sabendo que uma delas seguia justamente para o reino de Acelóis. O príncipe estava muito doente. Para curá-lo era preciso dar-lhe de beber três gotas de sangue do dedo mindinho de uma mulher que quisesse dar a vida por ele.
 
Na manhã seguinte, a moça prestou atenção na direção que a ave seguia e pôs o pé na estrada. Quando o sol se punha, avistou o reino de Acelóis. Pediu abrigo na casa de uma família de camponeses e, ali, ficou sabendo das novidades. O príncipe continuava doente e o pássaro que descobrira o modo de curá-lo havia sido morto por um gavião quando chegava perto do palácio real.
 
No outro dia, a moça saiu à procura do rei, o qual já recebia qualquer pessoa que lhe prometesse salvar seu filho, o príncipe. A moça lhe disse, então:
 
– Posso curar o príncipe, se Vossa Majestade me der, de tinta e papel ado, a metade do reino e de tudo que lhe pertencer.
 
A contragosto, o rei aceitou a proposta. A moça foi para o quarto do príncipe, furou o dedo mindinho e derramou três gotas de sangue nos lábios do doente. Assim que as engoliu, o príncipe abriu os olhos e levantou-se da cama. Quase não acreditou, ao reconhecer sua salvadora. Foi, então, falar com o pai. Disse que aquela era sua verdadeira noiva desde quando ele estava encantado em um papagaio real. Queria se casar com ela. O rei não gostou, pois não se tratava de uma princesa. Negou seu consentimento.
 
– Vossa majestade me deu a metade de tudo que lhe pertence – disse a moça, exibindo seu contrato. – Se não posso me casar com o príncipe, vou cortá-lo ao meio e levar a metade comigo.
 
Ao ouvir falar em cortar o príncipe pelo meio, o rei voltou atrás e deu seu consentimento. Os dois se casaram e foram felizes para sempre.