{"version":3,"file":"445.d13ac49bd92c0599.js","mappings":"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","names":["LoadEmployees","createAction","LoadEmployeesSuccess","props","LoadUploadHistory","LoadUploadHistorySuccess","Upload","DownloadError","DownloadResponses","TriggerSurveyRequest","employeesFeatureKey","employeesReducer","createReducer","employees","uploadHistory","initialState","on","EmployeesActions","state","action","reducer","selectEmployeesState","createFeatureSelector","fromEmployees","selectEmployees","createSelector","selectUploadHistory","i0","EmployeesGridComponent","_class","constructor","store","ls","snackbar","cdr","this","pipe","select","tap","length","itemCount","setTimeout","onResize","Auth","dataGrid","instance","set","get","ngOnInit","loadGridData","dispatch","setSelectedValues","selectedRows","download","assignmentIds","filter","row","currentSurveyStatus","map","assignmentId","open","duration","clearSelection","triggerSurveyRequest","calculateRowsPerPage","tableHeadersBottom","document","getElementsByClassName","getBoundingClientRect","bottom","pageSize","Math","floor","innerHeight","calculateGridHeight","markForCheck","gridHeight","core","selectors","tslib_es6","Unsubscriber","UploadHistoryGridComponent","uploadHistory$","uploads","ngAfterViewInit","downloadError","importFileId","getWindowSize","rowHeight","bodyHeight","window","visualViewport","height","tableTop","top","colheaderHeight","pagerHeight","totalRowsHeight","ctx","routes","path","component","EmployeesComponent","downloader","upload","files","file","downloadLink","EmployeesRoutingModule","RouterModule","EmployeesService","http","getEmployees","post","getUploadHistory","getErrorFile","observe","responseType","getResponses","ids","formData","FormData","append","factory","EmployeesEffects","actions$","employeesService","createEffect","ofType","concatMap","payload","catchError","error","body","createElement","href","URL","createObjectURL","setAttribute","appendChild","click","removeChild","downloadBlob","EmployeesModule","LocalStorageService","imports","CommonModule","SharedModule","StoreModule","EffectsModule","DxDataGridModule","MatTabsModule","MatProgressSpinnerModule","_MatProgressSpinnerBase","mixinColor","_elementRef","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","InjectionToken","providedIn","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY","diameter","BASE_SIZE","MatProgressSpinner","elementRef","animationMode","defaults","super","mode","nativeElement","nodeName","toLowerCase","_value","_diameter","_noopAnimations","_forceAnimations","color","defaultColor","strokeWidth","value","v","max","min","coerceNumberProperty","size","_strokeWidth","_circleRadius","_viewBox","viewBox","_strokeCircumference","PI","_strokeDashOffset","_circleStrokeWidth","ɵfac","ANIMATION_MODULE_TYPE","ɵcmp","_c0","_t","decls","i1","styles","ɵmod","ɵinj","MatCommonModule"],"sourceRoot":"webpack:///","sources":["./src/app/pages/employees/store/actions/employees.actions.ts","./src/app/pages/employees/store/reducers/employees.reducer.ts","./src/app/pages/employees/store/selectors/employees.selectors.ts","./src/app/pages/employees/components/employees-grid/employees-grid.component.html","./src/app/pages/employees/components/employees-grid/employees-grid.component.ts","./src/app/pages/employees/components/upload-history-grid/upload-history-grid.component.html","./src/app/pages/employees/components/upload-history-grid/upload-history-grid.component.ts","./src/app/pages/employees/pages/employees/employees.component.html","./src/app/pages/employees/employees-routing.module.ts","./src/app/pages/employees/pages/employees/employees.component.ts","./src/app/pages/employees/services/employees.service.ts","./src/app/pages/employees/store/effects/employees.effects.ts","./src/app/pages/employees/employees.module.ts","./node_modules/@angular/material/fesm2020/progress-spinner.mjs"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\r\nimport { IEmployeeInfo } from '../../models/EmployeeInfo';\r\nimport { IUploadHistoryInfo } from '../../models/UploadHistoryInfo';\r\n\r\nexport const LoadEmployees = createAction('[Employees] Load Employees');\r\n\r\nexport const LoadEmployeesSuccess = createAction(\r\n '[Employees] Load Employees Success',\r\n props<{ employees: IEmployeeInfo[] }>()\r\n);\r\n\r\nexport const LoadUploadHistory = createAction('[Employees] Load UploadHistory');\r\n\r\nexport const LoadUploadHistorySuccess = createAction(\r\n '[Employees] Load UploadHistory Success',\r\n props<{ uploadHistory: IUploadHistoryInfo[] }>()\r\n);\r\n\r\nexport const Upload = createAction('[Employees] Upload', props<{ file: File }>());\r\n\r\nexport const DownloadError = createAction('[Employees] Download Error', props<{ importFileId: string }>());\r\n\r\nexport const DownloadResponses = createAction('[Employees] Download Responses', props<{ assignmentIds: string[] }>());\r\n\r\nexport const TriggerSurveyRequest = createAction(\r\n '[Employees] Trigger Survey Request',\r\n props<{ assignmentIds: string[] }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { IEmployeeInfo } from '../../models/EmployeeInfo';\r\nimport { IUploadHistoryInfo } from '../../models/UploadHistoryInfo';\r\nimport * as EmployeesActions from '../actions/employees.actions';\r\n\r\nexport const employeesFeatureKey = 'employees';\r\n\r\nexport interface EmployeesState {\r\n employees: IEmployeeInfo[];\r\n uploadHistory: IUploadHistoryInfo[];\r\n}\r\n\r\nexport const initialState: EmployeesState = {\r\n employees: [],\r\n uploadHistory: [],\r\n};\r\n\r\nconst employeesReducer = createReducer(\r\n initialState,\r\n\r\n on(EmployeesActions.LoadEmployeesSuccess, (state, action) => ({\r\n ...state,\r\n employees: action.employees,\r\n })),\r\n on(EmployeesActions.LoadUploadHistorySuccess, (state, action) => ({\r\n ...state,\r\n uploadHistory: action.uploadHistory,\r\n })),\r\n);\r\n\r\nexport function reducer(state: EmployeesState | undefined, action: Action) {\r\n return employeesReducer(state, action);\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport * as fromEmployees from '../reducers/employees.reducer';\r\n\r\nexport const selectEmployeesState = createFeatureSelector(\r\n fromEmployees.employeesFeatureKey\r\n);\r\n\r\nexport const selectEmployees = createSelector(\r\n selectEmployeesState,\r\n (state: fromEmployees.EmployeesState) => state.employees\r\n);\r\n\r\nexport const selectUploadHistory = createSelector(\r\n selectEmployeesState,\r\n (state: fromEmployees.EmployeesState) => state.uploadHistory\r\n);\r\n","\r\n
\r\n

{{ selectedRows.length }}/{{ employees?.length }}

\r\n\r\n
\r\n \r\n\r\n \r\n Download Responses\r\n \r\n\r\n \r\n Trigger Survey Request\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IEmployeeInfo } from '../../models/EmployeeInfo';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { DownloadResponses, LoadEmployees, TriggerSurveyRequest } from '../../store/actions/employees.actions';\r\nimport { selectEmployees } from '../../store/selectors/employees.selectors';\r\nimport { RootState, Auth, LocalStorageService, Unsubscriber } from '@core';\r\nimport { DxDataGridComponent } from 'devextreme-angular/ui/data-grid';\r\nimport { tap } from 'rxjs/operators';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nconst rowHeight = 34;\r\nconst gridExtraHeightCalc = 130;\r\n\r\n@Unsubscriber()\r\n@Component({\r\n selector: 'maas-employees-grid',\r\n templateUrl: './employees-grid.component.html',\r\n styleUrls: ['./employees-grid.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EmployeesGridComponent implements OnInit {\r\n @ViewChild('targetDataGrid', { static: false }) dataGrid: DxDataGridComponent | undefined;\r\n currentFilter: any;\r\n employees$: Observable = this.store.pipe(\r\n select(selectEmployees),\r\n tap((employees: any) => {\r\n if (employees.length === 0) return;\r\n this.itemCount = employees.length;\r\n setTimeout(() => this.onResize(), 500);\r\n })\r\n );\r\n\r\n selectedRows: IEmployeeInfo[] = [];\r\n isAdmin$: Observable = this.store.select(Auth.selectIsAdmin);\r\n\r\n gridHeight: number | undefined;\r\n pageSize: number = 0;\r\n\r\n private itemCount = 0;\r\n\r\n constructor(\r\n private store: Store,\r\n private ls: LocalStorageService,\r\n private snackbar: MatSnackBar,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.loadGridData();\r\n }\r\n\r\n loadGridData() {\r\n this.store.dispatch(LoadEmployees());\r\n }\r\n\r\n setSelectedValues(selectedRows: IEmployeeInfo[]) {\r\n this.selectedRows = selectedRows;\r\n }\r\n\r\n download() {\r\n const assignmentIds = this.selectedRows\r\n .filter((row) => row.currentSurveyStatus === 'Completed')\r\n .map((row) => row.assignmentId);\r\n\r\n if (assignmentIds.length > 0) {\r\n if (assignmentIds.length < this.selectedRows.length) {\r\n this.snackbar.open('Warning: Only completed surveys will be included in your download.', 'Dismiss', {\r\n duration: 3000,\r\n });\r\n }\r\n\r\n this.store.dispatch(DownloadResponses({ assignmentIds }));\r\n if (this.dataGrid) this.dataGrid.instance.clearSelection();\r\n } else {\r\n this.snackbar.open('No valid selections. Please modify your selection and try again.', 'Dismiss', {\r\n duration: 3000,\r\n });\r\n }\r\n }\r\n\r\n triggerSurveyRequest() {\r\n const assignmentIds = this.selectedRows.map((row) => row.assignmentId);\r\n this.store.dispatch(TriggerSurveyRequest({ assignmentIds }));\r\n if (this.dataGrid) this.dataGrid.instance.clearSelection();\r\n }\r\n\r\n saveState = () => {\r\n if (!this.dataGrid) return true;\r\n const state = this.dataGrid.instance.state();\r\n return this.ls.set('employee-grid-storage', state);\r\n };\r\n\r\n loadState = () => {\r\n const state = this.ls.get('employee-grid-storage');\r\n return state;\r\n };\r\n\r\n private calculateRowsPerPage() {\r\n const tableHeadersBottom = document.getElementsByClassName('dx-datagrid-headers')[0]?.getBoundingClientRect()?.bottom + 4;\r\n this.pageSize = Math.floor((innerHeight - tableHeadersBottom - 132) / rowHeight);\r\n }\r\n\r\n onResize() {\r\n this.calculateRowsPerPage();\r\n this.calculateGridHeight();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n\r\n private calculateGridHeight() {\r\n if (this.itemCount < this.pageSize) {\r\n this.gridHeight = (this.itemCount + 1) * rowHeight + gridExtraHeightCalc + 12;\r\n }\r\n else {\r\n const totalRowsHeight = (this.pageSize + 1) * rowHeight;\r\n this.gridHeight = gridExtraHeightCalc + totalRowsHeight + 12; // + to avoid scrollbar\r\n }\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n {{ d.data.firstName }} {{ d.data.lastName }} \r\n
\r\n\r\n
\r\n \r\n download errors\r\n \r\n
\r\n \r\n
\r\n","import { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IUploadHistoryInfo } from '../../models/UploadHistoryInfo';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { selectUploadHistory } from '../../store/selectors/employees.selectors';\r\nimport { DownloadError, LoadUploadHistory } from '../../store/actions/employees.actions';\r\nimport { RootState } from '@core';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'maas-upload-history-grid',\r\n templateUrl: './upload-history-grid.component.html',\r\n styleUrls: ['./upload-history-grid.component.scss'],\r\n})\r\nexport class UploadHistoryGridComponent implements OnInit, AfterViewInit {\r\n currentFilter: any;\r\n uploadHistory$: Observable;\r\n\r\n gridHeight: number | undefined;\r\n pageSize: number = 0;\r\n private rowHeight = 34;\r\n private colheaderHeight = 70;\r\n private pagerHeight = 60;\r\n\r\n private itemCount = 0;\r\n\r\n constructor(private store: Store) {\r\n this.uploadHistory$ = this.store.pipe(\r\n select(selectUploadHistory),\r\n tap((uploads) => (this.itemCount = uploads.length)),\r\n tap(() => setTimeout(() => this.onResize(), 500))\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadGridData();\r\n }\r\n\r\n ngAfterViewInit() { }\r\n\r\n loadGridData() {\r\n this.store.dispatch(LoadUploadHistory());\r\n }\r\n\r\n downloadError(importFileId: string) {\r\n this.store.dispatch(DownloadError({ importFileId }));\r\n }\r\n\r\n calculateRowsPerPage() {\r\n return Math.floor(this.getWindowSize() / this.rowHeight);\r\n }\r\n\r\n onResize() {\r\n this.pageSize = this.calculateRowsPerPage();\r\n\r\n if (this.itemCount > this.pageSize) {\r\n this.gridHeight = this.calculateGridHeight();\r\n }\r\n }\r\n\r\n getWindowSize() {\r\n\r\n const bodyHeight = window.visualViewport?.height ?? 70;\r\n const tableTop = document.getElementsByClassName('dx-datagrid-headers')[0].getBoundingClientRect().top + 4;\r\n\r\n const windowSize = bodyHeight - tableTop - this.colheaderHeight - this.pagerHeight;\r\n\r\n return Math.floor(windowSize);\r\n }\r\n\r\n private calculateGridHeight() {\r\n const numRows = this.calculateRowsPerPage();\r\n const totalRowsHeight = numRows * this.rowHeight;\r\n\r\n const gridHeight = this.colheaderHeight + this.pagerHeight + totalRowsHeight - 122;\r\n\r\n return gridHeight;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n","/**\r\n * (c) 2017 KPMG LLP, a Delaware limited liability partnership\r\n * and the U.S. member firm of the KPMG network of independent member\r\n * firms affiliated with KPMG International Cooperative (\"KPMG\r\n * International\"), a Swiss entity. All rights reserved.\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { EmployeesComponent } from './pages/employees/employees.component';\r\n\r\nconst routes: Routes = [{ path: '', component: EmployeesComponent }];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class EmployeesRoutingModule {}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { DownloaderService } from '@core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Upload } from '../../store/actions/employees.actions';\r\nimport { EmployeesState } from '../../store/reducers/employees.reducer';\r\n\r\n@Component({\r\n selector: 'maas-employees',\r\n templateUrl: './employees.component.html',\r\n styleUrls: ['./employees.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EmployeesComponent {\r\n\r\n constructor(private store: Store, private downloader: DownloaderService) { }\r\n\r\n upload(files: FileList) {\r\n if (files && files.length > 0) {\r\n this.store.dispatch(Upload({ file: files[0] }));\r\n }\r\n }\r\n\r\n download() {\r\n this.downloader.downloadLink('assets/templates/ImportWorkers.xlsx', 'importWorkers.xlsx');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IEmployeeInfo } from '../models/EmployeeInfo';\r\nimport { IUploadHistoryInfo } from '../models/UploadHistoryInfo';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EmployeesService {\r\n constructor(private http: HttpClient) {}\r\n\r\n getEmployees() {\r\n return this.http.get(`assignments`);\r\n }\r\n\r\n triggerSurveyRequest(assignmentIds: string[]) {\r\n return this.http.post(`admin/trigger`, assignmentIds);\r\n }\r\n\r\n getUploadHistory() {\r\n return this.http.get(`import/history`);\r\n }\r\n\r\n getErrorFile(importFileId: string) {\r\n return this.http.get(`import/${importFileId}/errorfile`, {\r\n observe: 'response',\r\n responseType: 'blob',\r\n });\r\n }\r\n\r\n getResponses(ids: string[]) {\r\n return this.http.post(`assignments/responsesfile`, ids, {\r\n observe: 'response',\r\n responseType: 'blob',\r\n });\r\n }\r\n\r\n upload(file: File) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return this.http.post('import/mobileworkers', formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, concatMap, tap } from 'rxjs/operators';\r\n\r\nimport * as EmployeesActions from '../actions/employees.actions';\r\nimport { EmployeesService } from '../../services/employees.service';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DownloaderService } from '@core';\r\n\r\n@Injectable()\r\nexport class EmployeesEffects {\r\n loadEmployees$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(EmployeesActions.LoadEmployees),\r\n concatMap(() =>\r\n this.employeesService.getEmployees().pipe(\r\n map((employees) => EmployeesActions.LoadEmployeesSuccess({ employees }))\r\n )\r\n )\r\n );\r\n });\r\n\r\n loadUploadHistory$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(EmployeesActions.LoadUploadHistory),\r\n concatMap(() =>\r\n this.employeesService.getUploadHistory().pipe(\r\n map((uploadHistory) => EmployeesActions.LoadUploadHistorySuccess({ uploadHistory }))\r\n )\r\n )\r\n );\r\n });\r\n\r\n upload$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(EmployeesActions.Upload),\r\n concatMap((payload) =>\r\n this.employeesService.upload(payload.file).pipe(\r\n tap(() => this.snackbar.open('File successfully uploaded')),\r\n catchError(error => {\r\n this.snackbar.open('File upload failed');\r\n throw error;\r\n })\r\n )\r\n )\r\n );\r\n },\r\n { dispatch: false });\r\n\r\n downloadError$ = createEffect(() => {\r\n return this.actions$.pipe(\r\n ofType(EmployeesActions.DownloadError),\r\n concatMap((payload) =>\r\n this.employeesService.getErrorFile(payload.importFileId).pipe(\r\n tap((payload) => {\r\n if (!payload.body) return;\r\n const downloadLink = document.createElement('a');\r\n downloadLink.href = window.URL.createObjectURL(payload.body);\r\n\r\n if (payload.body) {\r\n downloadLink.setAttribute('download', 'error-file.xlsx');\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n document.body.removeChild(downloadLink);\r\n }\r\n })\r\n )\r\n )\r\n );\r\n },\r\n { dispatch: false });\r\n\r\n downloadResponses$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(EmployeesActions.DownloadResponses),\r\n concatMap((payload) =>\r\n this.employeesService.getResponses(payload.assignmentIds).pipe(\r\n tap(payload => this.downloader.downloadBlob(payload.body, 'responses.xlsx'))\r\n )\r\n )\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n triggerSurveyRequest$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(EmployeesActions.TriggerSurveyRequest),\r\n concatMap((payload) =>\r\n this.employeesService.triggerSurveyRequest(payload.assignmentIds).pipe(\r\n tap(() => this.snackbar.open('Survey Request Triggered')),\r\n catchError(error => {\r\n this.snackbar.open('Survey Request Failed to Trigger');\r\n throw error;\r\n })\r\n )\r\n )\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private employeesService: EmployeesService,\r\n private snackbar: MatSnackBar,\r\n private downloader: DownloaderService) {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DxDataGridModule } from 'devextreme-angular/ui/data-grid';\r\nimport { EmployeesComponent } from './pages/employees/employees.component';\r\nimport { EmployeesRoutingModule } from './employees-routing.module';\r\nimport { SharedModule } from '@shared';\r\nimport { EmployeesGridComponent } from './components/employees-grid/employees-grid.component';\r\nimport { UploadHistoryGridComponent } from './components/upload-history-grid/upload-history-grid.component';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromEmployees from './store/reducers/employees.reducer';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { EmployeesEffects } from './store/effects/employees.effects';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LocalStorageService } from '@core';\r\n\r\n@NgModule({\r\n declarations: [EmployeesComponent, EmployeesGridComponent, UploadHistoryGridComponent],\r\n imports: [\r\n CommonModule,\r\n EmployeesRoutingModule,\r\n SharedModule,\r\n StoreModule.forFeature(fromEmployees.employeesFeatureKey, fromEmployees.reducer),\r\n EffectsModule.forFeature([EmployeesEffects]),\r\n DxDataGridModule,\r\n MatTabsModule,\r\n MatProgressSpinnerModule\r\n ],\r\n providers: [LocalStorageService]\r\n})\r\nexport class EmployeesModule { }\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, ViewChild, Input, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatProgressBar.\nconst _MatProgressSpinnerBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}, 'primary');\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nconst MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY() {\n return { diameter: BASE_SIZE };\n}\n/**\n * Base reference size of the spinner.\n */\nconst BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n */\nconst BASE_STROKE_WIDTH = 10;\nclass MatProgressSpinner extends _MatProgressSpinnerBase {\n constructor(elementRef, animationMode, defaults) {\n super(elementRef);\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n this.mode = this._elementRef.nativeElement.nodeName.toLowerCase() === 'mat-spinner'\n ? 'indeterminate'\n : 'determinate';\n this._value = 0;\n this._diameter = BASE_SIZE;\n this._noopAnimations =\n animationMode === 'NoopAnimations' && !!defaults && !defaults._forceAnimations;\n if (defaults) {\n if (defaults.color) {\n this.color = this.defaultColor = defaults.color;\n }\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n get value() {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(v) {\n this._value = Math.max(0, Math.min(100, coerceNumberProperty(v)));\n }\n /** The diameter of the progress spinner (will set width and height of svg). */\n get diameter() {\n return this._diameter;\n }\n set diameter(size) {\n this._diameter = coerceNumberProperty(size);\n }\n /** Stroke width of the progress spinner. */\n get strokeWidth() {\n return this._strokeWidth ?? this.diameter / 10;\n }\n set strokeWidth(value) {\n this._strokeWidth = coerceNumberProperty(value);\n }\n /** The radius of the spinner, adjusted for stroke width. */\n _circleRadius() {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n /** The view box of the spinner's svg element. */\n _viewBox() {\n const viewBox = this._circleRadius() * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n /** The stroke circumference of the svg circle. */\n _strokeCircumference() {\n return 2 * Math.PI * this._circleRadius();\n }\n /** The dash offset of the svg circle. */\n _strokeDashOffset() {\n if (this.mode === 'determinate') {\n return (this._strokeCircumference() * (100 - this._value)) / 100;\n }\n return null;\n }\n /** Stroke width of the circle in percent. */\n _circleStrokeWidth() {\n return (this.strokeWidth / this.diameter) * 100;\n }\n}\nMatProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinner, deps: [{ token: i0.ElementRef }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });\nMatProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.0-rc.0\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: { color: \"color\", mode: \"mode\", value: \"value\", diameter: \"diameter\", strokeWidth: \"strokeWidth\" }, host: { attributes: { \"role\": \"progressbar\", \"tabindex\": \"-1\" }, properties: { \"class._mat-animation-noopable\": \"_noopAnimations\", \"class.mdc-circular-progress--indeterminate\": \"mode === \\\"indeterminate\\\"\", \"style.width.px\": \"diameter\", \"style.height.px\": \"diameter\", \"attr.aria-valuemin\": \"0\", \"attr.aria-valuemax\": \"100\", \"attr.aria-valuenow\": \"mode === \\\"determinate\\\" ? value : null\", \"attr.mode\": \"mode\" }, classAttribute: \"mat-mdc-progress-spinner mdc-circular-progress\" }, viewQueries: [{ propertyName: \"_determinateCircle\", first: true, predicate: [\"determinateSpinner\"], descendants: true }], exportAs: [\"matProgressSpinner\"], usesInheritance: true, ngImport: i0, template: \"\\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\", styles: [\"@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-color-1-fade-in-out{from{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdc-circular-progress-color-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}.mdc-circular-progress{display:inline-flex;position:relative;direction:ltr;line-height:0;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-1{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-2{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-3{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-4{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--closed{opacity:0}.mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, transparent)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-1 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-2 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-3 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-4 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}\"], dependencies: [{ kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinner, decorators: [{\n type: Component,\n args: [{ selector: 'mat-progress-spinner, mat-spinner', exportAs: 'matProgressSpinner', host: {\n 'role': 'progressbar',\n 'class': 'mat-mdc-progress-spinner mdc-circular-progress',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[class.mdc-circular-progress--indeterminate]': 'mode === \"indeterminate\"',\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode',\n }, inputs: ['color'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\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\", styles: [\"@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-color-1-fade-in-out{from{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdc-circular-progress-color-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}.mdc-circular-progress{display:inline-flex;position:relative;direction:ltr;line-height:0;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-1{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-2{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-3{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-4{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--closed{opacity:0}.mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, transparent)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-1 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-2 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-3 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-4 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { _determinateCircle: [{\n type: ViewChild,\n args: ['determinateSpinner']\n }], mode: [{\n type: Input\n }], value: [{\n type: Input\n }], diameter: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }] } });\n/**\n * @deprecated Import Progress Spinner instead. Note that the\n * `mat-spinner` selector isn't deprecated.\n * @breaking-change 16.0.0\n */\n// tslint:disable-next-line:variable-name\nconst MatSpinner = MatProgressSpinner;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatProgressSpinnerModule {\n}\nMatProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinnerModule, declarations: [MatProgressSpinner, MatSpinner], imports: [CommonModule], exports: [MatProgressSpinner, MatSpinner, MatCommonModule] });\nMatProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinnerModule, imports: [CommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.0-rc.0\", ngImport: i0, type: MatProgressSpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [MatProgressSpinner, MatSpinner, MatCommonModule],\n declarations: [MatProgressSpinner, MatSpinner],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinner, MatProgressSpinnerModule, MatSpinner };\n"],"x_google_ignoreList":[13]}