import { EventManager } from '../managers/EventManager'; import { EventRenderingService } from '../renderers/EventRendererManager'; import { GridManager } from '../managers/GridManager'; import { ScrollManager } from '../managers/ScrollManager'; import { NavigationManager } from '../managers/NavigationManager'; import { ViewManager } from '../managers/ViewManager'; import { CalendarManager } from '../managers/CalendarManager'; import { DragDropManager } from '../managers/DragDropManager'; import { AllDayManager } from '../managers/AllDayManager'; /** * Factory for creating and managing calendar managers with proper dependency injection */ export class ManagerFactory { constructor() { } static getInstance() { if (!ManagerFactory.instance) { ManagerFactory.instance = new ManagerFactory(); } return ManagerFactory.instance; } /** * Create all managers with proper dependency injection */ createManagers(eventBus) { // Create managers in dependency order const eventManager = new EventManager(eventBus); const eventRenderer = new EventRenderingService(eventBus, eventManager); const gridManager = new GridManager(); const scrollManager = new ScrollManager(); const navigationManager = new NavigationManager(eventBus, eventRenderer); const viewManager = new ViewManager(eventBus); const dragDropManager = new DragDropManager(eventBus); const allDayManager = new AllDayManager(); // CalendarManager depends on all other managers const calendarManager = new CalendarManager(eventBus, eventManager, gridManager, eventRenderer, scrollManager); return { eventManager, eventRenderer, gridManager, scrollManager, navigationManager, viewManager, calendarManager, dragDropManager, allDayManager }; } /** * Initialize all managers in the correct order */ async initializeManagers(managers) { try { await managers.calendarManager.initialize?.(); } catch (error) { throw error; } } } //# sourceMappingURL=ManagerFactory.js.map