import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
<%for (let imp in mImports.imports) {
  let components = mImports.imports[imp];%>
import { <% for (let c of components) {%><%-c%>,<%}%> } from '<%-imp%>';
<%}%>
import { <%-ModuleName%>RoutingCoreModule } from './<%-moduleName%>-routing.core.module';
import { <%-ModuleName%>Component } from './<%-moduleName%>.component';

// Import components for each schema
<%_
for (let sch_name in schemaMap) { let schm = schemaMap[sch_name]; let api = schm.api;%>
import { <%-schm.SchemaName%>Component } from './<%-schm.schemaName%>/<%-schm.schemaName%>.component';<%_
  if (api.includes("L")) {%>
import { <%-schm.SchemaName%>ListComponent } from './<%-schm.schemaName%>/<%-schm.schemaName%>-list/<%-schm.schemaName%>-list.component';
import { <%-schm.SchemaName%>ListViewComponent } from './<%-schm.schemaName%>/<%-schm.schemaName%>-list/<%-schm.schemaName%>-list-view.component';
import { <%-schm.SchemaName%>ListCustComponent } from '../<%-moduleName%>-cust/base/<%-schm.schemaName%>/<%-schm.schemaName%>-list.cust.component';<%_ } %><%_
  if (api.includes('L')) { for (const [fileName, CompName] of schm.knownListWidgets) {%>
import { <%-schm.SchemaName%><%-CompName%>Component } from './<%-schm.schemaName%>/<%-schm.schemaName%>-list/<%-schm.schemaName%>-<%-fileName%>.component';<%}
      for (const [fileName, CompName] of schm.knownListViewWidgets) {%>
import { <%-schm.SchemaName%><%-CompName%>Component } from './<%-schm.schemaName%>/<%-schm.schemaName%>-list/<%-schm.schemaName%>-<%-fileName%>.component';<%}
  }%><%_
  if (api.includes("R")) {%>
import { <%-schm.SchemaName%>DetailComponent } from './<%-schm.schemaName%>/<%-schm.schemaName%>-detail/<%-schm.schemaName%>-detail.component';
import { <%-schm.SchemaName%>DetailCustComponent } from '../<%-moduleName%>-cust/base/<%-schm.schemaName%>/<%-schm.schemaName%>-detail.cust.component';<%_
  } %><%_
  if (api.includes('R')) { for (const [fileName, CompName] of schm.knownDetailWidgets) {%>
import { <%-schm.SchemaName%><%-CompName%>Component } from './<%-schm.schemaName%>/<%-schm.schemaName%>-detail/<%-schm.schemaName%>-<%-fileName%>.component';<%} 
  }%><%_
  if (api.includes("R") || api.includes('L')) {%>
import { <%-schm.SchemaName%>DetailFieldComponent } from './<%-schm.schemaName%>/<%-schm.schemaName%>-detail/<%-schm.schemaName%>-detail-field.component';<%_
  } %><%_
  if (api.includes("U") || api.includes("C")) {%>
import { <%-schm.SchemaName%>EditComponent } from './<%-schm.schemaName%>/<%-schm.schemaName%>-edit/<%-schm.schemaName%>-edit.component';
import { <%-schm.SchemaName%>EditCustComponent } from '../<%-moduleName%>-cust/base/<%-schm.schemaName%>/<%-schm.schemaName%>-edit.cust.component';<%_
  } %><%_
} %><%_
validatorFields.forEach(function(element){ %>
import { <%-element.Directive%> } from './<%-element.schemaName%>/<%-element.schemaName%>-edit/<%-element.schemaName%>-edit.component';<%_ }); %>

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
  <%for (let mod of mImports.modules) {%>
    <%-mod%>,
  <%}%>
    <%-ModuleName%>RoutingCoreModule,
  ],
  declarations: [
    <%-ModuleName%>Component,<%_
  for (let sch_name in schemaMap) { let schm = schemaMap[sch_name]; let api = schm.api; %>
    <%-schm.SchemaName%>Component,<%
    if (api.includes("L")) {%>
    <%-schm.SchemaName%>ListComponent,
    <%-schm.SchemaName%>ListViewComponent,
    <%-schm.SchemaName%>ListCustComponent,<%}%><%_
    if (api.includes('L')) { for (const [fileName, CompName] of schm.knownListWidgets) {%>
    <%-schm.SchemaName%><%-CompName%>Component,<%}
      for (const [fileName, CompName] of schm.knownListViewWidgets) {%>
    <%-schm.SchemaName%><%-CompName%>Component,<%}
    }%><%
    if (api.includes("R")) {%>
    <%-schm.SchemaName%>DetailCustComponent,
    <%-schm.SchemaName%>DetailComponent,<%}%><%_
    if (api.includes('R')) { for (const [fileName, CompName] of schm.knownDetailWidgets) {%>
    <%-schm.SchemaName%><%-CompName%>Component,<%} }%><%
    if (api.includes("R") || api.includes('L')) {%>
    <%-schm.SchemaName%>DetailFieldComponent,<%_ } %><%
    if (api.includes("U") || api.includes("C")) {%>
    <%-schm.SchemaName%>EditComponent,
    <%-schm.SchemaName%>EditCustComponent,<%}%><%
  }%>
  ],
  exports: [
    <%-ModuleName%>Component,<%_
  for (let sch_name in schemaMap) { let schm = schemaMap[sch_name]; let api = schm.api; %><%_
    if (api.includes('L')) { for (const [fileName, CompName] of schm.knownListWidgets) {%>
    <%-schm.SchemaName%><%-CompName%>Component,<%} }%><%
    if (api.includes("R")) { for (const [fileName, CompName] of schm.knownDetailWidgets) {%>
    <%-schm.SchemaName%><%-CompName%>Component,<%} }%><%
    if (api.includes("R") || api.includes('L')) {%>
    <%-schm.SchemaName%>DetailFieldComponent,<%_ } %><%
    if (api.includes("U") || api.includes("C")) {%>
    <%-schm.SchemaName%>EditComponent,<%}%><%_ }%><%_
    validatorFields.forEach(function(element){ %>
    <%-element.Directive%>,<%_ }); %>
  ],
  providers: [<%- 
    include(`/ui/${uiFramework}/${uiDesign}/main.core.module.include.ts`, {part: 'module_provider'});
    %>
  ],
  entryComponents: [<%_
  if (mFeatures.hasRef) {
    referenceSchemas.forEach(function(reference){ let Ref = reference.Ref; let api = reference.api; 
    %><% 
    if (api.includes("L")) {%>
    <%-Ref%>ListSelectComponent,<%}%><%
    if (api.includes("R")) {%>
    <%-Ref%>DetailPopComponent,<%}%><%_ }); %><%_}%><%
  for (let sch_name in schemaMap) { let schm = schemaMap[sch_name]; let api = schm.api;%><%
    if (api.includes("R")) { for (const widget of schm.detailExtraWidgets) {%>
    <%-schm.SchemaName%>DetailWidget<%-widget%>Component,<%} }%><%
    if (api.includes("C") ) {%>
    <%-schm.SchemaName%>EditComponent,<%}%><%}%>
  ]
})
export class <%-ModuleName%>CoreModule { }
