import { CoreEvents } from '../constants/CoreEvents'; /** * NavigationRenderer - Handles DOM rendering for navigation containers * Separated from NavigationManager to follow Single Responsibility Principle */ export class NavigationRenderer { constructor(eventBus, eventRenderer) { this.eventBus = eventBus; this.setupEventListeners(); } /** * Setup event listeners for DOM updates */ setupEventListeners() { this.eventBus.on(CoreEvents.PERIOD_INFO_UPDATE, (event) => { const customEvent = event; const { weekNumber, dateRange } = customEvent.detail; this.updateWeekInfoInDOM(weekNumber, dateRange); }); } updateWeekInfoInDOM(weekNumber, dateRange) { const weekNumberElement = document.querySelector('swp-week-number'); const dateRangeElement = document.querySelector('swp-date-range'); if (weekNumberElement) { weekNumberElement.textContent = `Week ${weekNumber}`; } if (dateRangeElement) { dateRangeElement.textContent = dateRange; } } /** * Apply filter state to pre-rendered grids */ applyFilterToPreRenderedGrids(filterState) { // Find all grid containers (including pre-rendered ones) const allGridContainers = document.querySelectorAll('swp-grid-container'); allGridContainers.forEach(container => { const eventsLayers = container.querySelectorAll('swp-events-layer'); eventsLayers.forEach(layer => { if (filterState.active) { // Apply filter active state layer.setAttribute('data-filter-active', 'true'); // Mark matching events in this layer const events = layer.querySelectorAll('swp-event'); events.forEach(event => { const eventId = event.getAttribute('data-event-id'); if (eventId && filterState.matchingIds.includes(eventId)) { event.setAttribute('data-matches', 'true'); } else { event.removeAttribute('data-matches'); } }); } else { // Remove filter state layer.removeAttribute('data-filter-active'); // Remove all match attributes const events = layer.querySelectorAll('swp-event'); events.forEach(event => { event.removeAttribute('data-matches'); }); } }); }); } } //# sourceMappingURL=NavigationRenderer.js.map