{"version":3,"sources":["./src/app/github-user.service.ts","./src/app/+state/github.effects.ts","./src/environments/environment.ts","./src/app/+state/github.reducer.ts","./src/app/+state/github.actions.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/user-table/user-table.component.ts","./src/app/user-table/user-table.component.html","./src/app/github-user.api.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GithubUser } from './github-user.api';\nimport { map } from 'rxjs/operators';\n\nexport interface GitHubUserResponse {\n total_count: number;\n incomplete_results: boolean;\n items: GithubUser[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GithubUserService {\n\n constructor(private http: HttpClient) { }\n baseUrl = `https://api.github.com/search/users`;\n query(search: string = '', page = 0, pageSize = 10\n ): Observable {\n let params = new HttpParams();\n params = params.append('q', search);\n params = params.append('page', page.toString());\n params = params.append('per_page', pageSize.toString());\n\n return this.http.get(this.baseUrl, { params }).pipe(\n map((res) => {\n return res;\n })\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { of } from 'rxjs';\r\nimport { catchError, map, mergeMap } from 'rxjs/operators';\r\nimport { GithubUserService } from '../github-user.service';\r\nimport { githubUsersErrorAction, loadGithubUsersAction, setGithubUsersAction } from './github.actions';\r\n\r\n@Injectable()\r\nexport class GithubUsersEffects {\r\n concurrentRequests = 5;\r\n\r\n loadGithubUsers$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(loadGithubUsersAction),\r\n mergeMap((action) =>\r\n this.service.query(action.payload.userName, action.payload.pageNumber, action.payload.pageSize).pipe(\r\n map(response => setGithubUsersAction({ payload: response })),\r\n catchError(error => of(githubUsersErrorAction({ payload: error })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n constructor(\r\n public service: GithubUserService,\r\n public actions$: Actions\r\n ) { }\r\n}","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import {\r\n createFeatureSelector,\r\n createReducer,\r\n createSelector,\r\n on,\r\n} from '@ngrx/store';\r\n\r\nimport { GithubUser, mapToGithubUsers } from '../github-user.api';\r\nimport { loadGithubUsersAction, setGithubUsersAction, githubUsersErrorAction } from './github.actions';\r\n\r\nexport interface GithubUsersState {\r\n githubUsers: GithubUser[];\r\n count: number;\r\n error: any;\r\n}\r\n\r\nconst initialState: GithubUsersState = {\r\n githubUsers: [],\r\n count: 0,\r\n error: null\r\n};\r\n\r\nexport const GITHUB_USERS_FEATURE_KEY = 'githubusers';\r\n\r\nexport const githubUsersReducer = createReducer(\r\n initialState,\r\n on(loadGithubUsersAction, (state, action) => {\r\n const newState = {\r\n ...state,\r\n githubUsers: [],\r\n count: 0,\r\n error: null\r\n };\r\n return newState;\r\n }),\r\n on(setGithubUsersAction, (state, action) => {\r\n const newState = { ...state, githubUsers: action.payload.items, count: action.payload.total_count };\r\n return newState;\r\n }),\r\n on(githubUsersErrorAction, (state, action) => {\r\n const newState = { ...state, githubUsers: [], count: 0, error: action.payload };\r\n return newState;\r\n })\r\n);\r\n\r\nexport const getGithubUsersState = createFeatureSelector('githubusers');\r\n\r\nexport const selectAll = createSelector(\r\n getGithubUsersState,\r\n (state: GithubUsersState) => state\r\n);\r\n\r\nexport const selectAllGithubUsers = createSelector(selectAll, (state) =>\r\n mapToGithubUsers(state.githubUsers));\r\n\r\nexport const selectGithubUsersCount = createSelector(selectAll, (state) => state.count);\r\n\r\nexport const selectGithubUsersError = createSelector(selectAll, (state) => state.error);","import { createAction, props } from '@ngrx/store';\r\nimport { GitHubUserResponse } from '../github-user.service';\r\n\r\nexport const loadGithubUsersAction = createAction(\r\n 'GithubUsers: Load All',\r\n props<{ payload: { userName: string, pageNumber: number, pageSize: number } }>()\r\n);\r\nexport const setGithubUsersAction = createAction(\r\n 'GithubUsers: Set All',\r\n props<{ payload: GitHubUserResponse }>()\r\n);\r\nexport const githubUsersErrorAction = createAction(\r\n 'GithubUsers: Error',\r\n props<{ payload: any }>()\r\n);","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'Github User Search App';\n}\n","
\n\n

\n {{title}}\n

\n
\n\n
","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AppComponent } from './app.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { UserTableComponent } from './user-table/user-table.component';\r\nimport { GithubUsersEffects } from './+state/github.effects';\r\nimport { githubUsersReducer } from './+state/github.reducer';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n UserTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatCardModule,\r\n MatToolbarModule,\r\n MatSnackBarModule,\r\n StoreModule.forRoot({ githubusers: githubUsersReducer }),\r\n EffectsModule.forRoot([GithubUsersEffects]),\r\n StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: environment.production })\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { debounceTime, tap } from 'rxjs/operators';\r\nimport { loadGithubUsersAction } from '../+state/github.actions';\r\nimport { selectAllGithubUsers, selectGithubUsersCount, selectGithubUsersError } from '../+state/github.reducer';\r\nimport { GithubUser } from '../github-user.api';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { merge, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-user-table',\r\n templateUrl: './user-table.component.html',\r\n styleUrls: ['./user-table.component.scss']\r\n})\r\nexport class UserTableComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild('paginator') paginator: MatPaginator;\r\n githubUsers: GithubUser[];\r\n currentTotal = 0;\r\n hasData = false;\r\n columns: string[] = ['avatar', 'login', 'score', 'type', 'url'];\r\n dataSource: MatTableDataSource;\r\n searchControl = new FormControl();\r\n private subscription: Subscription = new Subscription();\r\n\r\n constructor(public store: Store, private snackBar: MatSnackBar) {\r\n this.store\r\n .pipe(\r\n select(selectAllGithubUsers)\r\n )\r\n .subscribe((users) => {\r\n if (users && users.length) {\r\n this.githubUsers = users;\r\n this.dataSource = new MatTableDataSource(this.githubUsers);\r\n this.hasData = true;\r\n } else {\r\n this.hasData = false;\r\n }\r\n });\r\n\r\n this.store\r\n .pipe(\r\n select(selectGithubUsersCount)\r\n )\r\n .subscribe((count) => {\r\n this.currentTotal = count;\r\n }); \r\n\r\n this.store\r\n .pipe(\r\n select(selectGithubUsersError)\r\n )\r\n .subscribe((error) => {\r\n if (error !== null) {\r\n this.githubUsers = [];\r\n this.currentTotal = 0;\r\n this.snackBar.open(error.message);\r\n }\r\n }); \r\n }\r\n\r\n ngOnInit(): void {\r\n this.searchControl.valueChanges.pipe(\r\n debounceTime(750),\r\n ).subscribe(() => {\r\n this.paginator.pageIndex = 0;\r\n this.loadData();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.subscription.add(merge(this.paginator.page).pipe(\r\n tap(() => this.loadData())\r\n ).subscribe());\r\n }\r\n\r\n loadData() {\r\n this.store.dispatch(loadGithubUsersAction({ payload: { userName: this.searchControl.value, pageNumber: this.paginator.pageIndex, pageSize: this.paginator.pageSize } })); \r\n }\r\n\r\n onRowClick(row: GithubUser) {\r\n window.open(row.html_url, \"_blank\");\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n\r\n\r\n","
\n \n \n Enter a Name\n \n search\n \n

Number of results: {{currentTotal}}

\n\n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n
Avatar\n \n Login{{ element.login }}Score{{ element.score }}Type{{ element.type }}Url{{ element.url }}
\n
\n \n
\n Enter a search value\n
\n
\n \n \n
\n","export class GithubUser {\r\n login: string;\r\n id: number;\r\n node_id: string;\r\n avatar_url: string;\r\n gravatar_id: string;\r\n url: string;\r\n html_url: string;\r\n followers_url: string;\r\n following_url: string;\r\n gists_url: string;\r\n starred_url: string;\r\n subscriptions_url: string;\r\n organizations_url: string;\r\n repos_url: string;\r\n events_url: string;\r\n received_events_url: string;\r\n type: string;\r\n site_admin: boolean;\r\n score: number;\r\n\r\n constructor(defaultValues: Partial = {}) {\r\n Object.keys(defaultValues).forEach((key) => {\r\n this[key] = defaultValues[key];\r\n });\r\n }\r\n}\r\n\r\nexport function mapToGithubUser(data: unknown): GithubUser {\r\n return new GithubUser(data);\r\n}\r\nexport function mapToGithubUsers(data: unknown[]): GithubUser[] {\r\n if (data.length) {\r\n const allData = data.map(mapToGithubUser);\r\n return allData;\r\n } else {\r\n return null;\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","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 = \"zn8P\";"],"sourceRoot":"webpack:///"}