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

Marido de Ivete Sangalo sobre primeira noite juntos: 'Aquele rala e rola'

Daniel Cady e Ivete Sangalo no início do relacionamento e quando ela estava grávida das gêmeas, em dezembro de 2017 - Reprodução/Instagram
Daniel Cady e Ivete Sangalo no início do relacionamento e quando ela estava grávida das gêmeas, em dezembro de 2017 Imagem: Reprodução/Instagram

Colaboração para Splash, de São Paulo

31/05/2022 08h02Atualizada em 31/05/2022 11h22

Em entrevista ao podcast Bahiacast, Daniel Cady, 36 anos, contou detalhes de sua primeira noite com a esposa, Ivete Sangalo, 50 anos. Juntos há 14 anos, a relação começou no campo profissional e logo evoluiu para o nível pessoal.

"Ivete me ligou e perguntou: 'Vai fazer o que hoje? Vamos assistir a um filme, não sei o quê'. Quando ela abriu a porta, eu olhei para ela e ela olhou para mim, aí eu falei: 'não é possível, dane-se trabalho, dane-se qualquer coisa'", começou o nutricionista.

Com a troca de olhares, o casal se entendeu e o filme ficou para depois. "Abracei ela e foi aquele rala e rola, se beijando, já caindo por cima do sofá. Rolou um vinho depois e ficamos abraçados. Nunca tinha rolado isso comigo, nunca tinha rolado com nenhuma mulher esse nível de ligação", continuou.

Daniel Cady cuidava da alimentação de Ivete Sangalo na época. Sendo assim, era responsável por fazer as compras do mercado e treinar a cozinheira da famosa para preparar suas refeições saudáveis.

Hoje, relembrando o início, o marido da cantora e pai de seus três filhos — Marcelo, Helena e Marina — lembra do momento com carinho e dá risada. "Eu ficava olhando para a cara dela e pensando: 'que doideira, né?'. E ela dando risada. Eu nem acreditei", finalizou.

No final do ano ado, Daniel chegou a esclarecer uma suposta crise no relacionamento com Ivete. No podcast, ele também contou sobre os tipos de assédio que recebe das pessoas por ser casado com a artista.

"Nunca fui muito assediado. O que acontece é o seguinte, muita gente tentava chegar em Ivete através de mim. Meu irmão, o que já apareceu de gente me propondo mil coisas. Só sou muito assediado nesse sentido, de pessoas interesseiras que querem me usar. Graças a Deus nunca caí nesses contos, porque sou muito desconfiado", disse.

Confira a entrevista completa: