import { Container } from '@novadi/core'; import { IGroupingRenderer } from './core/IGroupingRenderer'; import { IGroupingStore } from './core/IGroupingStore'; import { DateRenderer } from './features/date/DateRenderer'; import { DateService } from './core/DateService'; import { ITimeFormatConfig } from './core/ITimeFormatConfig'; import { ResourceRenderer } from './features/resource/ResourceRenderer'; import { TeamRenderer } from './features/team/TeamRenderer'; import { CalendarOrchestrator } from './core/CalendarOrchestrator'; import { TimeAxisRenderer } from './features/timeaxis/TimeAxisRenderer'; import { ScrollManager } from './core/ScrollManager'; import { HeaderDrawerManager } from './core/HeaderDrawerManager'; import { MockTeamStore, MockResourceStore } from './demo/MockStores'; import { DemoApp } from './demo/DemoApp'; // Event system import { EventBus } from './core/EventBus'; import { IEventBus, ICalendarEvent, ISync } from './types/CalendarTypes'; // Storage import { IndexedDBContext } from './storage/IndexedDBContext'; import { IStore } from './storage/IStore'; import { IEntityService } from './storage/IEntityService'; import { EventStore } from './storage/events/EventStore'; import { EventService } from './storage/events/EventService'; // Repositories import { IApiRepository } from './repositories/IApiRepository'; import { MockEventRepository } from './repositories/MockEventRepository'; // Workers import { DataSeeder } from './workers/DataSeeder'; // Features import { EventRenderer } from './features/event/EventRenderer'; const defaultTimeFormatConfig: ITimeFormatConfig = { timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, use24HourFormat: true, locale: 'da-DK', dateFormat: 'locale', showSeconds: false }; export function createV2Container(): Container { const container = new Container(); const builder = container.builder(); // Config builder.registerInstance(defaultTimeFormatConfig).as(); // Core - EventBus builder.registerType(EventBus).as(); builder.registerType(EventBus).as(); // Services builder.registerType(DateService).as(); // Storage infrastructure builder.registerType(IndexedDBContext).as(); builder.registerType(EventStore).as(); // Entity services builder.registerType(EventService).as>(); builder.registerType(EventService).as>(); builder.registerType(EventService).as(); // Repositories builder.registerType(MockEventRepository).as>(); builder.registerType(MockEventRepository).as>(); // Workers builder.registerType(DataSeeder).as(); // Features builder.registerType(EventRenderer).as(); // Renderers - registreres som IGroupingRenderer (array injection til CalendarOrchestrator) builder.registerType(DateRenderer).as(); builder.registerType(ResourceRenderer).as(); builder.registerType(TeamRenderer).as(); // Stores - registreres som IGroupingStore builder.registerType(MockTeamStore).as(); builder.registerType(MockResourceStore).as(); // CalendarOrchestrator modtager IGroupingStore[] automatisk (array injection) builder.registerType(CalendarOrchestrator).as(); builder.registerType(TimeAxisRenderer).as(); builder.registerType(ScrollManager).as(); builder.registerType(HeaderDrawerManager).as(); // Demo app builder.registerType(DemoApp).as(); return builder.build(); }