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

Bichos

Tudo o que você precisa saber para cuidar do seu pet

Pugs 'apaixonados' se casam em pub inglês, com smoking e vestido de noiva

Um convite de casamento foi elaborado para a cerimônia dos cãezinhos no pub inglês The Office - Reprodução/Redes Sociais/The Office
Um convite de casamento foi elaborado para a cerimônia dos cãezinhos no pub inglês The Office Imagem: Reprodução/Redes Sociais/The Office

Colaboração para o UOL, em Santos

17/08/2021 09h40Atualizada em 17/08/2021 09h41

Dois cãezinhos da raça pug que se "apaixonaram à primeira vista" após se conhecerem em um parque, se casaram no domingo em uma cerimônia especial em um pub na Inglaterra.

As tutoras dos animais dizem que Percy está 'loucamente apaixonado' por Mabel desde que se conheceram em uma caminhada, há dois anos, e desde então se tornaram inseparáveis.

Agora, suas tutoras os levaram até o altar em uma cerimônia de casamento planejada especialmente para a ocasião, com a presença de 80 convidados humanos e 30 pugs.

Danii Clarke, de 24 anos, se emocionou ao levar Percy ao altar, no domingo, vestindo um smoking para cães. A jovem também está noiva, mas disse que ou o último ano focada em organizar o casamento no pub com a dona de Mabel, Julie Goodall, de 59 anos.

Percy e Mabel chegaram à festa de casamento no pub The Office em Brighouse, West Yorkshire, em uma BMW conversível, acompanhados do padrinho Arthur e da dama de honra Coco, ambos também da raça pug.

Os noivos foram presenteados com copos de 'paw-secco' efervescente (uma espécie de champanhe para cães) e um bolo especial foi servido aos convidados.

Danii disse ao jornal britânico Daily Mirror que foi um dos dias de maior orgulho de sua vida e que sentiu como se estivesse dando seu filho em casamento. "Estou muito animada por eles, estamos esperando por este dia há muito tempo e estou muito orgulhosa".

"Eu nunca esperei na minha idade dar meu 'filho' em casamento, mas enquanto levava Percy pelo corredor, me senti muito emocionada. E meu cachorro vai se casar antes de mim".

Danii, que trabalha como assistente de ensino, disse que Percy "só tem olhos para Mabel" mesmo quando sai para ear com até 30 pugs. "O amor deles é verdadeiro. Você acha que cachorros experimentariam ficar com qualquer cachorro, mas ele só tem olhos para a Mabel".

Perdendo o juízo

Danii disse que seu companheiro, Tom Grimshaw, de 25 anos, pensou que ela estava perdendo o juízo depois de ter dedicado um ano de sua vida organizando o dia especial.

"Tom acha que sou maluca, mas ele me ama e tem que aguentar. Especialmente depois do ano que tivemos com o lockdown, é uma coisa maravilhosa de acontecer. Tom e eu estamos noivos, então eu deveria estar planejando meu próprio casamento, mas estou planejando o do meu pug".

"Quando eu olho para eles, eu sei que eles estão apaixonados", continuou Julie. "Eles adoram estar perto um do outro. Eles estão loucamente apaixonados e há uma conexão definitiva. Há outros pugs que estão de olho na minha Mabel, mas ela só tem olhos para Percy."