{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./blogapp/app/app.component.ts","./blogapp/app/app.component.html","./blogapp/app/app.module.ts","./blogapp/app/blog/blog.component.ts","./blogapp/app/blog/blog.component.html","./blogapp/app/blog/blogList.component.ts","./blogapp/app/blog/blogList.component.html","./blogapp/app/blog/newBlog.component.ts","./blogapp/app/blog/newBlog.component.html","./blogapp/app/login/login.component.ts","./blogapp/app/login/login.component.html","./blogapp/environments/environment.ts","./blogapp/main.ts","./blogapp/shared/blogEntry.ts","./blogapp/shared/dataService.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { Component } from '@angular/core';\r\nimport { DataService } from '../shared/dataService';\r\nimport { BlogEntry } from '../shared/blogEntry';\r\n\r\n@Component({\r\n selector: 'blog-app',\r\n templateUrl: \"./app.component.html\",\r\n styles: []\r\n})\r\nexport class AppComponent {\r\n constructor(private data: DataService) {\r\n\r\n }\r\n\r\n title = 'Blog';\r\n\r\n public blogEntry: BlogEntry = new BlogEntry();\r\n}\r\n","\r\n\r\n","import { FormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { BlogListComponent } from './blog/blogList.component';\r\nimport { BlogComponent } from './blog/blog.component';\r\nimport { NewBlogComponent } from './blog/newBlog.component';\r\nimport { LoginComponent } from './login/login.component';\r\n\r\nimport { DataService } from '../shared/dataService';\r\n\r\nlet routes = [\r\n { path: \"\", component: BlogComponent },\r\n { path: \"addBlog\", component: NewBlogComponent },\r\n { path: \"Blog\", component: BlogListComponent },\r\n { path: \"login\", component: LoginComponent}\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n BlogListComponent,\r\n BlogComponent,\r\n NewBlogComponent,\r\n LoginComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n RouterModule.forRoot(routes, {\r\n useHash: true, // we are not building a whole app but enhancing a single page so we want the routes to show after a #\r\n enableTracing: false // for Debugging of the routes\r\n })\r\n ],\r\n providers: [\r\n DataService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component } from '@angular/core';\r\nimport { DataService } from '../../shared/dataService';\r\nimport { BlogEntry } from '../../shared/blogEntry';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'blog-app',\r\n templateUrl: \"./blog.component.html\",\r\n // template: `\r\n //
\r\n //

\r\n // Welcome to {{title}}!\r\n //

\r\n //
\r\n //`,\r\n styles: []\r\n})\r\nexport class BlogComponent {\r\n constructor(private data: DataService, private router: Router) {\r\n\r\n }\r\n\r\n title = 'Blog';\r\n\r\n public blogEntry: BlogEntry = new BlogEntry();\r\n\r\n onBlogEntryAdd() {\r\n if (this.data.loginRequired) {\r\n // force login\r\n this.router.navigate([\"login\"])\r\n }\r\n else {\r\n // go to add new blog\r\n this.router.navigate([\"addBlog\"])\r\n }\r\n\r\n //this.blogEntry.blogDateTime = new Date();\r\n //this.blogEntry.text = \"new blog 1\";\r\n\r\n //this.data.addBlogEntry(this.blogEntry);\r\n }\r\n}\r\n","
\r\n

{{ title }}

\r\n \r\n \r\n \r\n
","import { Component, OnInit } from \"@angular/core\";\r\nimport { DataService } from '../../shared/dataService';\r\nimport { BlogEntry } from '../../shared/blogEntry';\r\n\r\n//import { pipe } from 'rxjs';\r\n\r\n@Component({\r\n selector: \"blogEntry-list\",\r\n templateUrl: \"blogList.component.html\",\r\n styleUrls: []\r\n})\r\nexport class BlogListComponent implements OnInit {\r\n\r\n constructor(private data: DataService) {\r\n \r\n }\r\n\r\n public blogEntries : BlogEntry[] = [];\r\n\r\n ngOnInit(): void {\r\n this.data.loadBlogEntries().\r\n subscribe(p => {\r\n if (p) {\r\n this.blogEntries = this.data.blogEntries;\r\n }\r\n });\r\n }\r\n}","
\r\n
\r\n
{{ blog.createdAt | date:'EEEE, d MMM, yyyy' }}
\r\n

\r\n
\r\n \r\n
\r\n
Count: {{ blogEntries.length }}
\r\n","import { Component } from '@angular/core';\r\nimport { DataService } from '../../shared/dataService';\r\nimport { BlogEntry } from '../../shared/blogEntry';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'new-blog',\r\n templateUrl: \"./newBlog.component.html\",\r\n // template: `\r\n //
\r\n //

\r\n // Welcome to {{title}}!\r\n //

\r\n //
\r\n //`,\r\n styles: []\r\n})\r\nexport class NewBlogComponent {\r\n errorMessage: string = \"\";\r\n constructor(private data: DataService, private router: Router) {\r\n\r\n }\r\n\r\n title = 'New Blog Entry';\r\n\r\n public blogEntry: BlogEntry = new BlogEntry();\r\n\r\n addBlogEntry() {\r\n this.blogEntry.createdAt = new Date();\r\n //this.blogEntry.text = \"new blog 1\";\r\n\r\n this.data.addBlogEntry(this.blogEntry)\r\n .subscribe(success => {\r\n if (success) {\r\n this.router.navigate([\"\"]);\r\n }\r\n }, err => this.errorMessage = \"Failed to save blog entry\");\r\n }\r\n}\r\n","
\r\n

{{ title }}

\r\n
{{ errorMessage}}
\r\n
\r\n
\r\n \r\n
Blog text is required!
\r\n
\r\n
\r\n \r\n Cancel\r\n
\r\n
\r\n
","import { Component } from \"@angular/core\";\r\nimport { DataService } from \"../../shared/dataService\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"login\",\r\n templateUrl: \"login.component.html\"\r\n})\r\nexport class LoginComponent {\r\n\r\n constructor(private data: DataService, private router: Router) { }\r\n\r\n errorMessage: string = \"\";\r\n public credentials = {\r\n email: \"\",\r\n password: \"\"\r\n };\r\n\r\n onLogin() {\r\n this.errorMessage = \"\";\r\n this.data.login(this.credentials)\r\n .subscribe(success => {\r\n if (success) {\r\n this.router.navigate([\"addBlog\"]);\r\n }\r\n }, err => this.errorMessage = \"Failed to login\");\r\n }\r\n}","
\r\n
\r\n
\r\n
{{ errorMessage }}
\r\n
\r\n \r\n
\r\n \r\n \r\n
Email is required!
\r\n
\r\n
\r\n \r\n \r\n
Password is required!
\r\n
\r\n
\r\n \r\n Cancel\r\n
\r\n
\r\n
\r\n
\r\n
","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","export class BlogEntry {\r\n id: number;\r\n createdAt: Date = new Date();\r\n text: string;\r\n mainCategory: string;\r\n blogEntryComments: BlogEntryComment[];\r\n categories: Array = new Array();\r\n}\r\n\r\nexport class BlogEntryComment {\r\n entityId: number;\r\n id: number;\r\n subject: string;\r\n text: string;\r\n timeStamp: Date = new Date();\r\n authorFirstName: null;\r\n authorLastName: null;\r\n authorName: string;\r\n authorImageName: string;\r\n authorCredits: string;\r\n authorWebAddress: string;\r\n isReview: boolean = false;\r\n parentId: null;\r\n parent?: null;\r\n replies: Array = new Array();\r\n}\r\n","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\n//import { BlogEntry, BlogEntryComment } from './blogEntry';\r\nimport * as BlogNS from \"./blogEntry\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class DataService {\r\n\r\n private token: string = \"\";\r\n private tokenExpiration: Date;\r\n\r\n public blogEntries: BlogNS.BlogEntry[] = [];\r\n\r\n public get loginRequired(): boolean {\r\n return this.token.length == 0 || this.tokenExpiration < new Date();\r\n }\r\n\r\n constructor(private httpClient: HttpClient) {\r\n\r\n }\r\n\r\n loadBlogEntries(): Observable {\r\n return this.httpClient.get(\"api/blog\")\r\n .pipe(\r\n map((data: any[]) => {\r\n this.blogEntries = data;\r\n return true;\r\n })\r\n );\r\n }\r\n\r\n login(credentials): Observable {\r\n return this.httpClient\r\n .post(\"/account/createtoken\", credentials)\r\n .pipe(\r\n map((response: any) => {\r\n this.token = response.token;\r\n this.tokenExpiration = response.expiration;\r\n return true;\r\n }));\r\n }\r\n\r\n public addBlogEntry(blogEntry: BlogNS.BlogEntry) {\r\n return this.httpClient\r\n .post(\"/api/blog\", blogEntry, {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", \"Bearer \" + this.token)\r\n })\r\n .pipe(\r\n map((response: any) => {\r\n return true;\r\n }));\r\n }\r\n\r\n public addBlogComment(blogEntryComment: BlogNS.BlogEntryComment) {\r\n let blogEntry = this.blogEntries.find(p => p.id === blogEntryComment.entityId);\r\n\r\n if (blogEntry) {\r\n blogEntry.blogEntryComments.push(blogEntryComment);\r\n }\r\n else {\r\n // return error\r\n }\r\n }\r\n}"],"sourceRoot":"webpack:///"}