{"version":3,"file":"389.bb985656b51a7c5c.js","mappings":"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","names":["QuestionIds","QuestionIdsSL","FitDataService","constructor","http","loadData","form","data","Object","keys","forEach","id","v","push","questionId","parseInt","answers","Array","isArray","submitForm","this","post","submitPublicForm","corrId","contactInfo","fitSearchQuestions","PUBLIC_ENDPOINTS","updateServiceListingForm","clientId","clientServiceId","put","submitServiceListingForm","getSearchResult","searchId","get","params","getPublicSearchResult","downloadResults","observe","responseType","downloadPublicSearchResponses","contactSuppliers","supplierIds","contactPublicSearchSuppliers","getFitSearchHistory","checkSearchExpiry","_angular_core__WEBPACK_IMPORTED_MODULE_1__","factory","FitQuestionsService","getQuestions","pipe","map","questions","q","display","getPublicSearchQuestions","getListing","findChoiceId","selectedAnswer","choiceId","find","sa","getServiceListingQuestions","convertResponseOptions","responseOptions","options","key","value","text","_angular_core__WEBPACK_IMPORTED_MODULE_2__","loadServiceListingQuestions","createAction","loadServiceListingQuestionsSuccess","props","submitSLWizard","updateServiceListingQuestions","addServiceListingQuestions","updateSLWizard","hideQuestion","loadSLQuestion","loadSLQuestionSuccess","serviceListingQuestionsReducer","state","action","isTechnologyServices","serviceType","isTechAvailable","useTech","useTechTools","isRMC","isRMCOrDSP","isThirdPartyInHouse","handleService","useMobile","mobileAppTeam","mobileAppEmployee","hasIntegrations","chosenIntegration","whichIntegrations","selectedIntegration","includes","length","handlesCash","dataGov","respManagement","disasterPlan","techProprietary","serviceListingFeatureKey","reducer","createReducer","initialFitState","on","selectServiceListingState","createFeatureSelector","selectQuestions","createSelector","ServiceListingMatchingComponent","store","formUtils","UntypedFormGroup","select","ServiceListing","ngOnInit","dispatch","questions$","filter","take","tap","addFormControlSl","toString","formGroup","subscribe","ngAfterViewInit","valueChanges","changes","c","onSubmitted","replace","core","selectors","i0","ctx","routes","path","component","title","ServiceListingMatchingUpdateComponent","cdr","answer","patchValue","o","some","a","getRawValue","loaded","markForCheck","change","ServiceListingResultsLoadingComponent","ServiceListingRoutingModule","RouterModule","ServiceListingEffects","actions$","fit","router","fitData","createEffect","ofType","switchMap","withLatestFrom","selectRouteParams","selectQueryParams","_","navigateByUrl","ServiceListingModule","FormUtilsService","imports","CommonModule","SharedModule","StoreModule","EffectsModule","_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","Math","max","min","coerceNumberProperty","size","_strokeWidth","_circleRadius","_viewBox","viewBox","_strokeCircumference","PI","_strokeDashOffset","_circleStrokeWidth","ɵfac","ANIMATION_MODULE_TYPE","ɵcmp","_c0","_t","decls","i1","styles","MatProgressSpinnerModule","ɵmod","ɵinj","MatCommonModule"],"sourceRoot":"webpack:///","sources":["./src/app/fit-wizard/models/question.model.ts","./src/app/fit-wizard/services/fit-data/fit-data.service.ts","./src/app/fit-wizard/services/fit-questions/fit-questions.service.ts","./src/app/service-listing/store/actions/load-questions.actions.ts","./src/app/service-listing/store/actions/submit-wizard.actions.ts","./src/app/service-listing/store/actions/update-questions.actions.ts","./src/app/service-listing/store/actions/update-wizard.actions.ts","./src/app/service-listing/store/actions/hide-question.actions.ts","./src/app/service-listing/store/actions/load-sl-questions.actions.ts","./src/app/service-listing/store/reducers/service-listing.reducers.ts","./src/app/service-listing/store/reducers/root.reducers.ts","./src/app/service-listing/store/selectors/index.ts","./src/app/fit-wizard/containers/service-listing-matching/service-listing-matching.component.ts","./src/app/fit-wizard/containers/service-listing-matching/service-listing-matching.component.html","./src/app/fit-wizard/containers/service-listing-matching-update/service-listing-matching-update.component.html","./src/app/service-listing/service-listing-routing.module.ts","./src/app/fit-wizard/containers/service-listing-matching-update/service-listing-matching-update.component.ts","./src/app/service-listing/store/effects/service-listing.effects.ts","./src/app/service-listing/service-listing.module.ts","./node_modules/@angular/material/fesm2020/progress-spinner.mjs"],"sourcesContent":["import { IResponseOption, ISelectedAnswerOption, ResponseTypes } from '../services/fit-questions/fit-questions.service';\r\n\r\nexport interface IBaseQuestionConfig {\r\n order: number;\r\n question: string;\r\n questionId: number;\r\n display: boolean;\r\n choiceId?: number;\r\n selectedAnswer?: ISelectedAnswerOption[];\r\n responseOptions: IResponseOption[];\r\n}\r\n\r\nexport interface IRadioQuestion extends IBaseQuestionConfig {\r\n responseType: ResponseTypes.single;\r\n}\r\n\r\nexport interface ITextQuestion extends IBaseQuestionConfig {\r\n responseType: ResponseTypes.text;\r\n}\r\nexport interface IRankedQuestion extends IBaseQuestionConfig {\r\n responseType: ResponseTypes.ranked;\r\n}\r\nexport interface IMultipleQuestion extends IBaseQuestionConfig {\r\n responseType: ResponseTypes.multiple;\r\n}\r\n\r\nexport type QuestionTypes = IRadioQuestion | ITextQuestion | IRankedQuestion | IMultipleQuestion;\r\n\r\nexport enum QuestionIds {\r\n serviceType = 68,\r\n technologySolution=69,\r\n numberEmployees = 70,\r\n serviceLocation=71,\r\n primaryService = 79,\r\n hasIntegrations = 88,\r\n importantIntegrations = 98,\r\n makePayments = 101,\r\n paymentPreference = 102,\r\n whichIntegrations = 174,\r\n}\r\n\r\n\r\nexport enum QuestionIdsSL {\r\n serviceType = 106,\r\n technologyServices = 107,\r\n handleService = 110,\r\n handlesCash = 116,\r\n dataGov = 130,\r\n respManagement = 132,\r\n disasterPlan = 133,\r\n mobileAppTeam = 144,\r\n mobileAppEmployee = 145,\r\n whichIntegrations = 152,\r\n techProprietary = 175,\r\n useTech = 178,\r\n appName = 192,\r\n email = 194,\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AnswerTypes } from '../../models/answer.model';\r\nimport { IFitSearch } from '../../models/search-history.model';\r\nimport { PUBLIC_ENDPOINTS } from '@shared';\r\nimport { IContactInfo, IPublicQuestionsWithContactInfo } from '../../models/contact-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FitDataService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n private loadData(form: { [id: string]: AnswerTypes | AnswerTypes[] }) {\r\n const data: IFitSearchQuestionDto[] = [];\r\n Object.keys(form).forEach((id) => {\r\n const v = form[id];\r\n data.push({\r\n questionId: parseInt(id, 10),\r\n answers: Array.isArray(v) ? v : [v]\r\n })\r\n });\r\n\r\n return data;\r\n }\r\n\r\n submitForm(form: { [id: string]: AnswerTypes | AnswerTypes[] }) {\r\n return this.http.post('fit/search', this.loadData(form));\r\n }\r\n\r\n submitPublicForm(form: { [id: string]: AnswerTypes | AnswerTypes[] }, corrId: string, contactInfo: IContactInfo) {\r\n const data: IPublicQuestionsWithContactInfo = {\r\n corrId: corrId,\r\n contactInfo: contactInfo,\r\n fitSearchQuestions: this.loadData(form)\r\n };\r\n return this.http.post(`${PUBLIC_ENDPOINTS.submitPublicFitSearch}`, data);\r\n }\r\n\r\n updateServiceListingForm(\r\n clientId: string,\r\n form: { [id: number]: AnswerTypes | AnswerTypes[] },\r\n clientServiceId: number\r\n ) {\r\n return this.http.put(\r\n `clients/${clientId}/servicelisting?clientServiceId=${clientServiceId}`,\r\n this.loadData(form)\r\n );\r\n }\r\n\r\n submitServiceListingForm(clientId: string, form: { [id: number]: AnswerTypes | AnswerTypes[] }) {\r\n return this.http.post(`clients/${clientId}/servicelisting`, this.loadData(form));\r\n }\r\n\r\n getSearchResult(searchId: number) {\r\n return this.http.get('fit/fitsearchresult', { params: { searchId } })\r\n }\r\n\r\n getPublicSearchResult(searchId: number, corrId: string) {\r\n return this.http.get(PUBLIC_ENDPOINTS.loadPublicFitResults, { params: { searchId, corrId } })\r\n }\r\n\r\n downloadResults(clientId: string, searchId: number) {\r\n return this.http.get(`profiles/${clientId}/employer/downloadresponses/${searchId}`, {\r\n observe: 'response',\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n downloadPublicSearchResponses(corrId: string) {\r\n return this.http.get(`${PUBLIC_ENDPOINTS.downloadPublicSearchResponses}/${corrId}`, {\r\n observe: 'response',\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n contactSuppliers(supplierIds: string[], searchId: number) {\r\n return this.http.post(`fit/contactsuppliers`, { searchId, supplierIds })\r\n }\r\n\r\n contactPublicSearchSuppliers(supplierIds: string[], corrId: string) {\r\n return this.http.post(PUBLIC_ENDPOINTS.contactPublicSearchSuppliers, { corrId, supplierIds })\r\n }\r\n\r\n getFitSearchHistory() {\r\n return this.http.get(`/fit/searchhistory`)\r\n }\r\n\r\n checkSearchExpiry(corrId: string) {\r\n return this.http.get(PUBLIC_ENDPOINTS.checkSearchExpiry, { params: { corrId } })\r\n }\r\n}\r\n\r\nexport interface ProfileIntegrationsDTO {\r\n hris: string;\r\n payroll: string;\r\n rmc: string;\r\n expense: string;\r\n travel: string;\r\n costOfLiving: string;\r\n immigration: string;\r\n tax: string;\r\n stockPlan: string;\r\n}\r\n\r\nexport interface IFitSearchQuestionDto {\r\n questionId: number;\r\n answers: AnswerTypes[];\r\n}\r\n\r\nexport interface FitResultSupplier {\r\n supplierName: string;\r\n fitResult: number;\r\n quality: number;\r\n value: number;\r\n technology: number;\r\n capability: number;\r\n serviceDelivery: number;\r\n supplierId: string;\r\n email: string;\r\n selected: boolean;\r\n websiteUrl: string;\r\n linkedInUrl: string;\r\n}\r\n\r\nexport interface FitResultDto {\r\n criteria: string[],\r\n suppliers: FitResultSupplier[],\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { QuestionTypes } from '../../models/question.model';\r\nimport { Observable } from 'rxjs';\r\nimport { PUBLIC_ENDPOINTS } from '@shared';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FitQuestionsService {\r\n constructor(private http: HttpClient) { }\r\n\r\n getQuestions(): Observable {\r\n return this.http.get('fit/fitquestions').pipe(\r\n map(questions => questions.map(q =>\r\n ({\r\n ...q,\r\n display: true,\r\n })\r\n )),\r\n );\r\n }\r\n\r\n getPublicSearchQuestions(): Observable {\r\n return this.http.get(PUBLIC_ENDPOINTS.loadPublicSearchQuestions).pipe(\r\n map(questions => questions.map(q =>\r\n ({\r\n ...q,\r\n display: true,\r\n })\r\n )),\r\n );\r\n }\r\n\r\n getListing(clientId: string, clientServiceId: number): Observable {\r\n const findChoiceId = (selectedAnswer: { choiceId?: number }[]): number => {\r\n const chosenAnswers = selectedAnswer.find((sa) => sa.choiceId);\r\n const choiceId = chosenAnswers?.choiceId;\r\n\r\n return choiceId ? choiceId : 0;\r\n };\r\n return this.http.get(`clients/${clientId}/servicelisting?clientServiceId=${clientServiceId}`)\r\n .pipe(\r\n map(questions => questions.map((q) =>\r\n ({\r\n ...q,\r\n display: true,\r\n choiceId: findChoiceId(q.selectedAnswer),\r\n })\r\n )\r\n ),\r\n )\r\n }\r\n\r\n getServiceListingQuestions(): Observable {\r\n return this.http.get(`/fit/slquestions`).pipe(\r\n map(questions => questions.map((q) =>\r\n ({\r\n ...q,\r\n display: true,\r\n })\r\n )),\r\n );\r\n }\r\n\r\n private convertResponseOptions(responseOptions: []): IResponseOption[] {\r\n const options: IResponseOption[] = [];\r\n\r\n responseOptions.forEach(({ key, value }) => {\r\n options.push({\r\n value: key,\r\n text: value\r\n });\r\n });\r\n\r\n return options;\r\n }\r\n}\r\n\r\nexport interface IResponseOptionDto {\r\n key: number;\r\n value: string;\r\n}\r\n\r\nexport interface IGetFitQuestionsDto {\r\n order: number;\r\n question: string;\r\n questionId: number;\r\n responseType: ResponseTypes;\r\n responseOptions: [];\r\n}\r\n\r\nexport interface GetClientServiceanswersDto extends IGetFitQuestionsDto {\r\n selectedAnswer: ISelectedAnswerOption[];\r\n}\r\n\r\nexport interface IResponseOption {\r\n value: number;\r\n text: string;\r\n}\r\n\r\nexport enum ResponseTypes {\r\n single = 'single',\r\n text = 'text',\r\n ranked = 'ranked',\r\n multiple = 'multiple',\r\n}\r\n\r\nexport interface ISelectedAnswerOption extends IResponseOption {\r\n choiceId?: number;\r\n rank: number;\r\n text: string;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { QuestionTypes } from 'src/app/fit-wizard/models/question.model';\r\n\r\nexport const loadServiceListingQuestions = createAction(\r\n '[Service Listing Component] Load Service Listing Questions',\r\n);\r\n\r\nexport const loadServiceListingQuestionsSuccess = createAction(\r\n '[Service Listing Effects] Load Service Listing Questions Success',\r\n props<{questions: QuestionTypes[]}>()\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { AnswerTypes } from 'src/app/fit-wizard/models/answer.model';\r\n\r\nexport const submitSLWizard = createAction(\r\n '[Service Listing Component] Service Listing Submit Wizard Results',\r\n props<{\r\n form: {[id: number]: AnswerTypes | AnswerTypes[]}\r\n }>()\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { IUpdatedAnswersSL } from 'src/app/fit-wizard/services/fit-questions/fit-questions-utils.service';\r\n\r\n\r\nexport const updateServiceListingQuestions = createAction(\r\n '[Service Listing Update Component] Update Add questions based on responses',\r\n props<{\r\n serviceType: string;\r\n handleService: string;\r\n handlesCash: string;\r\n disasterPlan: string;\r\n respManagement: string;\r\n dataGov: string;\r\n techProprietary: string;\r\n useTech: string;\r\n mobileAppTeam: string;\r\n mobileAppEmployee: string;\r\n whichIntegrations: IUpdatedAnswersSL[];\r\n }>()\r\n)\r\n\r\nexport const addServiceListingQuestions = createAction(\r\n '[Service Listing Add Component] Update Add questions based on responses',\r\n props<{\r\n serviceType: string;\r\n handleService: string;\r\n handlesCash: string;\r\n disasterPlan: string;\r\n respManagement: string;\r\n dataGov: string;\r\n techProprietary: string;\r\n useTech: string;\r\n mobileAppTeam: string;\r\n mobileAppEmployee: string;\r\n whichIntegrations: IUpdatedAnswersSL[];\r\n }>()\r\n)","import { createAction, props } from '@ngrx/store';\r\nimport { AnswerTypes } from 'src/app/fit-wizard/models/answer.model';\r\n\r\nexport const updateSLWizard = createAction(\r\n '[Service Listing Edit Wizard] Service Listing Submit Results',\r\n props<{ form: {[id: number]: AnswerTypes | AnswerTypes[] }}>()\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const hideQuestion = createAction(\r\n '[Service Listing Wizard] Hide Question',\r\n props<{ questionId: number }>()\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { QuestionTypes } from 'src/app/fit-wizard/models/question.model';\r\n\r\nexport const loadSLQuestion = createAction('[Service Listing Component] Get Service Listing Question');\r\n\r\nexport const loadSLQuestionSuccess = createAction(\r\n '[Service Listing Effects] Get Service Listing Question Success',\r\n props<{ questions: QuestionTypes[]}>()\r\n);\r\n","import { IUpdatedAnswersSL } from 'src/app/fit-wizard/services/fit-questions/fit-questions-utils.service';\r\nimport { ServiceListingState } from 'src/app/service-listing/store/reducers/root.reducers';\r\n\r\nexport function serviceListingQuestionsReducer(\r\n state: ServiceListingState,\r\n action: {\r\n serviceType: string;\r\n handleService: string;\r\n handlesCash: string;\r\n disasterPlan: string;\r\n respManagement: string;\r\n dataGov: string;\r\n techProprietary: string;\r\n useTech: string;\r\n mobileAppTeam: string;\r\n mobileAppEmployee: string;\r\n whichIntegrations: IUpdatedAnswersSL[];\r\n },\r\n) {\r\n const isTechnologyServices = action.serviceType === 'Technology Solutions';\r\n const isTechAvailable = action.useTech === 'Yes';\r\n const useTechTools = isTechnologyServices || isTechAvailable;\r\n\r\n const isDSP = action.serviceType === 'Destination Service Provider (DSP)';\r\n const isRMC = action.serviceType === 'Relocation Management Company (RMC)';\r\n const isRMCOrDSP = isDSP || isRMC;\r\n\r\n const isThirdPartyInHouse = action.handleService === 'Combination of in-house and third parties';\r\n\r\n const useMobileAppTeam = action.mobileAppTeam === 'Yes';\r\n const useMobileAppEmployee = action.mobileAppEmployee === 'Yes';\r\n const useMobile = useMobileAppTeam || useMobileAppEmployee;\r\n\r\n const hasIntegrations = (chosenIntegration: string): boolean => {\r\n // check if chosenIntegration is an existing integration that has been selected\r\n\r\n const foundIntegration = [...action.whichIntegrations].find(\r\n (selectedIntegration) => [chosenIntegration].includes(selectedIntegration?.text));\r\n return foundIntegration?.text === chosenIntegration;\r\n }\r\n\r\n const questions = !state.questions.length\r\n ? []\r\n : state.questions.map((q) => {\r\n switch (q?.questionId) {\r\n\r\n case 107:\r\n case 119:\r\n case 148:\r\n case 149:\r\n case 175:\r\n case 177:\r\n return {\r\n ...q,\r\n display: isTechnologyServices\r\n }\r\n\r\n case 114:\r\n case 118:\r\n case 178:\r\n return {\r\n ...q,\r\n display: !isTechnologyServices\r\n }\r\n\r\n case 116:\r\n return {\r\n ...q,\r\n display: isRMCOrDSP\r\n }\r\n\r\n case 117:\r\n return {\r\n ...q,\r\n display: isRMCOrDSP && action.handlesCash === 'Yes'\r\n }\r\n\r\n case 126:\r\n case 127:\r\n case 128:\r\n case 129:\r\n case 130:\r\n case 132:\r\n case 133:\r\n case 144:\r\n case 145:\r\n case 147:\r\n case 150:\r\n case 152:\r\n return {\r\n ...q,\r\n display: useTechTools\r\n }\r\n\r\n case 131:\r\n return {\r\n ...q,\r\n display: useTechTools && (action.dataGov === 'Yes')\r\n }\r\n\r\n case 138:\r\n return {\r\n ...q,\r\n display: isThirdPartyInHouse || action.handleService === 'Third parties'\r\n }\r\n\r\n case 140:\r\n return {\r\n ...q,\r\n display: useTechTools && action.respManagement === 'Yes'\r\n }\r\n\r\n case 141:\r\n return {\r\n ...q,\r\n display: useTechTools && action.disasterPlan === 'Yes'\r\n }\r\n\r\n\r\n case 153:\r\n return {\r\n ...q,\r\n display: useTechTools && hasIntegrations('Payroll')\r\n }\r\n\r\n case 154:\r\n return {\r\n ...q,\r\n display: useTechTools && hasIntegrations('HRIS')\r\n }\r\n\r\n case 155:\r\n return {\r\n ...q,\r\n display: useTechTools && hasIntegrations('Stock Plan Services')\r\n }\r\n\r\n case 156:\r\n return {\r\n ...q,\r\n display: !(action.serviceType === 'Business Travel')\r\n && useTechTools\r\n && hasIntegrations('Travel')\r\n }\r\n\r\n case 157:\r\n return {\r\n ...q,\r\n display: useTechTools && hasIntegrations('Expense/AP')\r\n }\r\n\r\n case 161:\r\n return {\r\n ...q,\r\n display: !(action.serviceType === 'Cost-of-Living Consulting')\r\n && useTechTools\r\n && hasIntegrations('Cost-of-Living Data')\r\n }\r\n\r\n case 162:\r\n return {\r\n ...q,\r\n display: !(action.serviceType === 'Immigration')\r\n && useTechTools\r\n && hasIntegrations('Immigration')\r\n }\r\n\r\n case 163:\r\n return {\r\n ...q,\r\n display: !(action.serviceType === 'Tax')\r\n && useTechTools\r\n && hasIntegrations('Tax')\r\n }\r\n case 164:\r\n return {\r\n ...q,\r\n display: !isRMC && useTechTools && hasIntegrations('Relocation Management Companies')\r\n }\r\n\r\n case 176:\r\n return {\r\n ...q,\r\n display: isTechnologyServices && action.techProprietary === 'No'\r\n }\r\n\r\n\r\n case 179:\r\n case 180:\r\n return {\r\n ...q,\r\n display: !isTechnologyServices && isTechAvailable\r\n }\r\n case 181:\r\n return {\r\n ...q,\r\n display: isThirdPartyInHouse\r\n }\r\n case 192:\r\n return {\r\n ...q,\r\n display: useMobile && useTechTools\r\n }\r\n case 193:\r\n return {\r\n ...q,\r\n display: useTechTools && (action.dataGov === 'Yes')\r\n }\r\n\r\n default:\r\n return {\r\n ...q,\r\n };\r\n }\r\n });\r\n\r\n return {\r\n ...state,\r\n questions,\r\n };\r\n}\r\n","import { createReducer, on } from '@ngrx/store';\r\n\r\nimport {\r\n loadServiceListingQuestions,\r\n loadServiceListingQuestionsSuccess,\r\n addServiceListingQuestions,\r\n loadSLQuestionSuccess,\r\n loadSLQuestion,\r\n updateServiceListingQuestions,\r\n hideQuestion,\r\n} from 'src/app/service-listing/store/actions';\r\nimport { serviceListingQuestionsReducer } from 'src/app/service-listing/store/reducers/service-listing.reducers';\r\nimport { QuestionTypes } from 'src/app/fit-wizard/models/question.model';\r\n\r\nexport const serviceListingFeatureKey = 'service-listing';\r\n\r\nexport interface ServiceListingState {\r\n questions: QuestionTypes[];\r\n}\r\n\r\nconst initialFitState: ServiceListingState = {\r\n questions: [],\r\n};\r\n\r\nexport const reducer = createReducer(\r\n initialFitState,\r\n\r\n on(loadServiceListingQuestions, (state) => ({\r\n ...state,\r\n questions: [],\r\n })),\r\n\r\n on(loadServiceListingQuestionsSuccess, (state, { questions }) => ({\r\n ...state,\r\n questions,\r\n })),\r\n\r\n on(addServiceListingQuestions, serviceListingQuestionsReducer),\r\n on(updateServiceListingQuestions, serviceListingQuestionsReducer),\r\n\r\n on(loadSLQuestion, (state) => ({\r\n ...state,\r\n questions: [],\r\n })),\r\n\r\n on(loadSLQuestionSuccess, (state, { questions }) => ({\r\n ...state,\r\n questions,\r\n })),\r\n\r\n on(hideQuestion, (state, { questionId }) => {\r\n const questions = state.questions.map((q) =>\r\n q.questionId === questionId\r\n ? {\r\n ...q,\r\n display: false,\r\n }\r\n : {\r\n ...q,\r\n }\r\n );\r\n return {\r\n ...state,\r\n questions,\r\n };\r\n }),\r\n\r\n);\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { serviceListingFeatureKey, ServiceListingState } from 'src/app/service-listing/store/reducers/root.reducers';\r\n\r\nconst selectServiceListingState = createFeatureSelector(serviceListingFeatureKey);\r\n\r\nexport const selectQuestions = createSelector(\r\n selectServiceListingState,\r\n (state) => state.questions\r\n);\r\n\r\n","import { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { filter, map, take, tap } from 'rxjs/operators';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { FormUtilsService } from '../../services/form-utils.service';\r\nimport { QuestionIdsSL } from 'src/app/fit-wizard/models/question.model';\r\nimport { ServiceListingState } from 'src/app/service-listing/store/reducers/root.reducers';\r\nimport { ServiceListing, addServiceListingQuestions, loadServiceListingQuestions, submitSLWizard } from 'src/app/service-listing';\r\nimport { ITextAnswer, AnswerTypes } from '../../models/answer.model';\r\n\r\n@Component({\r\n selector: 'maas-service-listing-matching',\r\n templateUrl: './service-listing-matching.component.html',\r\n})\r\nexport class ServiceListingMatchingComponent implements OnInit, AfterViewInit {\r\n formGroup = new UntypedFormGroup({});\r\n questions$ = this.store.select(ServiceListing.selectQuestions);\r\n\r\n constructor(\r\n private store: Store,\r\n private formUtils: FormUtilsService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(loadServiceListingQuestions());\r\n\r\n // dynamically generate the form from the questions configuration\r\n this.questions$.pipe(\r\n filter(questions => questions.length > 0),\r\n take(1),\r\n tap(questions => {\r\n questions.forEach(({ questionId }) => {\r\n this.formUtils.addFormControlSl(questionId.toString(), this.formGroup);\r\n })\r\n }\r\n )\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.formGroup.valueChanges.pipe(\r\n map(changes => ({\r\n serviceType: changes[QuestionIdsSL.serviceType]?.text || '',\r\n handleService: changes[QuestionIdsSL.handleService]?.text || '',\r\n handlesCash: changes[QuestionIdsSL.handlesCash]?.text || '',\r\n dataGov: changes[QuestionIdsSL.dataGov]?.text || '',\r\n respManagement: changes[QuestionIdsSL.respManagement]?.text || '',\r\n disasterPlan: changes[QuestionIdsSL.disasterPlan]?.text || '',\r\n mobileAppTeam: changes[QuestionIdsSL.mobileAppTeam]?.text || '',\r\n mobileAppEmployee: changes[QuestionIdsSL.mobileAppEmployee]?.text || '',\r\n techProprietary: changes[QuestionIdsSL.techProprietary]?.text || '',\r\n useTech: changes[QuestionIdsSL.useTech]?.text || '',\r\n whichIntegrations: changes[QuestionIdsSL.whichIntegrations] || '',\r\n })),\r\n tap((c) => this.store.dispatch(addServiceListingQuestions(c)))\r\n ).subscribe();\r\n }\r\n\r\n onSubmitted(form: {[questionId: string]: AnswerTypes | AnswerTypes[]}) {\r\n (form[QuestionIdsSL.appName] as ITextAnswer)?.text?.replace(/^https?:\\/\\//, '');\r\n this.store.dispatch(submitSLWizard({ form }))\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n","
\r\n \r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { ServiceListingMatchingComponent } from 'src/app/fit-wizard/containers/service-listing-matching/service-listing-matching.component';\r\nimport { ServiceListingResultsLoadingComponent } from 'src/app/fit-wizard/containers/service-listing-results-loading/service-listing-results-loading.component';\r\nimport { ServiceListingMatchingUpdateComponent } from '../fit-wizard/containers/service-listing-matching-update/service-listing-matching-update.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'matching',\r\n component: ServiceListingMatchingComponent,\r\n title: 'Service listing matching'\r\n },\r\n {\r\n path: 'edit',\r\n component: ServiceListingMatchingUpdateComponent,\r\n title: 'Edit service listing'\r\n },\r\n\r\n {\r\n path: 'sl-results',\r\n component: ServiceListingResultsLoadingComponent,\r\n title: 'Processing service listing...'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class ServiceListingRoutingModule { }\r\n","import { AfterViewInit, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { filter, map, take, tap } from 'rxjs/operators';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { FormUtilsService } from '../../services/form-utils.service';\r\nimport { QuestionIdsSL } from 'src/app/fit-wizard/models/question.model';\r\nimport { ServiceListingState } from 'src/app/service-listing/store/reducers/root.reducers';\r\nimport { ServiceListing, hideQuestion, loadSLQuestion, updateSLWizard, updateServiceListingQuestions } from 'src/app/service-listing';\r\nimport { ITextAnswer } from '../../models/answer.model';\r\n\r\n@Component({\r\n selector: 'maas-service-listing-matching-update',\r\n templateUrl: './service-listing-matching-update.component.html',\r\n})\r\nexport class ServiceListingMatchingUpdateComponent implements OnInit, AfterViewInit {\r\n formGroup = new UntypedFormGroup({});\r\n questions$ = this.store.select(ServiceListing.selectQuestions);\r\n loaded = false;\r\n\r\n constructor(\r\n private store: Store,\r\n private formUtils: FormUtilsService,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.store.dispatch(loadSLQuestion());\r\n\r\n // dynamically generate the form from the questions configuration\r\n this.questions$.pipe(\r\n filter(questions => questions.length > 0),\r\n take(1)\r\n ).subscribe(questions => {\r\n let form = new UntypedFormGroup({});\r\n\r\n // hide service type question\r\n this.store.dispatch(hideQuestion({questionId: QuestionIdsSL.serviceType}));\r\n\r\n questions.forEach(({ questionId, responseType, responseOptions, selectedAnswer }) => {\r\n\r\n this.formUtils.addFormControlSl(questionId.toString(), form);\r\n\r\n if (responseType === 'single' && selectedAnswer?.length) {\r\n // do not patch form if no answers provided -\r\n // there are cases where selected answers will be empty array\r\n const answer = selectedAnswer[0].choiceId;\r\n form.patchValue({ [questionId.toString()]: responseOptions.find(o => o.value === answer) })\r\n }\r\n\r\n if (responseType === 'text') {\r\n // formgroup expects text value for input field\r\n selectedAnswer?.forEach((sa) => {\r\n form.patchValue({ [questionId.toString()]: sa.text });\r\n })\r\n }\r\n\r\n // multiple dropdown question\r\n if (responseType === 'multiple') {\r\n\r\n form.patchValue({\r\n [questionId.toString()]: responseOptions.filter(o => selectedAnswer?.some(a => a.choiceId === o.value))\r\n })\r\n }\r\n\r\n if (responseType === 'ranked') {\r\n form.patchValue({[questionId.toString()]: responseOptions})\r\n }\r\n });\r\n\r\n this.formGroup = form;\r\n this.store.dispatch(updateServiceListingQuestions(form.getRawValue()));\r\n this.loaded = true;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.formGroup?.valueChanges.pipe(\r\n filter((change ) => this.loaded && Object.keys(change).length > 0),\r\n map(changes => ({\r\n serviceType: changes[QuestionIdsSL.serviceType]?.text || '',\r\n handleService: changes[QuestionIdsSL.handleService]?.text || '',\r\n handlesCash: changes[QuestionIdsSL.handlesCash]?.text || '',\r\n dataGov: changes[QuestionIdsSL.dataGov]?.text || '',\r\n respManagement: changes[QuestionIdsSL.respManagement]?.text || '',\r\n disasterPlan: changes[QuestionIdsSL.disasterPlan]?.text || '',\r\n mobileAppTeam: changes[QuestionIdsSL.mobileAppTeam]?.text || '',\r\n mobileAppEmployee: changes[QuestionIdsSL.mobileAppEmployee]?.text || '',\r\n techProprietary: changes[QuestionIdsSL.techProprietary]?.text || '',\r\n useTech: changes[QuestionIdsSL.useTech]?.text || '',\r\n whichIntegrations: changes[QuestionIdsSL.whichIntegrations] || ''\r\n })),\r\n tap((c) => this.store.dispatch(updateServiceListingQuestions(c)))\r\n ).subscribe();\r\n }\r\n\r\n onSubmitted(form: {[questionId: string]: any }) {\r\n (form[QuestionIdsSL.appName] as ITextAnswer)?.text?.replace(/^https?:\\/\\//, '');\r\n form[QuestionIdsSL.serviceType] = [{ choiceId: this.formGroup?.get(QuestionIdsSL.serviceType.toString())?.value.value }];\r\n this.store.dispatch(updateSLWizard({ form }))\r\n }\r\n}\r\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { switchMap, map, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport {\r\n loadServiceListingQuestions,\r\n loadServiceListingQuestionsSuccess,\r\n submitSLWizard,\r\n updateSLWizard,\r\n loadSLQuestion,\r\n loadSLQuestionSuccess,\r\n} from 'src/app/service-listing/store/actions/';\r\nimport { FitQuestionsService } from 'src/app/fit-wizard/services/fit-questions/fit-questions.service';\r\nimport { FitDataService } from 'src/app/fit-wizard/services/fit-data/fit-data.service';\r\nimport { QuestionTypes } from 'src/app/fit-wizard/models/question.model';\r\nimport { Store } from '@ngrx/store';\r\nimport { selectQueryParams, selectRouteParams } from '@core';\r\nimport { ServiceListingState } from '../reducers/root.reducers';\r\n\r\n@Injectable()\r\nexport class ServiceListingEffects {\r\n loadSerivceListingQuestions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(loadServiceListingQuestions),\r\n switchMap(() =>\r\n this.fit.getServiceListingQuestions().pipe(\r\n map((questions: QuestionTypes[]) =>\r\n loadServiceListingQuestionsSuccess({ questions }))\r\n )\r\n )\r\n )\r\n );\r\n\r\n loadSLQuestion$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(loadSLQuestion),\r\n withLatestFrom(this.store.select(selectRouteParams), this.store.select(selectQueryParams)),\r\n switchMap(([_, { clientId }, { clientServiceId }]) =>\r\n this.fit.getListing(clientId, clientServiceId).pipe(\r\n map((questions) => loadSLQuestionSuccess({ questions })),\r\n )\r\n )\r\n )\r\n );\r\n\r\n submitSLWizard$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(submitSLWizard),\r\n withLatestFrom(this.store.select(selectRouteParams)),\r\n tap(([_, {clientId}]) => {\r\n this.router.navigateByUrl(`app/${clientId}/service-listing/sl-results`)\r\n }),\r\n switchMap(([{ form }, { clientId }]) =>\r\n this.fitData.submitServiceListingForm(clientId, form)\r\n )\r\n ),\r\n { dispatch: false}\r\n );\r\n\r\n updateSLWizard$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(updateSLWizard),\r\n withLatestFrom(this.store.select(selectRouteParams), this.store.select(selectQueryParams)),\r\n tap(([_, {clientId}]) => {\r\n this.router.navigateByUrl(`app/${clientId}/service-listing/sl-results`)\r\n }),\r\n switchMap(([{ form }, { clientId }, { clientServiceId }]) =>\r\n this.fitData.updateServiceListingForm(clientId, form, clientServiceId)\r\n )\r\n ),\r\n { dispatch: false}\r\n );\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private fit: FitQuestionsService,\r\n private router: Router,\r\n private fitData: FitDataService,\r\n private store: Store\r\n ) {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ServiceListingRoutingModule } from './service-listing-routing.module';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { ServiceListingEffects } from './store/effects/service-listing.effects';\r\nimport { serviceListingFeatureKey, reducer } from './store/reducers/root.reducers';\r\nimport { FormUtilsService } from '../fit-wizard/services/form-utils.service';\r\nimport { SharedModule } from '../@shared/shared.module';\r\n\r\n\r\n@NgModule({\r\n providers: [FormUtilsService],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n ServiceListingRoutingModule,\r\n StoreModule.forFeature(serviceListingFeatureKey, reducer),\r\n EffectsModule.forFeature([ServiceListingEffects])\r\n ]\r\n})\r\nexport class ServiceListingModule { }\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":[19]}