import { inject, NgModule } from '@angular/core';
import { CommonModule as NgCommonModule, APP_BASE_HREF } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';

import { RuntimeBaseModule, CanDeactivateNgPageGuard } from '@wm/runtime/base';
{{WMComponentsImportStmts requiredWMComponents}}
{{WMCustomComponentsImportStmts requireCustomComponents}}
 {{#if
    requireCustomComponents}}
import { initCustomWidgetConfig } from '../../customwidgets/customwidget-config';
initCustomWidgetConfig();
{{/if}}

import { AppCodeGenModule } from '../../app-codegen.module';

{{PartialModuleImportStmts requiredPartials}}

import { {{componentName}} } from './{{name}}.component';

const components = [{{componentName}}];

const routes: Routes = [
    {
        path: '',
        component: {{componentName}},
        canDeactivate: [(component, currentRoute, currentState, nextState) => inject(CanDeactivateNgPageGuard).canDeactivate(component, currentRoute, currentState, nextState)]
    }
];

const requiredComponentModules = [
    {{WMComponentModuleStmts requiredWMComponents}}
];

const requiredCustomWidgetComponents= [
    {{WMCustomComponentStmts requireCustomComponents}}
]

const requiredPartialModules: any[] = [
    {{PartialModuleStmts requiredPartials}}
];

@NgModule({
    declarations: components,
    imports: [
        ...requiredComponentModules,
        ...requiredPartialModules,
        ...requiredCustomWidgetComponents,
        RouterModule.forChild(routes),
        NgCommonModule,
        AppCodeGenModule,
        RuntimeBaseModule
    ],
    {{#if hasCustomElement}}
    schemas: [CUSTOM_ELEMENTS_SCHEMA],
    {{/if}}
    exports: components
})
export class {{moduleName}} {

}

