Updates build config and removes unused dependencies
Migrates from Brandi DI to @novadi/core dependency injection Simplifies project structure by removing deprecated modules Adds Novadi unplugin to esbuild configuration for enhanced build process
This commit is contained in:
parent
a80e4a7603
commit
10cb3792f4
17 changed files with 531 additions and 2016 deletions
101
src/index.ts
101
src/index.ts
|
|
@ -1,11 +1,30 @@
|
|||
// Main entry point for Calendar Plantempus
|
||||
import { Container } from '@novadi/core';
|
||||
import { eventBus } from './core/EventBus';
|
||||
import { calendarConfig } from './core/CalendarConfig';
|
||||
import { CalendarTypeFactory } from './factories/CalendarTypeFactory';
|
||||
import { createContainer } from './di/container';
|
||||
import { TOKENS } from './di/tokens';
|
||||
import { URLManager } from './utils/URLManager';
|
||||
import { IEventBus } from './types/CalendarTypes';
|
||||
|
||||
// Import all managers
|
||||
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';
|
||||
import { ResizeHandleManager } from './managers/ResizeHandleManager';
|
||||
import { EdgeScrollManager } from './managers/EdgeScrollManager';
|
||||
import { DragHoverManager } from './managers/DragHoverManager';
|
||||
import { HeaderManager } from './managers/HeaderManager';
|
||||
|
||||
// Import renderers
|
||||
import { DateHeaderRenderer, type HeaderRenderer } from './renderers/HeaderRenderer';
|
||||
import { DateColumnRenderer, type ColumnRenderer } from './renderers/ColumnRenderer';
|
||||
import { DateEventRenderer, type EventRendererStrategy } from './renderers/EventRenderer';
|
||||
import { GridRenderer } from './renderers/GridRenderer';
|
||||
|
||||
/**
|
||||
* Handle deep linking functionality after managers are initialized
|
||||
|
|
@ -32,33 +51,73 @@ async function handleDeepLinking(eventManager: EventManager): Promise<void> {
|
|||
}
|
||||
|
||||
/**
|
||||
* Initialize the calendar application using Brandi DI
|
||||
* Initialize the calendar application using NovaDI
|
||||
*/
|
||||
async function initializeCalendar(): Promise<void> {
|
||||
try {
|
||||
// Use the singleton calendar configuration
|
||||
const config = calendarConfig;
|
||||
|
||||
// Initialize the CalendarTypeFactory before creating managers
|
||||
CalendarTypeFactory.initialize();
|
||||
|
||||
// Create Brandi DI container (all managers instantiated here)
|
||||
const container = createContainer();
|
||||
// Create NovaDI container
|
||||
const container = new Container();
|
||||
const builder = container.builder();
|
||||
|
||||
// Enable debug mode for development
|
||||
eventBus.setDebug(true);
|
||||
|
||||
// Bind core services as instances
|
||||
builder.registerInstance(eventBus).as<IEventBus>();
|
||||
|
||||
// Determine calendar mode and bind appropriate renderers
|
||||
const calendarMode = calendarConfig.getCalendarMode();
|
||||
console.log('🔧 DI Container: Calendar mode detected:', calendarMode);
|
||||
|
||||
if (calendarMode === 'resource') {
|
||||
// Resource mode renderers
|
||||
console.log('🔧 DI Container: Binding DateHeaderRenderer for resource mode (TEST)');
|
||||
builder.registerInstance(new DateHeaderRenderer()).as<HeaderRenderer>();
|
||||
builder.registerInstance(new DateColumnRenderer()).as<ColumnRenderer>();
|
||||
builder.registerInstance(new DateEventRenderer()).as<EventRendererStrategy>();
|
||||
} else {
|
||||
// Date mode renderers (default)
|
||||
console.log('🔧 DI Container: Binding DateHeaderRenderer for date mode');
|
||||
builder.registerInstance(new DateHeaderRenderer()).as<HeaderRenderer>();
|
||||
builder.registerInstance(new DateColumnRenderer()).as<ColumnRenderer>();
|
||||
builder.registerInstance(new DateEventRenderer()).as<EventRendererStrategy>();
|
||||
}
|
||||
|
||||
|
||||
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(EventManager).as<EventManager>().singleInstance();
|
||||
|
||||
// Build the container
|
||||
const app = builder.build();
|
||||
|
||||
// Get managers from container
|
||||
const calendarManager = container.get(TOKENS.calendarManager);
|
||||
const eventManager = container.get(TOKENS.eventManager);
|
||||
const resizeHandleManager = container.get(TOKENS.resizeHandleManager);
|
||||
const headerManager = container.get(TOKENS.headerManager);
|
||||
const dragDropManager = container.get(TOKENS.dragDropManager);
|
||||
const viewManager = container.get(TOKENS.viewManager);
|
||||
const navigationManager = container.get(TOKENS.navigationManager);
|
||||
const edgeScrollManager = container.get(TOKENS.edgeScrollManager);
|
||||
const dragHoverManager = container.get(TOKENS.dragHoverManager);
|
||||
const allDayManager = container.get(TOKENS.allDayManager);
|
||||
const eb = app.resolveType<IEventBus>();
|
||||
const calendarManager = app.resolveType<CalendarManager>();
|
||||
const eventManager = app.resolveType<EventManager>();
|
||||
const resizeHandleManager = app.resolveType<ResizeHandleManager>();
|
||||
const headerManager = app.resolveType<HeaderManager>();
|
||||
const dragDropManager = app.resolveType<DragDropManager>();
|
||||
const viewManager = app.resolveType<ViewManager>();
|
||||
const navigationManager = app.resolveType<NavigationManager>();
|
||||
const edgeScrollManager = app.resolveType<EdgeScrollManager>();
|
||||
const dragHoverManager = app.resolveType<DragHoverManager>();
|
||||
const allDayManager = app.resolveType<AllDayManager>();
|
||||
|
||||
// Initialize managers
|
||||
await calendarManager.initialize?.();
|
||||
|
|
@ -71,13 +130,13 @@ async function initializeCalendar(): Promise<void> {
|
|||
(window as Window & {
|
||||
calendarDebug?: {
|
||||
eventBus: typeof eventBus;
|
||||
container: typeof container;
|
||||
app: typeof app;
|
||||
calendarManager: typeof calendarManager;
|
||||
eventManager: typeof eventManager;
|
||||
};
|
||||
}).calendarDebug = {
|
||||
eventBus,
|
||||
container,
|
||||
app,
|
||||
calendarManager,
|
||||
eventManager,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue