60 lines
No EOL
2.2 KiB
JavaScript
60 lines
No EOL
2.2 KiB
JavaScript
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
|