const Timeline = { CATEGORY_COLORS: { political: "var(--color-saffron)", financial: "var(--color-india-green)", regulatory: "#DC3545", legal: "#6F42C1", corporate: "var(--color-ashoka-blue)", media: "var(--text-muted)", }, CATEGORY_ICONS: { political: "🏛", financial: "💰", regulatory: "📋", legal: "⚖", corporate: "🏢", media: "📰", }, render: (containerId, timelineData, convergenceData) => { const el = document.getElementById(containerId); if (!el) return; const events = timelineData?.events || []; const byYear = timelineData?.by_year || {}; const convergences = convergenceData?.convergences || []; if (!events.length) { el.innerHTML = `
No timeline events found for this entity.
`; return; } const years = Object.keys(byYear).sort(); el.innerHTML = `
${Object.entries(Timeline.CATEGORY_COLORS).map(([cat, color]) => ` ${Timeline.CATEGORY_ICONS[cat]||''} ${cat} `).join("")}
${convergences.filter(c=>c.severity==="HIGH").length ? `
⚠ ${convergences.filter(c=>c.severity==="HIGH").length} high-proximity temporal convergences detected
` : ""}
${years.map(year => `
${year.slice(2)}
${year}
${(byYear[year]||[]).map(event => `
${Timeline.CATEGORY_ICONS[event.category]||''} ${sanitize(event.title || "")}
${sanitize(event.detail || '')}
${sanitize(event.date || "")} ${sanitize(event.source || "")}
`).join("")}
`).join("")}
`; }, }; window.Timeline = Timeline;