@the-liberators/ngx-scrumteamsurvey-tools 2.3.23 → 2.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +707 -673
  2. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs.map +1 -1
  3. package/package.json +8 -10
  4. package/esm2022/lib/actions/actions.module.mjs +0 -128
  5. package/esm2022/lib/actions/components/action-list/action-list.component.mjs +0 -118
  6. package/esm2022/lib/actions/components/action-manage/action-manage.component.mjs +0 -164
  7. package/esm2022/lib/actions/components/action-tile/action-tile.component.mjs +0 -79
  8. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.component.mjs +0 -75
  9. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.directive.mjs +0 -30
  10. package/esm2022/lib/actions/dialogs/dialog-filters/dialog-filters.component.mjs +0 -113
  11. package/esm2022/lib/actions/dialogs/dialog-manageaction/dialog-manageaction.component.mjs +0 -78
  12. package/esm2022/lib/actions/interfaces/IActionState.mjs +0 -2
  13. package/esm2022/lib/actions/models/actionDto.mjs +0 -43
  14. package/esm2022/lib/actions/models/actionOptionsDto.mjs +0 -9
  15. package/esm2022/lib/actions/models/actionPrefillDto.mjs +0 -3
  16. package/esm2022/lib/actions/models/actionResponseDto.mjs +0 -7
  17. package/esm2022/lib/actions/models/exportRequestDto.mjs +0 -3
  18. package/esm2022/lib/actions/pipes/interventionOwnerToString.pipe.mjs +0 -32
  19. package/esm2022/lib/actions/pipes/interventionStateToString.pipe.mjs +0 -26
  20. package/esm2022/lib/actions/pipes/interventionTypeToString.pipe.mjs +0 -30
  21. package/esm2022/lib/actions/services/actionClientConfig.mjs +0 -30
  22. package/esm2022/lib/actions/services/actionService.mjs +0 -66
  23. package/esm2022/lib/add-calendar/generators/base-calendar.generator.mjs +0 -46
  24. package/esm2022/lib/add-calendar/generators/google-calendar.generator.mjs +0 -16
  25. package/esm2022/lib/add-calendar/generators/ics-calendar.generator.mjs +0 -33
  26. package/esm2022/lib/add-calendar/generators/outlook-calendar.generator.mjs +0 -17
  27. package/esm2022/lib/add-calendar/generators/yahoo-calendar.generator.mjs +0 -28
  28. package/esm2022/lib/add-calendar/index.mjs +0 -4
  29. package/esm2022/lib/add-calendar/model/calendar-event.model.mjs +0 -2
  30. package/esm2022/lib/add-calendar/model/calendar-type.enum.mjs +0 -9
  31. package/esm2022/lib/add-calendar/ng-add-to-calendar.module.mjs +0 -18
  32. package/esm2022/lib/add-calendar/service/ng-add-to-calendar.service.mjs +0 -33
  33. package/esm2022/lib/alerts/alerts.module.mjs +0 -24
  34. package/esm2022/lib/alerts/components/alerts-list/alerts.component.mjs +0 -105
  35. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.component.mjs +0 -25
  36. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.directive.mjs +0 -35
  37. package/esm2022/lib/alerts/interfaces/IAlertState.mjs +0 -2
  38. package/esm2022/lib/alerts/models/alertDto.model.mjs +0 -3
  39. package/esm2022/lib/alerts/models/alertFilterDto.model.mjs +0 -3
  40. package/esm2022/lib/alerts/models/alertResponseDto.model.mjs +0 -7
  41. package/esm2022/lib/alerts/models/dismissAlertRequestDto.model.mjs +0 -3
  42. package/esm2022/lib/alerts/services/alertClientConfig.mjs +0 -30
  43. package/esm2022/lib/alerts/services/alerts.service.mjs +0 -31
  44. package/esm2022/lib/apiUrlToken.mjs +0 -30
  45. package/esm2022/lib/branding/brandBackground.directive.mjs +0 -46
  46. package/esm2022/lib/branding/brandConditionalBackgroundColor.directive.mjs +0 -58
  47. package/esm2022/lib/branding/brandConditionalColor.directive.mjs +0 -63
  48. package/esm2022/lib/branding/brandHoverColor.directive.mjs +0 -84
  49. package/esm2022/lib/branding/branding.module.mjs +0 -68
  50. package/esm2022/lib/branding/brandingProvider.service.mjs +0 -33
  51. package/esm2022/lib/branding/components/site-default-footer/site-default-footer.component.mjs +0 -37
  52. package/esm2022/lib/branding/components/site-default-header/site-default-header.component.mjs +0 -74
  53. package/esm2022/lib/branding/components/site-micro-footer/site-micro-footer.component.mjs +0 -34
  54. package/esm2022/lib/community/community.module.mjs +0 -31
  55. package/esm2022/lib/community/components/gethelp-form/gethelp-form.component.mjs +0 -79
  56. package/esm2022/lib/community/components/meetups/meetups.component.mjs +0 -69
  57. package/esm2022/lib/community/components/recentcontent/recentcontent.component.mjs +0 -29
  58. package/esm2022/lib/community/interfaces/ICommunityState.mjs +0 -2
  59. package/esm2022/lib/community/models/meetupDto.mjs +0 -6
  60. package/esm2022/lib/community/models/resourceDto.mjs +0 -6
  61. package/esm2022/lib/community/services/communityClientConfig.mjs +0 -30
  62. package/esm2022/lib/componentBase.mjs +0 -33
  63. package/esm2022/lib/componentWithViewStateBase.mjs +0 -38
  64. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -52
  65. package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -24
  66. package/esm2022/lib/components/expand/expand.component.mjs +0 -41
  67. package/esm2022/lib/components/expand/expand.module.mjs +0 -24
  68. package/esm2022/lib/components/loading/loading.component.mjs +0 -33
  69. package/esm2022/lib/components/loading/loading.module.mjs +0 -24
  70. package/esm2022/lib/components/mat-tags/mat-tags.component.mjs +0 -82
  71. package/esm2022/lib/components/mat-tags/mat-tags.module.mjs +0 -47
  72. package/esm2022/lib/components/metadata-input/metadata-input.component.mjs +0 -99
  73. package/esm2022/lib/components/metadata-input/metadata-input.module.mjs +0 -39
  74. package/esm2022/lib/components/multi-email-input/multi-email-input.component.mjs +0 -112
  75. package/esm2022/lib/components/multi-email-input/multi-email-input.module.mjs +0 -39
  76. package/esm2022/lib/components/paginator/paginator.component.mjs +0 -50
  77. package/esm2022/lib/components/paginator/paginator.module.mjs +0 -40
  78. package/esm2022/lib/components/quantity-selector/quantity-selector.component.mjs +0 -90
  79. package/esm2022/lib/components/quantity-selector/quantity-selector.module.mjs +0 -43
  80. package/esm2022/lib/components/select-list/select-list.component.mjs +0 -73
  81. package/esm2022/lib/components/select-list/select-list.module.mjs +0 -46
  82. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.component.mjs +0 -30
  83. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.module.mjs +0 -36
  84. package/esm2022/lib/components/tabnavigator/tabnavigator.component.mjs +0 -36
  85. package/esm2022/lib/components/tabnavigator/tabnavigator.module.mjs +0 -32
  86. package/esm2022/lib/components/topicselector/customCheckValidator.mjs +0 -15
  87. package/esm2022/lib/components/topicselector/minTopicsSelectedValidator.mjs +0 -15
  88. package/esm2022/lib/components/topicselector/topic-selector.component.mjs +0 -220
  89. package/esm2022/lib/components/topicselector/topic-selector.module.mjs +0 -55
  90. package/esm2022/lib/dialogs/dialog-account/account.service.mjs +0 -29
  91. package/esm2022/lib/dialogs/dialog-account/dialog-account.component.mjs +0 -86
  92. package/esm2022/lib/dialogs/dialog-account/dialog-account.module.mjs +0 -21
  93. package/esm2022/lib/dialogs/dialog-account/resetPasswordRequestDto.model.mjs +0 -3
  94. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.component.mjs +0 -48
  95. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.module.mjs +0 -21
  96. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.component.mjs +0 -76
  97. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.module.mjs +0 -23
  98. package/esm2022/lib/dialogs/dialog-resourcedownload/resourceDownload.service.mjs +0 -26
  99. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.component.mjs +0 -25
  100. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.directive.mjs +0 -30
  101. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.module.mjs +0 -19
  102. package/esm2022/lib/dialogs/dialog-support/contactDto.mjs +0 -2
  103. package/esm2022/lib/dialogs/dialog-support/contactService.service.mjs +0 -25
  104. package/esm2022/lib/dialogs/dialog-support/contactTypeDto.mjs +0 -2
  105. package/esm2022/lib/dialogs/dialog-support/dialog-support.component.mjs +0 -90
  106. package/esm2022/lib/dialogs/dialog-support/dialog-support.directive.mjs +0 -131
  107. package/esm2022/lib/dialogs/dialog-support/dialog-support.module.mjs +0 -27
  108. package/esm2022/lib/directives/backbutton/backbutton.directive.mjs +0 -34
  109. package/esm2022/lib/directives/backbutton/backbutton.module.mjs +0 -17
  110. package/esm2022/lib/directives/guards/guards.module.mjs +0 -30
  111. package/esm2022/lib/directives/guards/validChangeTokenGuard.mjs +0 -27
  112. package/esm2022/lib/directives/guards/validKeyGuard.mjs +0 -26
  113. package/esm2022/lib/directives/guards/validSnapshotKeyGuard.mjs +0 -27
  114. package/esm2022/lib/directives/guards/validTeamKeyGuard.mjs +0 -27
  115. package/esm2022/lib/errorhandling/error.model.mjs +0 -16
  116. package/esm2022/lib/errorhandling/errorHandler.mjs +0 -96
  117. package/esm2022/lib/errorhandling/errorService.module.mjs +0 -24
  118. package/esm2022/lib/errorhandling/errorServiceConfig.mjs +0 -34
  119. package/esm2022/lib/guides/components/imageslider/imageslider.component.mjs +0 -52
  120. package/esm2022/lib/guides/components/resumeguidehover/resumeguidehover.component.mjs +0 -40
  121. package/esm2022/lib/guides/dialogs/dialog-guide/dialog-guide.component.mjs +0 -144
  122. package/esm2022/lib/guides/dialogs/dialog-guides/dialog-guides.component.mjs +0 -90
  123. package/esm2022/lib/guides/directives/startguide/startguide.directive.mjs +0 -27
  124. package/esm2022/lib/guides/guides.module.mjs +0 -92
  125. package/esm2022/lib/guides/interfaces/IGuideState.mjs +0 -2
  126. package/esm2022/lib/guides/models/guideCollectionDto.mjs +0 -19
  127. package/esm2022/lib/guides/services/guidePopup.service.mjs +0 -80
  128. package/esm2022/lib/guides/services/guideStateInBackEnd.service.mjs +0 -54
  129. package/esm2022/lib/guides/services/guideStateInBrowser.service.mjs +0 -56
  130. package/esm2022/lib/guides/services/guidesClientConfig.mjs +0 -30
  131. package/esm2022/lib/guides/services/interfaces.mjs +0 -2
  132. package/esm2022/lib/models/brandingSettingsDto.mjs +0 -5
  133. package/esm2022/lib/models/channelDto.mjs +0 -18
  134. package/esm2022/lib/models/clientInfoDto.mjs +0 -7
  135. package/esm2022/lib/models/contextItemDto.mjs +0 -7
  136. package/esm2022/lib/models/featuresDto.mjs +0 -3
  137. package/esm2022/lib/models/keyValueDto.mjs +0 -7
  138. package/esm2022/lib/models/modelStructureDto.mjs +0 -46
  139. package/esm2022/lib/models/paginatedResponse.mjs +0 -6
  140. package/esm2022/lib/models/pagingOptions.mjs +0 -3
  141. package/esm2022/lib/models/selectListItem.mjs +0 -8
  142. package/esm2022/lib/models/userInfoDto.mjs +0 -16
  143. package/esm2022/lib/models/userSettingsDto.mjs +0 -65
  144. package/esm2022/lib/pipes/callback/callback.module.mjs +0 -17
  145. package/esm2022/lib/pipes/callback/callback.pipe.mjs +0 -20
  146. package/esm2022/lib/pipes/dateRange/ngx-dateRange.module.mjs +0 -17
  147. package/esm2022/lib/pipes/dateRange/ngx-dateRange.pipe.mjs +0 -36
  148. package/esm2022/lib/pipes/dateRange/ngx-dateRangeDto.model.mjs +0 -3
  149. package/esm2022/lib/pipes/segmentName/segmentName.module.mjs +0 -17
  150. package/esm2022/lib/pipes/segmentName/segmentName.pipe.mjs +0 -31
  151. package/esm2022/lib/pipes/slugify/ngx-slugify.module.mjs +0 -17
  152. package/esm2022/lib/pipes/slugify/ngx-slugify.pipe.mjs +0 -24
  153. package/esm2022/lib/results/components/age-indicator/age-indicator.component.mjs +0 -37
  154. package/esm2022/lib/results/components/arrow/arrow.component.mjs +0 -224
  155. package/esm2022/lib/results/components/badge/badge.component.mjs +0 -29
  156. package/esm2022/lib/results/components/badge-progression/badge-progression.component.mjs +0 -25
  157. package/esm2022/lib/results/components/badge-streak/badge-streak.component.mjs +0 -29
  158. package/esm2022/lib/results/components/badges/badges.component.mjs +0 -40
  159. package/esm2022/lib/results/components/benchmark-indicator/benchmark-indicator.component.mjs +0 -21
  160. package/esm2022/lib/results/components/coachingcenter-teaser/coachingcenter-teaser.component.mjs +0 -28
  161. package/esm2022/lib/results/components/delta-arrow/delta-arrow.component.mjs +0 -37
  162. package/esm2022/lib/results/components/doityourself/doityourself.component.mjs +0 -17
  163. package/esm2022/lib/results/components/doityourselfworkshops/doityourselfworkshops.component.mjs +0 -41
  164. package/esm2022/lib/results/components/factor-axis/factor-axis.component.mjs +0 -62
  165. package/esm2022/lib/results/components/factors/factors.component.mjs +0 -46
  166. package/esm2022/lib/results/components/filter-tags/filter-tags.component.mjs +0 -31
  167. package/esm2022/lib/results/components/focusareas/focusareas.component.mjs +0 -43
  168. package/esm2022/lib/results/components/footer/footer.component.mjs +0 -30
  169. package/esm2022/lib/results/components/impact-indicator/impact-indicator.component.mjs +0 -20
  170. package/esm2022/lib/results/components/liberatorkits/liberatorkits.component.mjs +0 -29
  171. package/esm2022/lib/results/components/limitationsapply/limitationsapply.component.mjs +0 -20
  172. package/esm2022/lib/results/components/model/model.component.mjs +0 -79
  173. package/esm2022/lib/results/components/model-factor/model-factor.component.mjs +0 -95
  174. package/esm2022/lib/results/components/model-factor-breakdown/model-factor-breakdown.component.mjs +0 -44
  175. package/esm2022/lib/results/components/model-switcher/model-switcher.component.mjs +0 -33
  176. package/esm2022/lib/results/components/nav-button/nav-button.component.mjs +0 -85
  177. package/esm2022/lib/results/components/participants/participants.component.mjs +0 -78
  178. package/esm2022/lib/results/components/quicktips/quicktips.component.mjs +0 -77
  179. package/esm2022/lib/results/components/recommendation/recommendation.component.mjs +0 -53
  180. package/esm2022/lib/results/components/recommendations/recommendations.component.mjs +0 -57
  181. package/esm2022/lib/results/components/research/research.component.mjs +0 -16
  182. package/esm2022/lib/results/components/roadmap/roadmap.component.mjs +0 -29
  183. package/esm2022/lib/results/components/teamdashboard-teaser/teamdashboard-teaser.component.mjs +0 -30
  184. package/esm2022/lib/results/components/teameffectiveness/teameffectiveness.component.mjs +0 -40
  185. package/esm2022/lib/results/components/termsupdated/termsupdated.component.mjs +0 -37
  186. package/esm2022/lib/results/components/tip-badge/tip-badge.component.mjs +0 -53
  187. package/esm2022/lib/results/components/trends/trends.component.mjs +0 -138
  188. package/esm2022/lib/results/components/update-in-progress/update-in-progress.component.mjs +0 -36
  189. package/esm2022/lib/results/components/userprofile/userprofile.component.mjs +0 -166
  190. package/esm2022/lib/results/components/video/video.component.mjs +0 -23
  191. package/esm2022/lib/results/components/widget-factorscore/widget-factorscore.component.mjs +0 -41
  192. package/esm2022/lib/results/components/widget-participationrate/widget-participationrate.component.mjs +0 -32
  193. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.component.mjs +0 -94
  194. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.directive.mjs +0 -30
  195. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.component.mjs +0 -93
  196. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.directive.mjs +0 -30
  197. package/esm2022/lib/results/dialogs/dialog-modelfilter/dialog-modelfilter.component.mjs +0 -84
  198. package/esm2022/lib/results/dialogs/dialog-notes/dialog-notes.component.mjs +0 -46
  199. package/esm2022/lib/results/dialogs/dialog-settings/dialog-settings.component.mjs +0 -167
  200. package/esm2022/lib/results/interfaces/IResultsState.mjs +0 -2
  201. package/esm2022/lib/results/models/badgeDto.mjs +0 -10
  202. package/esm2022/lib/results/models/dataSetDto.mjs +0 -7
  203. package/esm2022/lib/results/models/dimensionResultDto.mjs +0 -3
  204. package/esm2022/lib/results/models/exportRequestDto.mjs +0 -11
  205. package/esm2022/lib/results/models/factorScoreDto.mjs +0 -96
  206. package/esm2022/lib/results/models/localUserDto.model.mjs +0 -4
  207. package/esm2022/lib/results/models/participantDto.model.mjs +0 -4
  208. package/esm2022/lib/results/models/snapshotDto.model.mjs +0 -4
  209. package/esm2022/lib/results/models/snapshotMetaDataDto.mjs +0 -5
  210. package/esm2022/lib/results/models/teamDto.model.mjs +0 -4
  211. package/esm2022/lib/results/models/teamListResponseDto.mjs +0 -6
  212. package/esm2022/lib/results/models/teamMetaDataDto.mjs +0 -11
  213. package/esm2022/lib/results/models/trendDataRequestDto.model.mjs +0 -3
  214. package/esm2022/lib/results/models/userListResponseDto.mjs +0 -6
  215. package/esm2022/lib/results/models/widgetDataDto.mjs +0 -3
  216. package/esm2022/lib/results/results.module.mjs +0 -385
  217. package/esm2022/lib/results/services/account.service.mjs +0 -24
  218. package/esm2022/lib/results/services/dimissPopupService.mjs +0 -18
  219. package/esm2022/lib/results/services/exportService.mjs +0 -30
  220. package/esm2022/lib/results/services/factorService.mjs +0 -24
  221. package/esm2022/lib/results/services/resultsClientConfig.mjs +0 -30
  222. package/esm2022/lib/results/services/terms.service.mjs +0 -24
  223. package/esm2022/lib/results/services/trend.service.mjs +0 -24
  224. package/esm2022/lib/results/services/userProfile.service.mjs +0 -41
  225. package/esm2022/lib/validators/domainValidator.mjs +0 -14
  226. package/esm2022/lib/validators/matchInputValidator.mjs +0 -25
  227. package/esm2022/lib/validators/maxSelectedValidator.mjs +0 -9
  228. package/esm2022/lib/viewModel/interfaces.mjs +0 -6
  229. package/esm2022/lib/viewModel/reloadStrategies/noReloadStrategy.mjs +0 -22
  230. package/esm2022/lib/viewModel/reloadStrategies/reloadOnPushStrategy.mjs +0 -52
  231. package/esm2022/lib/viewModel/services/sessionIdInterceptor.service.mjs +0 -31
  232. package/esm2022/lib/viewModel/services/sessionIdProvider.service.mjs +0 -22
  233. package/esm2022/lib/viewModel/userSettings.service.mjs +0 -32
  234. package/esm2022/lib/viewModel/viewModelState.module.mjs +0 -31
  235. package/esm2022/lib/viewModel/viewModelState.service.mjs +0 -79
  236. package/esm2022/lib/viewModel/viewModelStateConfig.mjs +0 -30
  237. package/esm2022/public-api.mjs +0 -224
  238. package/esm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +0 -5
@@ -1,166 +0,0 @@
1
- import { HttpEventType, HttpResponse } from '@angular/common/http';
2
- import { Component, Inject } from '@angular/core';
3
- import { Validators } from '@angular/forms';
4
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
5
- import { UserProfileDto } from '../../../models/userInfoDto';
6
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@auth0/auth0-angular";
9
- import * as i2 from "../../services/userProfile.service";
10
- import * as i3 from "../../services/account.service";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "@angular/material/snack-bar";
13
- import * as i6 from "@angular/router";
14
- import * as i7 from "@angular/common";
15
- import * as i8 from "@angular/material/input";
16
- import * as i9 from "@angular/material/form-field";
17
- import * as i10 from "../../../viewModel/viewModelState.service";
18
- export class UserProfileComponent extends ComponentWithViewStateBase {
19
- constructor(state, authService, userProfileService, accountService, formBuilder, snackbar, route) {
20
- super(state, snackbar);
21
- this.state = state;
22
- this.authService = authService;
23
- this.userProfileService = userProfileService;
24
- this.accountService = accountService;
25
- this.formBuilder = formBuilder;
26
- this.snackbar = snackbar;
27
- this.route = route;
28
- this.loading = false;
29
- this.createForm();
30
- this.authService.user$.subscribe((profile) => {
31
- this.usesMFA = profile.use_mfa;
32
- this.email = profile.email;
33
- });
34
- }
35
- ngOnInit() {
36
- super.ngOnInit();
37
- }
38
- createForm() {
39
- this.form = this.formBuilder.group({
40
- name: ["", [Validators.required, Validators.maxLength(50)]],
41
- newEmail: ["", [Validators.required, Validators.email]]
42
- });
43
- }
44
- ;
45
- async onSubmit(formDirective) {
46
- if (!this.form.valid) {
47
- return;
48
- }
49
- this.loading = true;
50
- await this.authService.loginWithPopup({ authorizationParams: { max_age: 1 } }).subscribe(success => {
51
- var updateRequest = new UserProfileDto();
52
- updateRequest.name = this.form.controls.name.value;
53
- updateRequest.email = this.form.controls.newEmail.value;
54
- try {
55
- this.userProfileService.update(updateRequest).subscribe(success => {
56
- this.showSuccess("Your profile was updated");
57
- });
58
- }
59
- catch (ex) {
60
- this.form.controls.newEmail.setErrors({ alreadyExists: true });
61
- }
62
- }, error => {
63
- });
64
- this.loading = false;
65
- }
66
- setChangeEmail() {
67
- this.showEmailInput = true;
68
- this.form.controls.newEmail.enable();
69
- }
70
- uploadAvatar($fileInput) {
71
- this.loading = true;
72
- const file = ($fileInput.target.files[0]);
73
- const reader = new FileReader();
74
- reader.onload = (e) => {
75
- if (file.type != "image/png" && file.type != "image/jpeg") {
76
- alert("The file must be a png or jpg file. You uploaded a file of type " + file.type);
77
- this.loading = false;
78
- }
79
- const image = new Image();
80
- image.src = e.target.result;
81
- image.onload = rs => {
82
- const img_height = rs.currentTarget['height'];
83
- const img_width = rs.currentTarget['width'];
84
- if (img_height > 500 && img_width > 500) {
85
- alert("The logo is too large. Please limit to a picture of 500x500 pixels.");
86
- this.loading = false;
87
- }
88
- else {
89
- this.userProfileService.setAvatar(file)
90
- .subscribe(event => {
91
- if (event.type === HttpEventType.UploadProgress) {
92
- }
93
- else if (event instanceof HttpResponse) {
94
- }
95
- });
96
- }
97
- };
98
- };
99
- reader.readAsDataURL(file);
100
- }
101
- ;
102
- clearAvatar() {
103
- this.loading = true;
104
- this.userProfileService.clearAvatar()
105
- .subscribe(event => {
106
- this.loading = false;
107
- this.userProfile.avatarUrl = null;
108
- this.changeAvatar = false;
109
- });
110
- }
111
- ;
112
- sendPasswordReset() {
113
- this.loading = true;
114
- this.accountService.sendResetPassword(this.email).subscribe(success => {
115
- this.loading = false;
116
- super.showSuccess('We sent an e-mail to ' + this.email + ' to change your password');
117
- });
118
- }
119
- sendMFAEnrollment() {
120
- this.loading = true;
121
- this.userProfileService.sendMFAEnrollment().subscribe(success => {
122
- this.loading = false;
123
- super.showSuccess('We sent an e-mail to ' + this.email + ' to set up your second factor (2FA)');
124
- });
125
- }
126
- resetMFAEnrollment() {
127
- this.loading = true;
128
- this.userProfileService.resetMFAEnrollment().subscribe(success => {
129
- this.loading = false;
130
- super.showSuccess('Your second factor is cleared. If 2FA is required for your account, you now have to set up again. Otherwise you can leave it disabled.');
131
- setTimeout(() => {
132
- window.location.reload();
133
- }, 4000);
134
- });
135
- }
136
- createAPITokens() {
137
- this.loading = true;
138
- this.userProfileService.createAPITokens().subscribe(success => {
139
- this.loading = false;
140
- super.showSuccess('We sent an e-mail to ' + this.email + ' with your API tokens.');
141
- });
142
- }
143
- onDataUpdate(data) {
144
- this.loading = false;
145
- this.changeAvatar = false;
146
- this.userProfile = data.userInfo.profile;
147
- this.allowMFA = data.userInfo.features.allowMFA;
148
- this.allowAPI = data.userInfo.features.allowAPI && data.userInfo.isAdmin;
149
- this.form.controls.name.setValue(data.userInfo.profile.name);
150
- if (data.userInfo.profile.email) {
151
- this.showEmailInput = false;
152
- this.form.controls.newEmail.disable();
153
- }
154
- }
155
- ;
156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.AuthService }, { token: i2.UserProfileService }, { token: i3.AccountService }, { token: i4.UntypedFormBuilder }, { token: i5.MatSnackBar }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
157
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: UserProfileComponent, selector: "userprofile", usesInheritance: true, ngImport: i0, template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john&#64;doe.nl or jane.doe&#64;someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"allowMFA\">\n <div class=\"form-label\">Add additional login factor (MFA)</div>\n <ng-container *ngIf=\"!usesMFA\">\n <p>Add a code from Google Authenticator or similar to your account to make it more secure.</p>\n <div class=\"button\" (click)=\"sendMFAEnrollment()\" id=\"account-enrollmfa\">Send email to set up 2FA</div>\n </ng-container>\n <ng-container *ngIf=\"usesMFA\">\n <p>An additional factor is <b>enabled</b> for this account.</p>\n <div class=\"button\" (click)=\"resetMFAEnrollment()\" id=\"account-resetmfa\">Reset 2FA</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"allowAPI\">\n <div class=\"form-label\">API Access</div>\n <p>Access our <a target=\"_blank\" href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Getting-Started-with-the-API\">API</a> with your personal account.</p>\n <div class=\"button\" (click)=\"createAPITokens()\" id=\"account-apitokens\">Send email with new API tokens</div>\n </ng-container>\n </form>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.form-label{margin-top:30px}.currentuserprofileavatar{display:flex}.currentuserprofileavatar .userprofileavatar{margin-bottom:30px;display:flex;background:#2f2f2f;margin-right:15px;width:100px;height:100px;padding:10px}.reuploadform{background:#f0f0f0;position:relative}.reuploadform input{padding:15px 15px 0}.reuploadform .cancel{cursor:pointer;font-size:20pt;position:absolute;right:10px;top:10px}.form-security{margin-top:90px}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
158
- }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UserProfileComponent, decorators: [{
160
- type: Component,
161
- args: [{ selector: 'userprofile', template: "<div class=\"form-profile\">\n <h2>My Profile</h2>\n <form class=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\">\n <div class=\"form-label\">Avatar</div>\n\n <div class=\"currentuserprofileavatar\">\n <div class=\"userprofileavatar\" *ngIf=\"userProfile.avatarUrl\">\n <div *ngIf=\"loading\" class=\"loading-icon small\"></div>\n <img *ngIf=\"!loading\" class=\"responsive\" [src]=\"userProfile.avatarUrl\" />\n </div>\n <div class=\"reupload\">\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && userProfile.avatarUrl\">Change avatar</div>\n <div class=\"button\" (click)=\"changeAvatar = true\" *ngIf=\"!changeAvatar && !userProfile.avatarUrl\">Set avatar</div>\n <div class=\"button\" (click)=\"clearAvatar()\" *ngIf=\"changeAvatar && userProfile.avatarUrl\"><span class=\"icon ph-trash-fill\"></span>Clear</div>\n </div>\n </div>\n\n <div class=\"reuploadform\" *ngIf=\"changeAvatar\">\n <div (click)=\"changeAvatar = false\" class=\"cancel icon ph-x-bold\"></div>\n <input class=\"mat-form-field\" accept=\"image/png,image/jpeg\" type=\"file\" id=\"coach-avatar\" (change)=\"uploadAvatar($event)\">\n <div class=\"message message-information\">\n <span class=\"icon ph-info-fill\"></span>Select new image (.png or .jpg). Use a 1:1 ratio for the best results (e.g. 500x500). Maximum size is 500x500px and 500kb.\n </div>\n </div>\n\n <div class=\"form-label\">Name</div>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>What is your name?</mat-label>\n <input maxlength=\"50\" matInput id=\"name\" formControlName=\"name\" type=\"text\">\n <mat-error *ngIf=\"form.controls.name.errors\">\n <div *ngIf=\"form.controls.name.errors.required\">This field is required</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"form-label\">Email</div>\n <p *ngIf=\"!showEmailInput\">\n The e-mail address is set to <b>{{userProfile.email}}</b>.\n <a [routerLink]=\"[]\" id=\"toggle-email\" (click)=\"setChangeEmail()\">Set a different address.</a>\n </p>\n\n <mat-form-field appearance=\"fill\" *ngIf=\"showEmailInput\" subscriptSizing=\"dynamic\">\n <mat-label>On what e-mail address can you be contacted?</mat-label>\n <input matInput id=\"newEmail\" formControlName=\"newEmail\" type=\"email\">\n <mat-error *ngIf=\"form.controls.newEmail.errors\">\n <div *ngIf=\"form.controls.newEmail.errors.email\">The email is invalid. Please specify email like john&#64;doe.nl or jane.doe&#64;someone.nl.</div>\n <div *ngIf=\"form.controls.newEmail.errors.alreadyExists\">Another user already uses this e-mail address. Please use another email address.</div>\n </mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <input class=\"button submit primary\" type=\"submit\" id=\"submit\" [disabled]=\"loading\" [ngClass]=\"{'loading': loading}\" value=\"Save\" />\n </div>\n </form>\n</div>\n\n<div class=\"form-security\">\n <h2>Security</h2>\n\n <form class=\"form\">\n <div class=\"form-label\">Change password</div>\n <div class=\"button\" (click)=\"sendPasswordReset()\" id=\"account-passwordreset\" *ngIf=\"!userProfile.usesSSO\">Send email to change password</div>\n <p *ngIf=\"userProfile.usesSSO\">You are logging in through single-sign on (SSO). Use your company's identity provider to change your password.</p>\n\n <ng-container *ngIf=\"allowMFA\">\n <div class=\"form-label\">Add additional login factor (MFA)</div>\n <ng-container *ngIf=\"!usesMFA\">\n <p>Add a code from Google Authenticator or similar to your account to make it more secure.</p>\n <div class=\"button\" (click)=\"sendMFAEnrollment()\" id=\"account-enrollmfa\">Send email to set up 2FA</div>\n </ng-container>\n <ng-container *ngIf=\"usesMFA\">\n <p>An additional factor is <b>enabled</b> for this account.</p>\n <div class=\"button\" (click)=\"resetMFAEnrollment()\" id=\"account-resetmfa\">Reset 2FA</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"allowAPI\">\n <div class=\"form-label\">API Access</div>\n <p>Access our <a target=\"_blank\" href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Getting-Started-with-the-API\">API</a> with your personal account.</p>\n <div class=\"button\" (click)=\"createAPITokens()\" id=\"account-apitokens\">Send email with new API tokens</div>\n </ng-container>\n </form>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.form-label{margin-top:30px}.currentuserprofileavatar{display:flex}.currentuserprofileavatar .userprofileavatar{margin-bottom:30px;display:flex;background:#2f2f2f;margin-right:15px;width:100px;height:100px;padding:10px}.reuploadform{background:#f0f0f0;position:relative}.reuploadform input{padding:15px 15px 0}.reuploadform .cancel{cursor:pointer;font-size:20pt;position:absolute;right:10px;top:10px}.form-security{margin-top:90px}\n"] }]
162
- }], ctorParameters: () => [{ type: i10.ViewModelStateBase, decorators: [{
163
- type: Inject,
164
- args: [VIEWSTATE_PROVIDER]
165
- }] }, { type: i1.AuthService }, { type: i2.UserProfileService }, { type: i3.AccountService }, { type: i4.UntypedFormBuilder }, { type: i5.MatSnackBar }, { type: i6.ActivatedRoute }] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL3Jlc3VsdHMvY29tcG9uZW50cy91c2VycHJvZmlsZS91c2VycHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3VzZXJwcm9maWxlL3VzZXJwcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUE0RCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl0RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVbkcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUF5QztJQWFoRixZQUFrRCxLQUF3QyxFQUFVLFdBQXdCLEVBQVUsa0JBQXNDLEVBQVUsY0FBOEIsRUFBVSxXQUErQixFQUFZLFFBQXFCLEVBQVksS0FBcUI7UUFDNVQsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFVLG1CQUFjLEdBQWQsY0FB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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSixDQUFDO0lBQUEsQ0FBQzsrR0E3SlEsb0JBQW9CLGtCQWFWLGtCQUFrQjttR0FiNUIsb0JBQW9CLDBFQ2xCakMsc3RKQWtGQTs7NEZEaEVhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRyxhQUFhOzswQkFpQlYsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hdXRoMC1hbmd1bGFyJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgVXNlclByb2ZpbGVEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlckluZm9EdG8nO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXJQcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAndXNlcnByb2ZpbGUnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3VzZXJwcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3VzZXJwcm9maWxlLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiB7XG4gICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICBwdWJsaWMgdXNlclByb2ZpbGU6IFVzZXJQcm9maWxlRHRvO1xuICAgcHVibGljIGNoYW5nZUF2YXRhcjogYm9vbGVhbjtcbiAgIHB1YmxpYyBjb2xvcjogc3RyaW5nO1xuICAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gICBwdWJsaWMgdXNlc01GQTogYm9vbGVhbjtcbiAgIHB1YmxpYyBhbGxvd01GQTogYm9vbGVhbjtcbiAgIHB1YmxpYyBhbGxvd1Bhc3N3b3JkQ2hhbmdlOiBib29sZWFuO1xuICAgcHVibGljIHNob3dFbWFpbElucHV0OiBib29sZWFuO1xuICAgIGFsbG93QVBJOiBhbnk7XG5cbiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcm90ZWN0ZWQgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsIHByaXZhdGUgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCBzbmFja2JhcjogTWF0U25hY2tCYXIsIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICAgIHN1cGVyKHN0YXRlLCBzbmFja2Jhcik7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlciQuc3Vic2NyaWJlKFxuICAgICAgICAgKHByb2ZpbGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlc01GQSA9IHByb2ZpbGUudXNlX21mYTtcbiAgICAgICAgICAgIHRoaXMuZW1haWwgPSBwcm9maWxlLmVtYWlsO1xuICAgICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgbmFtZTogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgIG5ld0VtYWlsOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXVxuICAgICAgfSk7XG4gICB9O1xuXG4gICBwdWJsaWMgYXN5bmMgb25TdWJtaXQoZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UubG9naW5XaXRoUG9wdXAoeyBhdXRob3JpemF0aW9uUGFyYW1zOiB7IG1heF9hZ2U6IDEgfSB9KS5zdWJzY3JpYmUoc3VjY2VzcyA9PiB7XG4gICAgICAgICB2YXIgdXBkYXRlUmVxdWVzdCA9IG5ldyBVc2VyUHJvZmlsZUR0bygpO1xuICAgICAgICAgdXBkYXRlUmVxdWVzdC5uYW1lID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5hbWUudmFsdWU7XG4gICAgICAgICB1cGRhdGVSZXF1ZXN0LmVtYWlsID0gdGhpcy5mb3JtLmNvbnRyb2xzLm5ld0VtYWlsLnZhbHVlO1xuXG4gICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UudXBkYXRlKHVwZGF0ZVJlcXVlc3QpLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3MoXCJZb3VyIHByb2ZpbGUgd2FzIHVwZGF0ZWRcIik7XG4gICAgICAgICAgICAgICB9KTtcbiAgICAgICAgIH1cbiAgICAgICAgIGNhdGNoIChleDogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuc2V0RXJyb3JzKHsgYWxyZWFkeUV4aXN0czogdHJ1ZSB9KTtcbiAgICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgIH1cblxuICAgcHVibGljIHNldENoYW5nZUVtYWlsKCkge1xuICAgICAgdGhpcy5zaG93RW1haWxJbnB1dCA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmV3RW1haWwuZW5hYmxlKCk7XG4gICB9XG5cbiAgIHB1YmxpYyB1cGxvYWRBdmF0YXIoJGZpbGVJbnB1dDogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgZmlsZSA9ICgkZmlsZUlucHV0LnRhcmdldC5maWxlc1swXSk7XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgaWYgKGZpbGUudHlwZSAhPSBcImltYWdlL3BuZ1wiICYmIGZpbGUudHlwZSAhPSBcImltYWdlL2pwZWdcIikge1xuICAgICAgICAgICAgYWxlcnQoXCJUaGUgZmlsZSBtdXN0IGJlIGEgcG5nIG9yIGpwZyBmaWxlLiBZb3UgdXBsb2FkZWQgYSBmaWxlIG9mIHR5cGUgXCIgKyBmaWxlLnR5cGUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICB9XG5cbiAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICBpbWFnZS5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICBpbWFnZS5vbmxvYWQgPSBycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWdfaGVpZ2h0ID0gcnMuY3VycmVudFRhcmdldFsnaGVpZ2h0J107XG4gICAgICAgICAgICBjb25zdCBpbWdfd2lkdGggPSBycy5jdXJyZW50VGFyZ2V0Wyd3aWR0aCddO1xuXG4gICAgICAgICAgICBpZiAoaW1nX2hlaWdodCA+IDUwMCAmJiBpbWdfd2lkdGggPiA1MDApIHtcbiAgICAgICAgICAgICAgIGFsZXJ0KFwiVGhlIGxvZ28gaXMgdG9vIGxhcmdlLiBQbGVhc2UgbGltaXQgdG8gYSBwaWN0dXJlIG9mIDUwMHg1MDAgcGl4ZWxzLlwiKTtcbiAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnNldEF2YXRhcihmaWxlKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICB9O1xuXG4gICBwdWJsaWMgY2xlYXJBdmF0YXIoKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuY2xlYXJBdmF0YXIoKVxuICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGUuYXZhdGFyVXJsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICAgICB9KTtcbiAgIH07ICBcblxuICAgcHVibGljIHNlbmRQYXNzd29yZFJlc2V0KCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uuc2VuZFJlc2V0UGFzc3dvcmQodGhpcy5lbWFpbCkuc3Vic2NyaWJlKFxuICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHN1cGVyLnNob3dTdWNjZXNzKCdXZSBzZW50IGFuIGUtbWFpbCB0byAnICsgdGhpcy5lbWFpbCArICcgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQnKTtcbiAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgc2VuZE1GQUVucm9sbG1lbnQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VuZE1GQUVucm9sbG1lbnQoKS5zdWJzY3JpYmUoXG4gICAgICAgICBzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3VwZXIuc2hvd1N1Y2Nlc3MoJ1dlIHNlbnQgYW4gZS1tYWlsIHRvICcgKyB0aGlzLmVtYWlsICsgJyB0byBzZXQgdXAgeW91ciBzZWNvbmQgZmFjdG9yICgyRkEpJyk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIHJlc2V0TUZBRW5yb2xsbWVudCgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5yZXNldE1GQUVucm9sbG1lbnQoKS5zdWJzY3JpYmUoXG4gICAgICAgICBzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3VwZXIuc2hvd1N1Y2Nlc3MoJ1lvdXIgc2Vjb25kIGZhY3RvciBpcyBjbGVhcmVkLiBJZiAyRkEgaXMgcmVxdWlyZWQgZm9yIHlvdXIgYWNjb3VudCwgeW91IG5vdyBoYXZlIHRvIHNldCB1cCBhZ2Fpbi4gT3RoZXJ3aXNlIHlvdSBjYW4gbGVhdmUgaXQgZGlzYWJsZWQuJyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBjcmVhdGVBUElUb2tlbnMoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuY3JlYXRlQVBJVG9rZW5zKCkuc3Vic2NyaWJlKFxuICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHN1cGVyLnNob3dTdWNjZXNzKCdXZSBzZW50IGFuIGUtbWFpbCB0byAnICsgdGhpcy5lbWFpbCArICcgd2l0aCB5b3VyIEFQSSB0b2tlbnMuJyk7XG4gICAgICAgICB9KTtcbiAgIH1cblxuICAgcHJvdGVjdGVkIG9uRGF0YVVwZGF0ZShkYXRhOiBJUmVzdWx0c1N0YXRlKTogdm9pZCB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hhbmdlQXZhdGFyID0gZmFsc2U7XG4gICAgICB0aGlzLnVzZXJQcm9maWxlID0gZGF0YS51c2VySW5mby5wcm9maWxlO1xuICAgICAgdGhpcy5hbGxvd01GQSA9IGRhdGEudXNlckluZm8uZmVhdHVyZXMuYWxsb3dNRkE7XG4gICAgICB0aGlzLmFsbG93QVBJID0gZGF0YS51c2VySW5mby5mZWF0dXJlcy5hbGxvd0FQSSAmJiBkYXRhLnVzZXJJbmZvLmlzQWRtaW47XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShkYXRhLnVzZXJJbmZvLnByb2ZpbGUubmFtZSk7XG4gICAgICBcbiAgICAgIGlmIChkYXRhLnVzZXJJbmZvLnByb2ZpbGUuZW1haWwpIHtcbiAgICAgICAgIHRoaXMuc2hvd0VtYWlsSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5uZXdFbWFpbC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tcHJvZmlsZVwiPlxuICAgPGgyPk15IFByb2ZpbGU8L2gyPlxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGZvcm1EaXJlY3RpdmUpXCIgI2Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QXZhdGFyPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50dXNlcnByb2ZpbGVhdmF0YXJcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VycHJvZmlsZWF2YXRhclwiICpuZ0lmPVwidXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1pY29uIHNtYWxsXCI+PC9kaXY+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cInJlc3BvbnNpdmVcIiBbc3JjXT1cInVzZXJQcm9maWxlLmF2YXRhclVybFwiIC8+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VBdmF0YXIgPSB0cnVlXCIgKm5nSWY9XCIhY2hhbmdlQXZhdGFyICYmIHVzZXJQcm9maWxlLmF2YXRhclVybFwiPkNoYW5nZSBhdmF0YXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gdHJ1ZVwiICpuZ0lmPVwiIWNoYW5nZUF2YXRhciAmJiAhdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+U2V0IGF2YXRhcjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhckF2YXRhcigpXCIgKm5nSWY9XCJjaGFuZ2VBdmF0YXIgJiYgdXNlclByb2ZpbGUuYXZhdGFyVXJsXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLXRyYXNoLWZpbGxcIj48L3NwYW4+Q2xlYXI8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXVwbG9hZGZvcm1cIiAqbmdJZj1cImNoYW5nZUF2YXRhclwiPlxuICAgICAgICAgPGRpdiAoY2xpY2spPVwiY2hhbmdlQXZhdGFyID0gZmFsc2VcIiBjbGFzcz1cImNhbmNlbCBpY29uIHBoLXgtYm9sZFwiPjwvZGl2PlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwibWF0LWZvcm0tZmllbGRcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsaW1hZ2UvanBlZ1wiIHR5cGU9XCJmaWxlXCIgaWQ9XCJjb2FjaC1hdmF0YXJcIiAoY2hhbmdlKT1cInVwbG9hZEF2YXRhcigkZXZlbnQpXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZSBtZXNzYWdlLWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1maWxsXCI+PC9zcGFuPlNlbGVjdCBuZXcgaW1hZ2UgKC5wbmcgb3IgLmpwZykuIFVzZSBhIDE6MSByYXRpbyBmb3IgdGhlIGJlc3QgcmVzdWx0cyAoZS5nLiA1MDB4NTAwKS4gTWF4aW11bSBzaXplIGlzIDUwMHg1MDBweCBhbmQgNTAwa2IuXG4gICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5hbWU8L2Rpdj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hhdCBpcyB5b3VyIG5hbWU/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8aW5wdXQgbWF4bGVuZ3RoPVwiNTBcIiBtYXRJbnB1dCBpZD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgdHlwZT1cInRleHRcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5hbWUuZXJyb3JzXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybS5jb250cm9scy5uYW1lLmVycm9ycy5yZXF1aXJlZFwiPlRoaXMgZmllbGQgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbDwvZGl2PlxuICAgICAgPHAgKm5nSWY9XCIhc2hvd0VtYWlsSW5wdXRcIj5cbiAgICAgICAgIFRoZSBlLW1haWwgYWRkcmVzcyBpcyBzZXQgdG8gPGI+e3t1c2VyUHJvZmlsZS5lbWFpbH19PC9iPi5cbiAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltdXCIgaWQ9XCJ0b2dnbGUtZW1haWxcIiAoY2xpY2spPVwic2V0Q2hhbmdlRW1haWwoKVwiPlNldCBhIGRpZmZlcmVudCBhZGRyZXNzLjwvYT5cbiAgICAgIDwvcD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCJzaG93RW1haWxJbnB1dFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+T24gd2hhdCBlLW1haWwgYWRkcmVzcyBjYW4geW91IGJlIGNvbnRhY3RlZD88L21hdC1sYWJlbD5cbiAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBpZD1cIm5ld0VtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3RW1haWxcIiB0eXBlPVwiZW1haWxcIj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLm5ld0VtYWlsLmVycm9yc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmVtYWlsXCI+VGhlIGVtYWlsIGlzIGludmFsaWQuIFBsZWFzZSBzcGVjaWZ5IGVtYWlsIGxpa2Ugam9obiYjNjQ7ZG9lLm5sIG9yIGphbmUuZG9lJiM2NDtzb21lb25lLm5sLjwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uY29udHJvbHMubmV3RW1haWwuZXJyb3JzLmFscmVhZHlFeGlzdHNcIj5Bbm90aGVyIHVzZXIgYWxyZWFkeSB1c2VzIHRoaXMgZS1tYWlsIGFkZHJlc3MuIFBsZWFzZSB1c2UgYW5vdGhlciBlbWFpbCBhZGRyZXNzLjwvZGl2PlxuICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnV0dG9uIHN1Ym1pdCBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGlkPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBsb2FkaW5nfVwiIHZhbHVlPVwiU2F2ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZm9ybS1zZWN1cml0eVwiPlxuICAgPGgyPlNlY3VyaXR5PC9oMj5cblxuICAgPGZvcm0gY2xhc3M9XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNoYW5nZSBwYXNzd29yZDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzZW5kUGFzc3dvcmRSZXNldCgpXCIgaWQ9XCJhY2NvdW50LXBhc3N3b3JkcmVzZXRcIiAqbmdJZj1cIiF1c2VyUHJvZmlsZS51c2VzU1NPXCI+U2VuZCBlbWFpbCB0byBjaGFuZ2UgcGFzc3dvcmQ8L2Rpdj5cbiAgICAgIDxwICpuZ0lmPVwidXNlclByb2ZpbGUudXNlc1NTT1wiPllvdSBhcmUgbG9nZ2luZyBpbiB0aHJvdWdoIHNpbmdsZS1zaWduIG9uIChTU08pLiBVc2UgeW91ciBjb21wYW55J3MgaWRlbnRpdHkgcHJvdmlkZXIgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQuPC9wPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dNRkFcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkIGFkZGl0aW9uYWwgbG9naW4gZmFjdG9yIChNRkEpPC9kaXY+XG4gICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZXNNRkFcIj5cbiAgICAgICAgICAgIDxwPkFkZCBhIGNvZGUgZnJvbSBHb29nbGUgQXV0aGVudGljYXRvciBvciBzaW1pbGFyIHRvIHlvdXIgYWNjb3VudCB0byBtYWtlIGl0IG1vcmUgc2VjdXJlLjwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwic2VuZE1GQUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1lbnJvbGxtZmFcIj5TZW5kIGVtYWlsIHRvIHNldCB1cCAyRkE8L2Rpdj5cbiAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXNNRkFcIj5cbiAgICAgICAgICAgIDxwPkFuIGFkZGl0aW9uYWwgZmFjdG9yIGlzIDxiPmVuYWJsZWQ8L2I+IGZvciB0aGlzIGFjY291bnQuPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldE1GQUVucm9sbG1lbnQoKVwiIGlkPVwiYWNjb3VudC1yZXNldG1mYVwiPlJlc2V0IDJGQTwvZGl2PlxuICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QVBJXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFQSSBBY2Nlc3M8L2Rpdj5cbiAgICAgICAgIDxwPkFjY2VzcyBvdXIgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS90aGVsaWJlcmF0b3JzL3NjcnVtdGVhbXN1cnZleS5kb2NzL3dpa2kvR2V0dGluZy1TdGFydGVkLXdpdGgtdGhlLUFQSVwiPkFQSTwvYT4gd2l0aCB5b3VyIHBlcnNvbmFsIGFjY291bnQuPC9wPlxuICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjcmVhdGVBUElUb2tlbnMoKVwiIGlkPVwiYWNjb3VudC1hcGl0b2tlbnNcIj5TZW5kIGVtYWlsIHdpdGggbmV3IEFQSSB0b2tlbnM8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../../branding/brandBackground.directive";
4
- export class VideoComponent {
5
- constructor() {
6
- }
7
- ngOnInit() {
8
- }
9
- openVideo() {
10
- window.open(this.videoUrl, "_blank");
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: VideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: VideoComponent, selector: "explainervideo", inputs: { videoUrl: "videoUrl", videoTitle: "videoTitle" }, ngImport: i0, template: "<div class=\"box explainervideo\" brandbackground [palette]=\"'theme'\" (click)=\"openVideo()\">\n <span class=\"ph-monitor-play-bold icon video\"></span>\n <div class=\"name\">\n <h3>\n {{videoTitle}}\n </h3>\n <div class=\"tags\">\n <span class=\"tag external\"><span class=\"icon ph-arrow-square-out\"></span> youtube</span>\n </div>\n </div>\n</div>\n\n\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.box{cursor:pointer;padding:20px;display:flex}.box .video{vertical-align:middle;margin-right:15px;font-size:60px;width:60px;color:#fff;text-decoration:none}.box .name{color:#fff}.box .name:hover{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:underline}.box h3{font-size:30px;margin-bottom:5px}.box .tags{display:block}\n"], dependencies: [{ kind: "directive", type: i1.BrandBackgroundDirective, selector: "[brandbackground]", inputs: ["palette"] }] }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: VideoComponent, decorators: [{
16
- type: Component,
17
- args: [{ selector: 'explainervideo', template: "<div class=\"box explainervideo\" brandbackground [palette]=\"'theme'\" (click)=\"openVideo()\">\n <span class=\"ph-monitor-play-bold icon video\"></span>\n <div class=\"name\">\n <h3>\n {{videoTitle}}\n </h3>\n <div class=\"tags\">\n <span class=\"tag external\"><span class=\"icon ph-arrow-square-out\"></span> youtube</span>\n </div>\n </div>\n</div>\n\n\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.box{cursor:pointer;padding:20px;display:flex}.box .video{vertical-align:middle;margin-right:15px;font-size:60px;width:60px;color:#fff;text-decoration:none}.box .name{color:#fff}.box .name:hover{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:underline}.box h3{font-size:30px;margin-bottom:5px}.box .tags{display:block}\n"] }]
18
- }], ctorParameters: () => [], propDecorators: { videoUrl: [{
19
- type: Input
20
- }], videoTitle: [{
21
- type: Input
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL3Jlc3VsdHMvY29tcG9uZW50cy92aWRlby92aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3ZpZGVvL3ZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPakQsTUFBTSxPQUFPLGNBQWM7SUFJeEI7SUFDQSxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7SUFFRCxTQUFTO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBWlMsY0FBYzttR0FBZCxjQUFjLGtIQ1AzQixtWkFhQTs7NEZETmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRyxnQkFBZ0I7d0RBS1YsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnZXhwbGFpbmVydmlkZW8nLFxuICAgdGVtcGxhdGVVcmw6ICcuL3ZpZGVvLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3ZpZGVvLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmlkZW9Db21wb25lbnQge1xuICAgQElucHV0KCkgcHVibGljIHZpZGVvVXJsOiBzdHJpbmc7XG4gICBASW5wdXQoKSBwdWJsaWMgdmlkZW9UaXRsZTogc3RyaW5nO1xuXG4gICBjb25zdHJ1Y3RvcigpIHtcbiAgIH1cblxuICAgbmdPbkluaXQoKSB7XG4gICB9XG5cbiAgIG9wZW5WaWRlbygpIHtcbiAgICAgIHdpbmRvdy5vcGVuKHRoaXMudmlkZW9VcmwsIFwiX2JsYW5rXCIpO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJveCBleHBsYWluZXJ2aWRlb1wiIGJyYW5kYmFja2dyb3VuZCBbcGFsZXR0ZV09XCIndGhlbWUnXCIgKGNsaWNrKT1cIm9wZW5WaWRlbygpXCI+XG4gICA8c3BhbiBjbGFzcz1cInBoLW1vbml0b3ItcGxheS1ib2xkIGljb24gdmlkZW9cIj48L3NwYW4+XG4gICA8ZGl2IGNsYXNzPVwibmFtZVwiPlxuICAgICAgPGgzPlxuICAgICAgICAge3t2aWRlb1RpdGxlfX1cbiAgICAgIDwvaDM+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWcgZXh0ZXJuYWxcIj48c3BhbiBjbGFzcz1cImljb24gcGgtYXJyb3ctc3F1YXJlLW91dFwiPjwvc3Bhbj4geW91dHViZTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgPC9kaXY+XG48L2Rpdj5cblxuXG4iXX0=
@@ -1,41 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { PointTypeEnum } from '../../models/factorScoreDto';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/tooltip";
6
- import * as i3 from "../delta-arrow/delta-arrow.component";
7
- export class WidgetFactorScoreComponent {
8
- constructor() {
9
- }
10
- ngOnInit() {
11
- this.confidenceAvailable = this.factorScores.composition.points.count > 1;
12
- this.score = this.factorScore.score;
13
- this.benchmark = this.factorScore.benchmark;
14
- this.benchmarkName = this.factorScores.benchmark.name;
15
- this.factorScoreWidth = (this.factorScore.upperConfidence - this.factorScore.lowerConfidence);
16
- if (this.factorScoreWidth <= 10) {
17
- this.factorScoreWidth = 10;
18
- }
19
- ;
20
- this.factorScoreLeft = this.factorScore.lowerConfidence - 4;
21
- if (this.factorScoreLeft >= 90) {
22
- this.factorScoreLeft = 90;
23
- }
24
- ;
25
- this.points = this.factorScore.points.filter(p => p.type == PointTypeEnum.team || p.type == PointTypeEnum.client);
26
- this.direction = this.factorScore.qualification.toLowerCase();
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: WidgetFactorScoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: WidgetFactorScoreComponent, selector: "widget-factorscore", inputs: { factorScore: "factorScore", factorScores: "factorScores", delta: "delta" }, ngImport: i0, template: "<div class=\"widget factorscore\">\n <div class=\"label\">\n {{factorScore.name}}\n <delta-arrow [factorScore]=\"factorScore\" [delta]=\"delta\"></delta-arrow>\n </div>\n <div [class]=\"'progressbar progressbar-inverted progressbar-' + direction + ' progressbar-spread'\">\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable && factorScore.score > 0\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable && factorScore.score > 0\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n <div class=\"benchmark\" [style]=\"'left: ' + benchmark + '%'\" [matTooltip]=\"'Teams in benchmark \\'' + benchmarkName + '\\' score an average of ' + benchmark + ' points'\" *ngIf=\"benchmark != 0\"></div>\n <div class=\"progressbar-score\">{{factorScore.score > 0 ? factorScore.score : \"waiting for data\"}}</div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.DeltaArrowComponent, selector: "delta-arrow", inputs: ["factorScore", "delta", "noDataIndicator"] }] }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: WidgetFactorScoreComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: 'widget-factorscore', template: "<div class=\"widget factorscore\">\n <div class=\"label\">\n {{factorScore.name}}\n <delta-arrow [factorScore]=\"factorScore\" [delta]=\"delta\"></delta-arrow>\n </div>\n <div [class]=\"'progressbar progressbar-inverted progressbar-' + direction + ' progressbar-spread'\">\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable && factorScore.score > 0\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable && factorScore.score > 0\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n <div class=\"benchmark\" [style]=\"'left: ' + benchmark + '%'\" [matTooltip]=\"'Teams in benchmark \\'' + benchmarkName + '\\' score an average of ' + benchmark + ' points'\" *ngIf=\"benchmark != 0\"></div>\n <div class=\"progressbar-score\">{{factorScore.score > 0 ? factorScore.score : \"waiting for data\"}}</div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"] }]
34
- }], ctorParameters: () => [], propDecorators: { factorScore: [{
35
- type: Input
36
- }], factorScores: [{
37
- type: Input
38
- }], delta: [{
39
- type: Input
40
- }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWZhY3RvcnNjb3JlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvd2lkZ2V0LWZhY3RvcnNjb3JlL3dpZGdldC1mYWN0b3JzY29yZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3dpZGdldC1mYWN0b3JzY29yZS93aWRnZXQtZmFjdG9yc2NvcmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFxRixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFPL0ksTUFBTSxPQUFPLDBCQUEwQjtJQWFwQztJQUNBLENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUV0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlGLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFBQSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQUMsQ0FBQztRQUFBLENBQUM7UUFFOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqRSxDQUFDOytHQTdCUywwQkFBMEI7bUdBQTFCLDBCQUEwQixnSkNSdkMsd3hDQWFBOzs0RkRMYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0csb0JBQW9CO3dEQU1kLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFjdG9yU2NvcmVDb2xsZWN0aW9uRGVsdGFEdG8sIEZhY3RvclNjb3JlQ29sbGVjdGlvbkR0bywgRmFjdG9yU2NvcmVEdG8sIFBvaW50RHRvLCBQb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZhY3RvclNjb3JlRHRvJztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ3dpZGdldC1mYWN0b3JzY29yZScsXG4gICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWZhY3RvcnNjb3JlLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3dpZGdldC1mYWN0b3JzY29yZS5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldEZhY3RvclNjb3JlQ29tcG9uZW50IHtcbiAgIHB1YmxpYyBkaXJlY3Rpb246IHN0cmluZztcbiAgIEBJbnB1dCgpIHB1YmxpYyBmYWN0b3JTY29yZTogRmFjdG9yU2NvcmVEdG87XG4gICBASW5wdXQoKSBwdWJsaWMgZmFjdG9yU2NvcmVzOiBGYWN0b3JTY29yZUNvbGxlY3Rpb25EdG87XG4gICBASW5wdXQoKSBwdWJsaWMgZGVsdGE6IEZhY3RvclNjb3JlQ29sbGVjdGlvbkRlbHRhRHRvO1xuICAgcHVibGljIGJlbmNobWFya05hbWU6IHN0cmluZztcbiAgIHB1YmxpYyBmYWN0b3JTY29yZVdpZHRoOiBudW1iZXI7XG4gICBwdWJsaWMgc2NvcmU6IG51bWJlcjtcbiAgIHB1YmxpYyBiZW5jaG1hcms6IG51bWJlcjtcbiAgIHB1YmxpYyBjb25maWRlbmNlQXZhaWxhYmxlOiBib29sZWFuO1xuICAgcHVibGljIGZhY3RvclNjb3JlTGVmdDogbnVtYmVyO1xuICAgcHVibGljIHBvaW50czogUG9pbnREdG9bXTtcblxuICAgY29uc3RydWN0b3IoKSB7XG4gICB9XG5cbiAgIG5nT25Jbml0KCkge1xuICAgICAgdGhpcy5jb25maWRlbmNlQXZhaWxhYmxlID0gdGhpcy5mYWN0b3JTY29yZXMuY29tcG9zaXRpb24ucG9pbnRzLmNvdW50ID4gMTtcbiAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLmZhY3RvclNjb3JlLnNjb3JlO1xuICAgICAgdGhpcy5iZW5jaG1hcmsgPSB0aGlzLmZhY3RvclNjb3JlLmJlbmNobWFyaztcbiAgICAgIHRoaXMuYmVuY2htYXJrTmFtZSA9IHRoaXMuZmFjdG9yU2NvcmVzLmJlbmNobWFyay5uYW1lO1xuXG4gICAgICB0aGlzLmZhY3RvclNjb3JlV2lkdGggPSAodGhpcy5mYWN0b3JTY29yZS51cHBlckNvbmZpZGVuY2UgLSB0aGlzLmZhY3RvclNjb3JlLmxvd2VyQ29uZmlkZW5jZSk7XG4gICAgICBpZiAodGhpcy5mYWN0b3JTY29yZVdpZHRoIDw9IDEwKSB7IHRoaXMuZmFjdG9yU2NvcmVXaWR0aCA9IDEwIH07XG4gICAgICB0aGlzLmZhY3RvclNjb3JlTGVmdCA9IHRoaXMuZmFjdG9yU2NvcmUubG93ZXJDb25maWRlbmNlIC0gNDtcbiAgICAgIGlmICh0aGlzLmZhY3RvclNjb3JlTGVmdCA+PSA5MCkgeyB0aGlzLmZhY3RvclNjb3JlTGVmdCA9IDkwIH07XG5cbiAgICAgIHRoaXMucG9pbnRzID0gdGhpcy5mYWN0b3JTY29yZS5wb2ludHMuZmlsdGVyKHAgPT4gcC50eXBlID09IFBvaW50VHlwZUVudW0udGVhbSB8fCBwLnR5cGUgPT0gUG9pbnRUeXBlRW51bS5jbGllbnQpO1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPSB0aGlzLmZhY3RvclNjb3JlLnF1YWxpZmljYXRpb24udG9Mb3dlckNhc2UoKTtcbiAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3aWRnZXQgZmFjdG9yc2NvcmVcIj5cbiAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAge3tmYWN0b3JTY29yZS5uYW1lfX1cbiAgICAgIDxkZWx0YS1hcnJvdyBbZmFjdG9yU2NvcmVdPVwiZmFjdG9yU2NvcmVcIiBbZGVsdGFdPVwiZGVsdGFcIj48L2RlbHRhLWFycm93PlxuICAgPC9kaXY+XG4gICA8ZGl2IFtjbGFzc109XCIncHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItaW52ZXJ0ZWQgcHJvZ3Jlc3NiYXItJyArIGRpcmVjdGlvbiArICcgcHJvZ3Jlc3NiYXItc3ByZWFkJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWNvbmZpZGVuY2VcIiAqbmdJZj1cImNvbmZpZGVuY2VBdmFpbGFibGUgJiYgZmFjdG9yU2NvcmUuc2NvcmUgPiAwXCIgW21hdFRvb2x0aXBdPVwiJ01vc3QgdGVhbXMgaW4geW91ciBvcmdhbml6YXRpb24gZmFsbCBpbiB0aGlzIHJhbmdlICgyNS03NSUgcGVyY2VudGlsZSknXCIgW3N0eWxlXT1cIidsZWZ0OiAnICsgZmFjdG9yU2NvcmVMZWZ0ICsgJyU7IHdpZHRoOiAnICsgZmFjdG9yU2NvcmVXaWR0aCArICclJ1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWNvbmZpZGVuY2VcIiAqbmdJZj1cImNvbmZpZGVuY2VBdmFpbGFibGUgJiYgZmFjdG9yU2NvcmUuc2NvcmUgPiAwXCIgW21hdFRvb2x0aXBdPVwiJ01vc3QgdGVhbXMgaW4geW91ciBvcmdhbml6YXRpb24gZmFsbCBpbiB0aGlzIHJhbmdlICgyNS03NSUgcGVyY2VudGlsZSknXCIgW3N0eWxlXT1cIidsZWZ0OiAnICsgZmFjdG9yU2NvcmVMZWZ0ICsgJyU7IHdpZHRoOiAnICsgZmFjdG9yU2NvcmVXaWR0aCArICclJ1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWJhclwiICpuZ0lmPVwiIWNvbmZpZGVuY2VBdmFpbGFibGVcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgc2NvcmUgKyAnJSdcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiZW5jaG1hcmtcIiBbc3R5bGVdPVwiJ2xlZnQ6ICcgKyBiZW5jaG1hcmsgKyAnJSdcIiBbbWF0VG9vbHRpcF09XCInVGVhbXMgaW4gYmVuY2htYXJrIFxcJycgKyBiZW5jaG1hcmtOYW1lICsgJ1xcJyBzY29yZSBhbiBhdmVyYWdlIG9mICcgKyBiZW5jaG1hcmsgKyAnIHBvaW50cydcIiAqbmdJZj1cImJlbmNobWFyayAhPSAwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e2ZhY3RvclNjb3JlLnNjb3JlID4gMCA/IGZhY3RvclNjb3JlLnNjb3JlIDogXCJ3YWl0aW5nIGZvciBkYXRhXCJ9fTwvZGl2PlxuICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/tooltip";
5
- export class WidgetParticipationRateComponent {
6
- constructor() {
7
- }
8
- ngOnInit() {
9
- this.confidenceAvailable = this.data.upperConfidence > 0 && this.data.lowerConfidence > 0;
10
- this.percentage = this.data.percentage;
11
- this.factorScoreWidth = (this.data.upperConfidence - this.data.lowerConfidence);
12
- if (this.factorScoreWidth <= 10) {
13
- this.factorScoreWidth = 10;
14
- }
15
- ;
16
- this.factorScoreLeft = this.data.lowerConfidence - 4;
17
- if (this.factorScoreLeft >= 90) {
18
- this.factorScoreLeft = 90;
19
- }
20
- ;
21
- this.direction = this.data.qualification.toLowerCase();
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: WidgetParticipationRateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: WidgetParticipationRateComponent, selector: "widget-participationrate", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"widget factorscore\">\n <div class=\"label\">\n Participation rate (%)\n </div>\n <div [class]=\"'progressbar progressbar-inverted progressbar-' + direction + ' progressbar-spread'\">\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + percentage + '%'\"></div>\n <div class=\"progressbar-score\">{{data.percentage > 0 ? data.percentage : \"no recent data\"}}</div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: WidgetParticipationRateComponent, decorators: [{
27
- type: Component,
28
- args: [{ selector: 'widget-participationrate', template: "<div class=\"widget factorscore\">\n <div class=\"label\">\n Participation rate (%)\n </div>\n <div [class]=\"'progressbar progressbar-inverted progressbar-' + direction + ' progressbar-spread'\">\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most teams in your organization fall in this range (25-75% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + percentage + '%'\"></div>\n <div class=\"progressbar-score\">{{data.percentage > 0 ? data.percentage : \"no recent data\"}}</div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}\n"] }]
29
- }], ctorParameters: () => [], propDecorators: { data: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBhcnRpY2lwYXRpb25yYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvd2lkZ2V0LXBhcnRpY2lwYXRpb25yYXRlL3dpZGdldC1wYXJ0aWNpcGF0aW9ucmF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3dpZGdldC1wYXJ0aWNpcGF0aW9ucmF0ZS93aWRnZXQtcGFydGljaXBhdGlvbnJhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTakQsTUFBTSxPQUFPLGdDQUFnQztJQVExQztJQUNBLENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUV2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUFDLENBQUM7UUFBQSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQUMsQ0FBQztRQUFBLENBQUM7UUFFOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRCxDQUFDOytHQXJCUyxnQ0FBZ0M7bUdBQWhDLGdDQUFnQywwRkNUN0MsbXNCQVVBOzs0RkREYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0csMEJBQTBCO3dEQU1wQixJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFjdG9yU2NvcmVDb2xsZWN0aW9uRGVsdGFEdG8sIEZhY3RvclNjb3JlQ29sbGVjdGlvbkR0byB9IGZyb20gJy4uLy4uL21vZGVscy9mYWN0b3JTY29yZUR0byc7XG5pbXBvcnQgeyBQYXJ0aWNpcGF0aW9uUmF0ZUR0byB9IGZyb20gJy4uLy4uL21vZGVscy93aWRnZXREYXRhRHRvJztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ3dpZGdldC1wYXJ0aWNpcGF0aW9ucmF0ZScsXG4gICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXBhcnRpY2lwYXRpb25yYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3dpZGdldC1wYXJ0aWNpcGF0aW9ucmF0ZS5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFBhcnRpY2lwYXRpb25SYXRlQ29tcG9uZW50IHtcbiAgIHB1YmxpYyBkaXJlY3Rpb246IHN0cmluZztcbiAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBQYXJ0aWNpcGF0aW9uUmF0ZUR0bztcbiAgIHB1YmxpYyBmYWN0b3JTY29yZVdpZHRoOiBudW1iZXI7XG4gICBwdWJsaWMgcGVyY2VudGFnZTogbnVtYmVyO1xuICAgcHVibGljIGNvbmZpZGVuY2VBdmFpbGFibGU6IGJvb2xlYW47XG4gICBwdWJsaWMgZmFjdG9yU2NvcmVMZWZ0OiBudW1iZXI7XG5cbiAgIGNvbnN0cnVjdG9yKCkge1xuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY29uZmlkZW5jZUF2YWlsYWJsZSA9IHRoaXMuZGF0YS51cHBlckNvbmZpZGVuY2UgPiAwICYmIHRoaXMuZGF0YS5sb3dlckNvbmZpZGVuY2UgPiAwO1xuICAgICAgdGhpcy5wZXJjZW50YWdlID0gdGhpcy5kYXRhLnBlcmNlbnRhZ2U7XG5cbiAgICAgIHRoaXMuZmFjdG9yU2NvcmVXaWR0aCA9ICh0aGlzLmRhdGEudXBwZXJDb25maWRlbmNlIC0gdGhpcy5kYXRhLmxvd2VyQ29uZmlkZW5jZSk7XG4gICAgICBpZiAodGhpcy5mYWN0b3JTY29yZVdpZHRoIDw9IDEwKSB7IHRoaXMuZmFjdG9yU2NvcmVXaWR0aCA9IDEwIH07XG4gICAgICB0aGlzLmZhY3RvclNjb3JlTGVmdCA9IHRoaXMuZGF0YS5sb3dlckNvbmZpZGVuY2UgLSA0O1xuICAgICAgaWYgKHRoaXMuZmFjdG9yU2NvcmVMZWZ0ID49IDkwKSB7IHRoaXMuZmFjdG9yU2NvcmVMZWZ0ID0gOTAgfTtcblxuICAgICAgdGhpcy5kaXJlY3Rpb24gPSB0aGlzLmRhdGEucXVhbGlmaWNhdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndpZGdldCBmYWN0b3JzY29yZVwiPlxuICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICBQYXJ0aWNpcGF0aW9uIHJhdGUgKCUpXG4gICA8L2Rpdj5cbiAgIDxkaXYgW2NsYXNzXT1cIidwcm9ncmVzc2JhciBwcm9ncmVzc2Jhci1pbnZlcnRlZCBwcm9ncmVzc2Jhci0nICsgZGlyZWN0aW9uICsgJyBwcm9ncmVzc2Jhci1zcHJlYWQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItY29uZmlkZW5jZVwiICpuZ0lmPVwiY29uZmlkZW5jZUF2YWlsYWJsZVwiIFttYXRUb29sdGlwXT1cIidNb3N0IHRlYW1zIGluIHlvdXIgb3JnYW5pemF0aW9uIGZhbGwgaW4gdGhpcyByYW5nZSAoMjUtNzUlIHBlcmNlbnRpbGUpJ1wiIFtzdHlsZV09XCInbGVmdDogJyArIGZhY3RvclNjb3JlTGVmdCArICclOyB3aWR0aDogJyArIGZhY3RvclNjb3JlV2lkdGggKyAnJSdcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiAqbmdJZj1cIiFjb25maWRlbmNlQXZhaWxhYmxlXCIgW3N0eWxlXT1cIid3aWR0aDogJyArIHBlcmNlbnRhZ2UgKyAnJSdcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1zY29yZVwiPnt7ZGF0YS5wZXJjZW50YWdlID4gMCA/IGRhdGEucGVyY2VudGFnZSA6IFwibm8gcmVjZW50IGRhdGFcIn19PC9kaXY+XG4gICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,94 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import * as moment from 'moment';
4
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
5
- import { SelectItem } from '../../../models/selectListItem';
6
- import { DateRangeDto } from '../../../pipes/dateRange/ngx-dateRangeDto.model';
7
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
8
- import { ExportFactorScoresRequestDto } from '../../models/exportRequestDto';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/material/snack-bar";
11
- import * as i2 from "../../services/exportService";
12
- import * as i3 from "@angular/material/dialog";
13
- import * as i4 from "@angular/forms";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/material/core";
16
- import * as i7 from "@angular/material/form-field";
17
- import * as i8 from "@angular/material/select";
18
- import * as i9 from "@angular/material/datepicker";
19
- import * as i10 from "../../../viewModel/viewModelState.service";
20
- export class DialogExportFactorScoresComponent extends ComponentWithViewStateBase {
21
- constructor(state, snackBar, exportService, dialogRef, formBuilder) {
22
- super(state, snackBar);
23
- this.state = state;
24
- this.snackBar = snackBar;
25
- this.exportService = exportService;
26
- this.dialogRef = dialogRef;
27
- this.formBuilder = formBuilder;
28
- this.periodGroupings = [
29
- new SelectItem("PreviousMonth", "1 month"),
30
- new SelectItem("PreviousQuarter", "3 months"),
31
- new SelectItem("PreviousHalfYear", "6 months"),
32
- new SelectItem("PreviousYear", "12 months")
33
- ];
34
- this.benchmarkTypes = [];
35
- this.createForm();
36
- }
37
- ngOnInit() {
38
- super.ngOnInit();
39
- this.form.controls.periodGrouping.setValue("PreviousQuarter");
40
- this.form.controls.benchmarkType.setValue("MostRecentSamples");
41
- this.form.controls.start.setValue(moment.utc().subtract(3, 'months').toISOString());
42
- this.form.controls.end.setValue(moment.utc().toISOString());
43
- }
44
- async submit() {
45
- this.submitted = true;
46
- if (!this.form.valid) {
47
- return;
48
- }
49
- var request = new ExportFactorScoresRequestDto(this.modelKey);
50
- request.periodGrouping = this.form.controls.periodGrouping.value;
51
- request.dateRange = new DateRangeDto();
52
- request.dateRange.from = this.form.controls.start.value;
53
- request.dateRange.to = this.form.controls.end.value;
54
- request.benchmark = this.form.controls.benchmarkType.value;
55
- this.sending = true;
56
- this.exportService.exportFactorScores(request).subscribe(success => {
57
- let binaryData = [];
58
- binaryData.push(new Uint8Array([0xEF, 0xBB, 0xBF])); // UTF8 bom
59
- binaryData.push(success);
60
- let downloadLink = document.createElement('a');
61
- downloadLink.href = window.URL.createObjectURL(new Blob(binaryData, { type: success.type }));
62
- downloadLink.setAttribute('download', 'export-factorscores-' + this.modelKey + '.csv');
63
- document.body.appendChild(downloadLink);
64
- downloadLink.click();
65
- this.dialogRef.close();
66
- this.sending = false;
67
- this.showSuccess("Download started. You may have to allow it in your browser.");
68
- });
69
- }
70
- onDataUpdate(data) {
71
- this.benchmarkTypes = data.factorScores.benchmark.available.map(p => new SelectItem(p.key, p.name));
72
- this.modelKey = data.factorScores.modelStructure.definition.publicKey;
73
- }
74
- ;
75
- createForm() {
76
- this.form = this.formBuilder.group({
77
- periodGrouping: [{ value: "" }, Validators.required],
78
- start: [{ value: "" }, Validators.required],
79
- end: [{ value: "" }, Validators.required],
80
- benchmarkType: [{ value: "" }, Validators.required],
81
- });
82
- }
83
- ;
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DialogExportFactorScoresComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }, { token: i2.ExportService }, { token: i3.MatDialogRef }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DialogExportFactorScoresComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Export summary results</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <p>Export team-level results to .csv for your own analyses. <a href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Export-File-Definitions\">Our Wiki</a> has a definition.</p>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"periodGrouping\" subscriptSizing=\"dynamic\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" formControlName=\"periodGrouping\">\n <mat-option class=\"select-option\" *ngFor=\"let item of periodGroupings\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>Select date range</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should be exported along?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\" [disabled]=\"sending\">export</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.errors{margin-bottom:15px}.confirmation h4{margin:0 0 5px}.confirmation p{margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i9.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i9.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i9.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i9.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DialogExportFactorScoresComponent, decorators: [{
88
- type: Component,
89
- args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Export summary results</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <p>Export team-level results to .csv for your own analyses. <a href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki/Export-File-Definitions\">Our Wiki</a> has a definition.</p>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"periodGrouping\" subscriptSizing=\"dynamic\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" formControlName=\"periodGrouping\">\n <mat-option class=\"select-option\" *ngFor=\"let item of periodGroupings\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>Select date range</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should be exported along?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\" [disabled]=\"sending\">export</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.errors{margin-bottom:15px}.confirmation h4{margin:0 0 5px}.confirmation p{margin:0}\n"] }]
90
- }], ctorParameters: () => [{ type: i10.ViewModelStateBase, decorators: [{
91
- type: Inject,
92
- args: [VIEWSTATE_PROVIDER]
93
- }] }, { type: i1.MatSnackBar }, { type: i2.ExportService }, { type: i3.MatDialogRef }, { type: i4.FormBuilder }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWV4cG9ydC1mYWN0b3JzY29yZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL3Jlc3VsdHMvZGlhbG9ncy9kaWFsb2ctZXhwb3J0LWZhY3RvcnNjb3Jlcy9kaWFsb2ctZXhwb3J0LWZhY3RvcnNjb3Jlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9kaWFsb2dzL2RpYWxvZy1leHBvcnQtZmFjdG9yc2NvcmVzL2RpYWxvZy1leHBvcnQtZmFjdG9yc2NvcmVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUvRSxPQUFPLEVBQXNCLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbkcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztBQU83RSxNQUFNLE9BQU8saUNBQWtDLFNBQVEsMEJBQXNDO0lBYTFGLFlBQWdELEtBQXFDLEVBQVksUUFBcUIsRUFBVSxhQUE0QixFQUFVLFNBQTBELEVBQVUsV0FBd0I7UUFDL1AsS0FBSyxDQUFDLEtBQUssRUFBRSxR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LEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDekMsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNyRCxDQUFDLENBQUM7SUFDTixDQUFDO0lBQUEsQ0FBQzsrR0FqRVEsaUNBQWlDLGtCQWF2QixrQkFBa0I7bUdBYjVCLGlDQUFpQywyRUNsQjlDLHV5RUF3Q0E7OzRGRHRCYSxpQ0FBaUM7a0JBSjdDLFNBQVM7OzswQkFpQk0sTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZWxlY3RMaXN0SXRlbSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VEdG8gfSBmcm9tICcuLi8uLi8uLi9waXBlcy9kYXRlUmFuZ2Uvbmd4LWRhdGVSYW5nZUR0by5tb2RlbCc7XG5pbXBvcnQgeyBJVmlld1N0YXRlIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IEV4cG9ydEZhY3RvclNjb3Jlc1JlcXVlc3REdG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXhwb3J0UmVxdWVzdER0byc7XG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhwb3J0U2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1leHBvcnQtZmFjdG9yc2NvcmVzLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL2RpYWxvZy1leHBvcnQtZmFjdG9yc2NvcmVzLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nRXhwb3J0RmFjdG9yU2NvcmVzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2U8SVZpZXdTdGF0ZT4ge1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBzZW5kaW5nOiBib29sZWFuO1xuICAgcHVibGljIHN1Ym1pdHRlZDogYm9vbGVhbjtcbiAgIHB1YmxpYyBtb2RlbEtleTogc3RyaW5nO1xuICAgcHVibGljIHBlcmlvZEdyb3VwaW5nczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c01vbnRoXCIsIFwiMSBtb250aFwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNRdWFydGVyXCIsIFwiMyBtb250aHNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzSGFsZlllYXJcIiwgXCI2IG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNZZWFyXCIsIFwiMTIgbW9udGhzXCIpXG4gICBdXG4gICBwdWJsaWMgYmVuY2htYXJrVHlwZXM6IFNlbGVjdEl0ZW1bXSA9IFtdXG5cbiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcml2YXRlIHN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SVZpZXdTdGF0ZT4sIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIsIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dFeHBvcnRGYWN0b3JTY29yZXNDb21wb25lbnQ+LCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKTtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucGVyaW9kR3JvdXBpbmcuc2V0VmFsdWUoXCJQcmV2aW91c1F1YXJ0ZXJcIik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS5zZXRWYWx1ZShcIk1vc3RSZWNlbnRTYW1wbGVzXCIpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXJ0LnNldFZhbHVlKG1vbWVudC51dGMoKS5zdWJ0cmFjdCgzLCAnbW9udGhzJykudG9JU09TdHJpbmcoKSk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZW5kLnNldFZhbHVlKG1vbWVudC51dGMoKS50b0lTT1N0cmluZygpKTtcbiAgIH1cblxuICAgcHVibGljIGFzeW5jIHN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7IHJldHVybjsgfVxuXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBFeHBvcnRGYWN0b3JTY29yZXNSZXF1ZXN0RHRvKHRoaXMubW9kZWxLZXkpO1xuICAgICAgcmVxdWVzdC5wZXJpb2RHcm91cGluZyA9IHRoaXMuZm9ybS5jb250cm9scy5wZXJpb2RHcm91cGluZy52YWx1ZTtcbiAgICAgIHJlcXVlc3QuZGF0ZVJhbmdlID0gbmV3IERhdGVSYW5nZUR0bygpO1xuICAgICAgcmVxdWVzdC5kYXRlUmFuZ2UuZnJvbSA9IHRoaXMuZm9ybS5jb250cm9scy5zdGFydC52YWx1ZTtcbiAgICAgIHJlcXVlc3QuZGF0ZVJhbmdlLnRvID0gdGhpcy5mb3JtLmNvbnRyb2xzLmVuZC52YWx1ZTtcbiAgICAgIHJlcXVlc3QuYmVuY2htYXJrID0gdGhpcy5mb3JtLmNvbnRyb2xzLmJlbmNobWFya1R5cGUudmFsdWU7XG5cbiAgICAgIHRoaXMuc2VuZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RmFjdG9yU2NvcmVzKHJlcXVlc3QpLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgIGxldCBiaW5hcnlEYXRhID0gW107XG4gICAgICAgICBiaW5hcnlEYXRhLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzB4RUYsIDB4QkIsIDB4QkZdKSk7IC8vIFVURjggYm9tXG4gICAgICAgICBiaW5hcnlEYXRhLnB1c2goc3VjY2Vzcyk7XG4gICAgICAgICBsZXQgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgZG93bmxvYWRMaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihiaW5hcnlEYXRhLCB7IHR5cGU6IHN1Y2Nlc3MudHlwZSB9KSk7XG4gICAgICAgICBkb3dubG9hZExpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICdleHBvcnQtZmFjdG9yc2NvcmVzLScgKyB0aGlzLm1vZGVsS2V5ICsgJy5jc3YnKTtcbiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRMaW5rKTtcbiAgICAgICAgIGRvd25sb2FkTGluay5jbGljaygpO1xuICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgIHRoaXMuc2VuZGluZyA9IGZhbHNlO1xuICAgICAgICAgdGhpcy5zaG93U3VjY2VzcyhcIkRvd25sb2FkIHN0YXJ0ZWQuIFlvdSBtYXkgaGF2ZSB0byBhbGxvdyBpdCBpbiB5b3VyIGJyb3dzZXIuXCIpO1xuICAgICAgfSk7XG4gICB9XG5cbiAgIHByb3RlY3RlZCBvbkRhdGFVcGRhdGUoZGF0YTogSVJlc3VsdHNTdGF0ZSk6IHZvaWQge1xuICAgICAgdGhpcy5iZW5jaG1hcmtUeXBlcyA9IGRhdGEuZmFjdG9yU2NvcmVzLmJlbmNobWFyay5hdmFpbGFibGUubWFwKHAgPT4gbmV3IFNlbGVjdEl0ZW0ocC5rZXksIHAubmFtZSkpO1xuICAgICAgdGhpcy5tb2RlbEtleSA9IGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlLmRlZmluaXRpb24ucHVibGljS2V5O1xuICAgfTtcblxuICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICBwZXJpb2RHcm91cGluZzogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBzdGFydDogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBlbmQ6IFt7IHZhbHVlOiBcIlwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgYmVuY2htYXJrVHlwZTogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB9KTtcbiAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+RXhwb3J0IHN1bW1hcnkgcmVzdWx0czwvaDE+XG4gICA8ZGl2IGNsYXNzPVwiY2xvc2VcIiBtYXQtZGlhbG9nLWNsb3NlPjxpIGNsYXNzPVwicmVzcG9uc2l2ZSBpY29uIHBoLXgtYm9sZFwiPjwvaT48L2Rpdj5cbjwvZGl2PlxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgIDxwPkV4cG9ydCB0ZWFtLWxldmVsIHJlc3VsdHMgdG8gLmNzdiBmb3IgeW91ciBvd24gYW5hbHlzZXMuIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vdGhlbGliZXJhdG9ycy9zY3J1bXRlYW1zdXJ2ZXkuZG9jcy93aWtpL0V4cG9ydC1GaWxlLURlZmluaXRpb25zXCI+T3VyIFdpa2k8L2E+IGhhcyBhIGRlZmluaXRpb24uPC9wPlxuICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwZXJpb2RHcm91cGluZ1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+U3VtbWFyaXplIHRvIHBlcmlvZHMgb2Y8L21hdC1sYWJlbD5cbiAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwicGVyaW9kR3JvdXBpbmctZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJwZXJpb2RHcm91cGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGVyaW9kR3JvdXBpbmdzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCBkYXRlIHJhbmdlPC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIHBsYWNlaG9sZGVyPVwiU3RhcnQgZGF0ZVwiPlxuICAgICAgICAgICAgPGlucHV0IG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiPlxuICAgICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnN0YXJ0Lmhhc0Vycm9yKCdtYXRTdGFydERhdGVJbnZhbGlkJylcIj5JbnZhbGlkIHN0YXJ0IGRhdGU8L21hdC1lcnJvcj5cbiAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmVuZC5oYXNFcnJvcignbWF0RW5kRGF0ZUludmFsaWQnKVwiPkludmFsaWQgZW5kIGRhdGU8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJlbmNobWFya1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hpY2ggYmVuY2htYXJrIHNob3VsZCBiZSBleHBvcnRlZCBhbG9uZz88L21hdC1sYWJlbD5cbiAgICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiYmVuY2htYXJrLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiYmVuY2htYXJrVHlwZVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYmVuY2htYXJrVHlwZXNcIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIj5cbiAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBzZW5kaW5nIH1cIiBbZGlzYWJsZWRdPVwic2VuZGluZ1wiPmV4cG9ydDwvYnV0dG9uPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIG1hdC1kaWFsb2ctY2xvc2U+Y2FuY2VsPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuIl19