WIP on master

This commit is contained in:
Janus C. H. Knudsen 2025-11-03 14:54:57 +01:00
parent b6ab1ff50e
commit 80aaab46f2
25 changed files with 6291 additions and 927 deletions

View file

@ -21,6 +21,10 @@ import { DragHoverManager } from './managers/DragHoverManager';
import { HeaderManager } from './managers/HeaderManager';
import { ConfigManager } from './managers/ConfigManager';
// Import repositories
import { IEventRepository } from './repositories/IEventRepository';
import { MockEventRepository } from './repositories/MockEventRepository';
// Import renderers
import { DateHeaderRenderer, type IHeaderRenderer } from './renderers/DateHeaderRenderer';
import { DateColumnRenderer, type ColumnRenderer } from './renderers/ColumnRenderer';
@ -35,7 +39,6 @@ import { TimeFormatter } from './utils/TimeFormatter';
import { PositionUtils } from './utils/PositionUtils';
import { AllDayLayoutEngine } from './utils/AllDayLayoutEngine';
import { WorkHoursManager } from './managers/WorkHoursManager';
import { GridStyleManager } from './renderers/GridStyleManager';
import { EventStackManager } from './managers/EventStackManager';
import { EventLayoutCoordinator } from './managers/EventLayoutCoordinator';
@ -81,50 +84,53 @@ async function initializeCalendar(): Promise<void> {
builder.registerInstance(CalendarConfig).as<CalendarConfig>();
// Register ConfigManager for event-driven config updates
builder.registerType(ConfigManager).as<ConfigManager>().singleInstance();
builder.registerType(ConfigManager).as<ConfigManager>();
// Bind core services as instances
builder.registerInstance(eventBus).as<IEventBus>();
// Register repositories
builder.registerType(MockEventRepository).as<IEventRepository>();
// Register renderers
builder.registerType(DateHeaderRenderer).as<IHeaderRenderer>().singleInstance();
builder.registerType(DateColumnRenderer).as<ColumnRenderer>().singleInstance();
builder.registerType(DateEventRenderer).as<IEventRenderer>().singleInstance();
builder.registerType(DateHeaderRenderer).as<IHeaderRenderer>();
builder.registerType(DateColumnRenderer).as<ColumnRenderer>();
builder.registerType(DateEventRenderer).as<IEventRenderer>();
// Register core services and utilities
builder.registerType(DateService).as<DateService>().singleInstance();
builder.registerType(EventStackManager).as<EventStackManager>().singleInstance();
builder.registerType(EventLayoutCoordinator).as<EventLayoutCoordinator>().singleInstance();
builder.registerType(GridStyleManager).as<GridStyleManager>().singleInstance();
builder.registerType(WorkHoursManager).as<WorkHoursManager>().singleInstance();
builder.registerType(URLManager).as<URLManager>().singleInstance();
builder.registerType(TimeFormatter).as<TimeFormatter>().singleInstance();
builder.registerType(PositionUtils).as<PositionUtils>().singleInstance();
builder.registerType(DateService).as<DateService>();
builder.registerType(EventStackManager).as<EventStackManager>();
builder.registerType(EventLayoutCoordinator).as<EventLayoutCoordinator>();
builder.registerType(WorkHoursManager).as<WorkHoursManager>();
builder.registerType(URLManager).as<URLManager>();
builder.registerType(TimeFormatter).as<TimeFormatter>();
builder.registerType(PositionUtils).as<PositionUtils>();
// Note: AllDayLayoutEngine is instantiated per-operation with specific dates, not a singleton
builder.registerType(NavigationRenderer).as<NavigationRenderer>().singleInstance();
builder.registerType(AllDayEventRenderer).as<AllDayEventRenderer>().singleInstance();
builder.registerType(NavigationRenderer).as<NavigationRenderer>();
builder.registerType(AllDayEventRenderer).as<AllDayEventRenderer>();
builder.registerType(EventRenderingService).as<EventRenderingService>().singleInstance();
builder.registerType(GridRenderer).as<GridRenderer>().singleInstance();
builder.registerType(GridManager).as<GridManager>().singleInstance();
builder.registerType(ScrollManager).as<ScrollManager>().singleInstance();
builder.registerType(NavigationManager).as<NavigationManager>().singleInstance();
builder.registerType(ViewManager).as<ViewManager>().singleInstance();
builder.registerType(DragDropManager).as<DragDropManager>().singleInstance();
builder.registerType(AllDayManager).as<AllDayManager>().singleInstance();
builder.registerType(ResizeHandleManager).as<ResizeHandleManager>().singleInstance();
builder.registerType(EdgeScrollManager).as<EdgeScrollManager>().singleInstance();
builder.registerType(DragHoverManager).as<DragHoverManager>().singleInstance();
builder.registerType(HeaderManager).as<HeaderManager>().singleInstance();
builder.registerType(CalendarManager).as<CalendarManager>().singleInstance();
builder.registerType(EventRenderingService).as<EventRenderingService>();
builder.registerType(GridRenderer).as<GridRenderer>();
builder.registerType(GridManager).as<GridManager>();
builder.registerType(ScrollManager).as<ScrollManager>();
builder.registerType(NavigationManager).as<NavigationManager>();
builder.registerType(ViewManager).as<ViewManager>();
builder.registerType(DragDropManager).as<DragDropManager>();
builder.registerType(AllDayManager).as<AllDayManager>();
builder.registerType(ResizeHandleManager).as<ResizeHandleManager>();
builder.registerType(EdgeScrollManager).as<EdgeScrollManager>();
builder.registerType(DragHoverManager).as<DragHoverManager>();
builder.registerType(HeaderManager).as<HeaderManager>();
builder.registerType(CalendarManager).as<CalendarManager>();
builder.registerType(EventManager).as<EventManager>().singleInstance();
builder.registerType(EventManager).as<EventManager>();
// Build the container
const app = builder.build();
// Get managers from container
const eb = app.resolveType<IEventBus>();
const configManager = app.resolveType<ConfigManager>();
const calendarManager = app.resolveType<CalendarManager>();
const eventManager = app.resolveType<EventManager>();
const resizeHandleManager = app.resolveType<ResizeHandleManager>();
@ -137,6 +143,9 @@ async function initializeCalendar(): Promise<void> {
const allDayManager = app.resolveType<AllDayManager>();
const urlManager = app.resolveType<URLManager>();
// Initialize CSS variables before any rendering
configManager.initialize();
// Initialize managers
await calendarManager.initialize?.();
await resizeHandleManager.initialize?.();