import { Component, Injector, ViewEncapsulation } from '@angular/core';
import { UserDefinedExecutionContext } from '@wm/core';
import { BaseLayoutComponent } from '@wm/runtime/base';
import { expressionData } from './{{name}}.component.expressions';
import { CommonModule as NgCommonModule } from '@angular/common';
import { RouterOutletDirective } from '@wm/components/page';
import { RouterModule } from '@angular/router';
{{WMComponentsImportStmts requiredWMComponents}}

{{PartialModuleImportStmts requiredPartials}}

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

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


@Component({
    selector: 'app-page-{{name}}',
    templateUrl: './{{name}}.component.html',
    encapsulation: ViewEncapsulation.None,
    providers: [
        {
            provide: UserDefinedExecutionContext,
            useExisting: {{componentName}}
        }
    ],
    standalone: true,
    imports: [
        ...requiredComponentModules,
        ...requiredPartialModules,
        NgCommonModule,
        RouterModule
    ],
    {{#if hasCustomElement}}
    schemas: [CUSTOM_ELEMENTS_SCHEMA],
    {{/if}}
})
export class {{componentName}} extends BaseLayoutComponent {
    layoutName = '{{name}}';
    layoutPages = {{layoutPages}};

    constructor(public injector: Injector) {
        super();
        super.init();
    }

    getExpressions() {
        return expressionData;
    }
}
