{"version":3,"sources":["webpack:///src/app/routes/home/home.routes.ts","webpack:///src/app/routes/home/shared/home.service.ts","webpack:///src/app/routes/home/home.module.ts"],"names":["routing","forChild","path","component","data","title","HomeService","fb","model","defaultRequired","formModel","Object","keys","forEach","key","Array","isArray","this","formGroupCreate","formArray","item","push","array","required","group","HomeModule","ngModule","providers"],"mappings":"gMAKA,MAQaA,EAAoC,IAAaC,SARvC,CACrB,CACEC,KAAM,GACNC,UAAW,IACXC,KAAM,CAAEC,MAAO,gB,4BCLZ,IAAD,Q,MAAOC,EACX,YAAoBC,GAAA,KAAAA,KAOb,gBAAgBC,EAAYC,GAAkB,GAEnD,MAAMC,EAAiB,GAiBvB,OAfAC,OAAOC,KAAKJ,GAAOK,QAAQC,IAEzB,GAAIN,EAAMM,IAA8B,iBAAfN,EAAMM,KAAsBC,MAAMC,QAAQR,EAAMM,IACvEJ,EAAUI,GAAOG,KAAKC,gBAAgBV,EAAMM,SACvC,GAAIN,EAAMM,IAA8B,iBAAfN,EAAMM,IAAqBC,MAAMC,QAAQR,EAAMM,IAAO,CAEpF,MAAMK,EAAmB,GACzBX,EAAMM,GAAKD,QAASO,GAAcD,EAAUE,KAAKJ,KAAKC,gBAAgBE,KACtEV,EAAUI,GAAOG,KAAKV,GAAGe,MAAMH,QAG/BT,EAAUI,GAAOL,EAAkB,CAAC,KAAM,CAAC,IAAWc,WAAa,CAAC,KAAM,MAIvEN,KAAKV,GAAGiB,MAAMd,I,6CA3BZJ,GAAW,Y,yBAAXA,EAAW,QAAXA,EAAW,Y,GAAlB,GCaA,Q,MAAOmB,EACX,iBACE,MAAO,CACLC,SAAUD,EACVE,UAAW,K,6CAJJF,I,uBAAAA,I,4BAJA,CAAC,GAAY,SAFf,CAAC,IAAc,IAAYzB,M,GAMhC","file":"x","sourcesContent":["import { ModuleWithProviders } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { HomeComponent } from './routes/home/home.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: HomeComponent,\r\n data: { title: 'Milestone' },\r\n },\r\n];\r\n\r\nexport const routing: ModuleWithProviders = RouterModule.forChild(routes);\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class HomeService {\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**\r\n * Automatically generate a form group complete with controls. Will recurse through nested objects/arrays.\r\n * @param model - An object or JSON of the model. Can contain nested objects and arrays\r\n * @param defaultRequired - Should all fields be required. Default is false\r\n */\r\n public formGroupCreate(model: any, defaultRequired = false): FormGroup {\r\n // console.log(this.fb, defaultRequired)\r\n const formModel: any = {};\r\n // Loop through all props in the model\r\n Object.keys(model).forEach(key => {\r\n // If this is a nested object, recurse to create form group\r\n if (model[key] && typeof model[key] === 'object' && !Array.isArray(model[key])) {\r\n formModel[key] = this.formGroupCreate(model[key]);\r\n } else if (model[key] && typeof model[key] === 'object' && Array.isArray(model[key])) {\r\n // If this is an array, recurse to create a form array\r\n const formArray: any[] = [];\r\n model[key].forEach((item: any) => formArray.push(this.formGroupCreate(item)));\r\n formModel[key] = this.fb.array(formArray);\r\n } else {\r\n // Standard value\r\n formModel[key] = defaultRequired ? [null, [Validators.required]] : [null, []];\r\n }\r\n });\r\n\r\n return this.fb.group(formModel);\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SiteModule } from '$site'; // Site modules\r\n\r\n// Home component and routing\r\nimport { routing } from './home.routes';\r\nimport { HomeComponent } from './routes/home/home.component';\r\nimport { HomeService } from './shared/home.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule, SiteModule, routing],\r\n declarations: [HomeComponent],\r\n providers: [HomeService],\r\n exports: [],\r\n entryComponents: [],\r\n})\r\nexport class HomeModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: HomeModule,\r\n providers: [],\r\n };\r\n }\r\n}\r\n"]}