/** * Hydrate #lead section from live Pulse /api/articles?limit=1 * Syncs read-aloud voice when article edition changes. */ (function () { var section = document.getElementById('lead'); if (!section) return; var headline = section.querySelector('.lead-headline'); var deck = section.querySelector('.lead-deck'); var byline = section.querySelector('.lead-byline'); var flag = section.querySelector('.lead-flag'); var body = section.querySelector('.article-text'); var readBtn = section.querySelector('button[onclick*="vbSpeak"]'); function esc(s) { return String(s || '') .replace(/&/g, '&') .replace(//g, '>'); } function formatDate(iso) { if (!iso) return ''; try { return new Date(iso).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', }); } catch (_) { return ''; } } function syncLeadVoice(art) { if (!art || !window.GMIIEVoiceSync) return; var scripts = window.GMIIEVoiceSync.getScripts(); if (scripts.lead && scripts.lead.article_id === art.id) return; window.GMIIEVoiceSync.refresh(); } function hydrateArticle(art) { if (!art) return; if (headline) headline.textContent = art.title || headline.textContent; if (deck && art.summary) deck.textContent = art.summary.slice(0, 420); if (flag) { var desk = (art.desk || 'markets').replace(/-/g, ' '); flag.textContent = 'Lead Analysis — ' + desk.replace(/\b\w/g, function (c) { return c.toUpperCase(); }); } if (byline) { var author = (art.footer && art.footer.author_name) || art.author_id || 'GMIIE Intelligence Desk'; var date = formatDate(art.published_at); var signal = art.signal != null ? ' — Signal ' + art.signal + '/100' : ''; var badge = art.footer && art.footer.badge ? ' — ' + art.footer.badge : ''; byline.textContent = author + (date ? ' — ' + date : '') + signal + badge; } if (body && art.summary && art.summary.length > 120) { var paras = art.summary.split(/\n\n+/).filter(Boolean); if (paras.length) { body.innerHTML = paras .slice(0, 4) .map(function (p) { return '

' + esc(p) + '

'; }) .join(''); } } if (readBtn && art.title) { readBtn.setAttribute('aria-label', 'Read aloud: ' + art.title); readBtn.setAttribute('data-voice-article-id', art.id || ''); } section.setAttribute('data-lead-hydrated', '1'); section.setAttribute('data-lead-article-id', art.id || ''); if (art.sha256) section.setAttribute('data-lead-sha256', art.sha256); syncLeadVoice(art); } fetch('/api/articles?limit=1', { cache: 'no-store', signal: AbortSignal.timeout(12000) }) .then(function (r) { return r.ok ? r.json() : null; }) .then(function (data) { hydrateArticle(data && data.articles && data.articles[0]); }) .catch(function () { section.setAttribute('data-lead-hydrated', 'static-fallback'); }); window.addEventListener('gmiie-voice-updated', function () { var artId = section.getAttribute('data-lead-article-id'); var scripts = window.GMIIEVoiceSync && window.GMIIEVoiceSync.getScripts(); if (scripts && scripts.lead && scripts.lead.article_id && artId && scripts.lead.article_id !== artId) { fetch('/api/articles?limit=1', { cache: 'no-store' }) .then(function (r) { return r.ok ? r.json() : null; }) .then(function (data) { hydrateArticle(data && data.articles && data.articles[0]); }); } }); })();