Preview em tempo real
`; } // ============================================================ // GENERATE CARD HTML — MODEL 2 // ============================================================ function generateModel2(s, p, isPreview) { const ytVidId = getYouTubeId(s.video); const ytMusId = getYouTubeId(s.musica); const mp4Video = isMP4(s.video); const cnt = calcCounter(s.data); const photos = s.photos.filter(ph => ph.url); const videoHeroReal = ytVidId ? `` : mp4Video ? `` : `
`; const videoHeroPlaceholder = (ytVidId || mp4Video) ? `
🎬
` : `
`; const videoHero = isPreview ? videoHeroPlaceholder : videoHeroReal; const photosCarousel = photos.length > 0 ? ` ` : ''; const timelineBlock = s.marcos.map(m => `
${m.emoji}
${m.titulo}
`).join(''); const counterBlock = s.data ? `
Juntos há
${cnt.anos > 0 ? `
${String(cnt.anos).padStart(2,'0')}${cnt.anos===1?'ano':'anos'}
:` : ''}
${String(cnt.meses).padStart(2,'0')}${cnt.meses===1?'mês':'meses'}
:
${String(cnt.dias).padStart(2,'0')}${cnt.dias===1?'dia':'dias'}
` : ''; return ` Para ${s.nome || 'Você'} 🎬
${s.nome || 'Para Você'}
✦ Toque para revelar ✦
${videoHero}
${s.nome || ''}
${s.subtitulo?`
${s.subtitulo}
`:''}
${photos.length > 0 ? `` : ''} ${s.mensagem ? `
${s.assinatura?`
${s.assinatura}
`:''}
` : ''} ${ytMusId ? `
♫ Nossa Música
${s.assinatura || '...'}
${isPreview ? '
▶ Música carregada no cartão final
' : ''}
` : ''}
Nossa História
${timelineBlock}
${s.data ? `
${counterBlock}
` : ''}
Compartilhe esse momento ❤️

Esta memória foi feita especialmente para você