@the-liberators/ngx-scrumteamsurvey-tools 2.3.20 → 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 (239) hide show
  1. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +821 -666
  2. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs.map +1 -1
  3. package/lib/components/quantity-selector/quantity-selector.component.d.ts +20 -0
  4. package/lib/components/quantity-selector/quantity-selector.module.d.ts +12 -0
  5. package/package.json +8 -10
  6. package/public-api.d.ts +2 -2
  7. package/esm2022/lib/actions/actions.module.mjs +0 -128
  8. package/esm2022/lib/actions/components/action-list/action-list.component.mjs +0 -118
  9. package/esm2022/lib/actions/components/action-manage/action-manage.component.mjs +0 -164
  10. package/esm2022/lib/actions/components/action-tile/action-tile.component.mjs +0 -79
  11. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.component.mjs +0 -75
  12. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.directive.mjs +0 -30
  13. package/esm2022/lib/actions/dialogs/dialog-filters/dialog-filters.component.mjs +0 -113
  14. package/esm2022/lib/actions/dialogs/dialog-manageaction/dialog-manageaction.component.mjs +0 -78
  15. package/esm2022/lib/actions/interfaces/IActionState.mjs +0 -2
  16. package/esm2022/lib/actions/models/actionDto.mjs +0 -43
  17. package/esm2022/lib/actions/models/actionOptionsDto.mjs +0 -9
  18. package/esm2022/lib/actions/models/actionPrefillDto.mjs +0 -3
  19. package/esm2022/lib/actions/models/actionResponseDto.mjs +0 -7
  20. package/esm2022/lib/actions/models/exportRequestDto.mjs +0 -3
  21. package/esm2022/lib/actions/pipes/interventionOwnerToString.pipe.mjs +0 -32
  22. package/esm2022/lib/actions/pipes/interventionStateToString.pipe.mjs +0 -26
  23. package/esm2022/lib/actions/pipes/interventionTypeToString.pipe.mjs +0 -30
  24. package/esm2022/lib/actions/services/actionClientConfig.mjs +0 -30
  25. package/esm2022/lib/actions/services/actionService.mjs +0 -66
  26. package/esm2022/lib/add-calendar/generators/base-calendar.generator.mjs +0 -46
  27. package/esm2022/lib/add-calendar/generators/google-calendar.generator.mjs +0 -16
  28. package/esm2022/lib/add-calendar/generators/ics-calendar.generator.mjs +0 -33
  29. package/esm2022/lib/add-calendar/generators/outlook-calendar.generator.mjs +0 -17
  30. package/esm2022/lib/add-calendar/generators/yahoo-calendar.generator.mjs +0 -28
  31. package/esm2022/lib/add-calendar/index.mjs +0 -4
  32. package/esm2022/lib/add-calendar/model/calendar-event.model.mjs +0 -2
  33. package/esm2022/lib/add-calendar/model/calendar-type.enum.mjs +0 -9
  34. package/esm2022/lib/add-calendar/ng-add-to-calendar.module.mjs +0 -18
  35. package/esm2022/lib/add-calendar/service/ng-add-to-calendar.service.mjs +0 -33
  36. package/esm2022/lib/alerts/alerts.module.mjs +0 -24
  37. package/esm2022/lib/alerts/components/alerts-list/alerts.component.mjs +0 -105
  38. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.component.mjs +0 -25
  39. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.directive.mjs +0 -35
  40. package/esm2022/lib/alerts/interfaces/IAlertState.mjs +0 -2
  41. package/esm2022/lib/alerts/models/alertDto.model.mjs +0 -3
  42. package/esm2022/lib/alerts/models/alertFilterDto.model.mjs +0 -3
  43. package/esm2022/lib/alerts/models/alertResponseDto.model.mjs +0 -7
  44. package/esm2022/lib/alerts/models/dismissAlertRequestDto.model.mjs +0 -3
  45. package/esm2022/lib/alerts/services/alertClientConfig.mjs +0 -30
  46. package/esm2022/lib/alerts/services/alerts.service.mjs +0 -31
  47. package/esm2022/lib/apiUrlToken.mjs +0 -30
  48. package/esm2022/lib/branding/brandBackground.directive.mjs +0 -46
  49. package/esm2022/lib/branding/brandConditionalBackgroundColor.directive.mjs +0 -58
  50. package/esm2022/lib/branding/brandConditionalColor.directive.mjs +0 -63
  51. package/esm2022/lib/branding/brandHoverColor.directive.mjs +0 -84
  52. package/esm2022/lib/branding/branding.module.mjs +0 -68
  53. package/esm2022/lib/branding/brandingProvider.service.mjs +0 -33
  54. package/esm2022/lib/branding/components/site-default-footer/site-default-footer.component.mjs +0 -37
  55. package/esm2022/lib/branding/components/site-default-header/site-default-header.component.mjs +0 -74
  56. package/esm2022/lib/branding/components/site-micro-footer/site-micro-footer.component.mjs +0 -34
  57. package/esm2022/lib/community/community.module.mjs +0 -31
  58. package/esm2022/lib/community/components/gethelp-form/gethelp-form.component.mjs +0 -79
  59. package/esm2022/lib/community/components/meetups/meetups.component.mjs +0 -69
  60. package/esm2022/lib/community/components/recentcontent/recentcontent.component.mjs +0 -29
  61. package/esm2022/lib/community/interfaces/ICommunityState.mjs +0 -2
  62. package/esm2022/lib/community/models/meetupDto.mjs +0 -6
  63. package/esm2022/lib/community/models/resourceDto.mjs +0 -6
  64. package/esm2022/lib/community/services/communityClientConfig.mjs +0 -30
  65. package/esm2022/lib/componentBase.mjs +0 -33
  66. package/esm2022/lib/componentWithViewStateBase.mjs +0 -38
  67. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -52
  68. package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -24
  69. package/esm2022/lib/components/expand/expand.component.mjs +0 -41
  70. package/esm2022/lib/components/expand/expand.module.mjs +0 -24
  71. package/esm2022/lib/components/loading/loading.component.mjs +0 -33
  72. package/esm2022/lib/components/loading/loading.module.mjs +0 -24
  73. package/esm2022/lib/components/mat-tags/mat-tags.component.mjs +0 -82
  74. package/esm2022/lib/components/mat-tags/mat-tags.module.mjs +0 -47
  75. package/esm2022/lib/components/metadata-input/metadata-input.component.mjs +0 -99
  76. package/esm2022/lib/components/metadata-input/metadata-input.module.mjs +0 -39
  77. package/esm2022/lib/components/multi-email-input/multi-email-input.component.mjs +0 -112
  78. package/esm2022/lib/components/multi-email-input/multi-email-input.module.mjs +0 -39
  79. package/esm2022/lib/components/paginator/paginator.component.mjs +0 -50
  80. package/esm2022/lib/components/paginator/paginator.module.mjs +0 -40
  81. package/esm2022/lib/components/select-list/select-list.component.mjs +0 -73
  82. package/esm2022/lib/components/select-list/select-list.module.mjs +0 -46
  83. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.component.mjs +0 -30
  84. package/esm2022/lib/components/snapshot-inviteurls/snapshot-inviteurls.module.mjs +0 -36
  85. package/esm2022/lib/components/tabnavigator/tabnavigator.component.mjs +0 -36
  86. package/esm2022/lib/components/tabnavigator/tabnavigator.module.mjs +0 -32
  87. package/esm2022/lib/components/topicselector/customCheckValidator.mjs +0 -15
  88. package/esm2022/lib/components/topicselector/minTopicsSelectedValidator.mjs +0 -15
  89. package/esm2022/lib/components/topicselector/topic-selector.component.mjs +0 -220
  90. package/esm2022/lib/components/topicselector/topic-selector.module.mjs +0 -55
  91. package/esm2022/lib/dialogs/dialog-account/account.service.mjs +0 -29
  92. package/esm2022/lib/dialogs/dialog-account/dialog-account.component.mjs +0 -86
  93. package/esm2022/lib/dialogs/dialog-account/dialog-account.module.mjs +0 -21
  94. package/esm2022/lib/dialogs/dialog-account/resetPasswordRequestDto.model.mjs +0 -3
  95. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.component.mjs +0 -48
  96. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.module.mjs +0 -21
  97. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.component.mjs +0 -76
  98. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.module.mjs +0 -23
  99. package/esm2022/lib/dialogs/dialog-resourcedownload/resourceDownload.service.mjs +0 -26
  100. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.component.mjs +0 -25
  101. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.directive.mjs +0 -30
  102. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.module.mjs +0 -19
  103. package/esm2022/lib/dialogs/dialog-support/contactDto.mjs +0 -2
  104. package/esm2022/lib/dialogs/dialog-support/contactService.service.mjs +0 -25
  105. package/esm2022/lib/dialogs/dialog-support/contactTypeDto.mjs +0 -2
  106. package/esm2022/lib/dialogs/dialog-support/dialog-support.component.mjs +0 -90
  107. package/esm2022/lib/dialogs/dialog-support/dialog-support.directive.mjs +0 -131
  108. package/esm2022/lib/dialogs/dialog-support/dialog-support.module.mjs +0 -27
  109. package/esm2022/lib/directives/backbutton/backbutton.directive.mjs +0 -34
  110. package/esm2022/lib/directives/backbutton/backbutton.module.mjs +0 -17
  111. package/esm2022/lib/directives/guards/guards.module.mjs +0 -30
  112. package/esm2022/lib/directives/guards/validChangeTokenGuard.mjs +0 -27
  113. package/esm2022/lib/directives/guards/validKeyGuard.mjs +0 -26
  114. package/esm2022/lib/directives/guards/validSnapshotKeyGuard.mjs +0 -27
  115. package/esm2022/lib/directives/guards/validTeamKeyGuard.mjs +0 -27
  116. package/esm2022/lib/errorhandling/error.model.mjs +0 -16
  117. package/esm2022/lib/errorhandling/errorHandler.mjs +0 -96
  118. package/esm2022/lib/errorhandling/errorService.module.mjs +0 -24
  119. package/esm2022/lib/errorhandling/errorServiceConfig.mjs +0 -34
  120. package/esm2022/lib/guides/components/imageslider/imageslider.component.mjs +0 -52
  121. package/esm2022/lib/guides/components/resumeguidehover/resumeguidehover.component.mjs +0 -40
  122. package/esm2022/lib/guides/dialogs/dialog-guide/dialog-guide.component.mjs +0 -144
  123. package/esm2022/lib/guides/dialogs/dialog-guides/dialog-guides.component.mjs +0 -90
  124. package/esm2022/lib/guides/directives/startguide/startguide.directive.mjs +0 -27
  125. package/esm2022/lib/guides/guides.module.mjs +0 -92
  126. package/esm2022/lib/guides/interfaces/IGuideState.mjs +0 -2
  127. package/esm2022/lib/guides/models/guideCollectionDto.mjs +0 -19
  128. package/esm2022/lib/guides/services/guidePopup.service.mjs +0 -80
  129. package/esm2022/lib/guides/services/guideStateInBackEnd.service.mjs +0 -54
  130. package/esm2022/lib/guides/services/guideStateInBrowser.service.mjs +0 -56
  131. package/esm2022/lib/guides/services/guidesClientConfig.mjs +0 -30
  132. package/esm2022/lib/guides/services/interfaces.mjs +0 -2
  133. package/esm2022/lib/models/brandingSettingsDto.mjs +0 -5
  134. package/esm2022/lib/models/channelDto.mjs +0 -18
  135. package/esm2022/lib/models/clientInfoDto.mjs +0 -7
  136. package/esm2022/lib/models/contextItemDto.mjs +0 -7
  137. package/esm2022/lib/models/featuresDto.mjs +0 -3
  138. package/esm2022/lib/models/keyValueDto.mjs +0 -7
  139. package/esm2022/lib/models/modelStructureDto.mjs +0 -46
  140. package/esm2022/lib/models/paginatedResponse.mjs +0 -6
  141. package/esm2022/lib/models/pagingOptions.mjs +0 -3
  142. package/esm2022/lib/models/selectListItem.mjs +0 -8
  143. package/esm2022/lib/models/userInfoDto.mjs +0 -16
  144. package/esm2022/lib/models/userSettingsDto.mjs +0 -65
  145. package/esm2022/lib/pipes/callback/callback.module.mjs +0 -17
  146. package/esm2022/lib/pipes/callback/callback.pipe.mjs +0 -20
  147. package/esm2022/lib/pipes/dateRange/ngx-dateRange.module.mjs +0 -17
  148. package/esm2022/lib/pipes/dateRange/ngx-dateRange.pipe.mjs +0 -36
  149. package/esm2022/lib/pipes/dateRange/ngx-dateRangeDto.model.mjs +0 -3
  150. package/esm2022/lib/pipes/segmentName/segmentName.module.mjs +0 -17
  151. package/esm2022/lib/pipes/segmentName/segmentName.pipe.mjs +0 -31
  152. package/esm2022/lib/pipes/slugify/ngx-slugify.module.mjs +0 -17
  153. package/esm2022/lib/pipes/slugify/ngx-slugify.pipe.mjs +0 -24
  154. package/esm2022/lib/results/components/age-indicator/age-indicator.component.mjs +0 -37
  155. package/esm2022/lib/results/components/arrow/arrow.component.mjs +0 -224
  156. package/esm2022/lib/results/components/badge/badge.component.mjs +0 -29
  157. package/esm2022/lib/results/components/badge-progression/badge-progression.component.mjs +0 -25
  158. package/esm2022/lib/results/components/badge-streak/badge-streak.component.mjs +0 -29
  159. package/esm2022/lib/results/components/badges/badges.component.mjs +0 -40
  160. package/esm2022/lib/results/components/benchmark-indicator/benchmark-indicator.component.mjs +0 -21
  161. package/esm2022/lib/results/components/coachingcenter-teaser/coachingcenter-teaser.component.mjs +0 -28
  162. package/esm2022/lib/results/components/delta-arrow/delta-arrow.component.mjs +0 -37
  163. package/esm2022/lib/results/components/doityourself/doityourself.component.mjs +0 -17
  164. package/esm2022/lib/results/components/doityourselfworkshops/doityourselfworkshops.component.mjs +0 -41
  165. package/esm2022/lib/results/components/factor-axis/factor-axis.component.mjs +0 -62
  166. package/esm2022/lib/results/components/factors/factors.component.mjs +0 -46
  167. package/esm2022/lib/results/components/filter-tags/filter-tags.component.mjs +0 -31
  168. package/esm2022/lib/results/components/focusareas/focusareas.component.mjs +0 -43
  169. package/esm2022/lib/results/components/footer/footer.component.mjs +0 -30
  170. package/esm2022/lib/results/components/impact-indicator/impact-indicator.component.mjs +0 -20
  171. package/esm2022/lib/results/components/liberatorkits/liberatorkits.component.mjs +0 -29
  172. package/esm2022/lib/results/components/limitationsapply/limitationsapply.component.mjs +0 -20
  173. package/esm2022/lib/results/components/model/model.component.mjs +0 -79
  174. package/esm2022/lib/results/components/model-factor/model-factor.component.mjs +0 -95
  175. package/esm2022/lib/results/components/model-factor-breakdown/model-factor-breakdown.component.mjs +0 -44
  176. package/esm2022/lib/results/components/model-switcher/model-switcher.component.mjs +0 -33
  177. package/esm2022/lib/results/components/nav-button/nav-button.component.mjs +0 -85
  178. package/esm2022/lib/results/components/participants/participants.component.mjs +0 -78
  179. package/esm2022/lib/results/components/quicktips/quicktips.component.mjs +0 -77
  180. package/esm2022/lib/results/components/recommendation/recommendation.component.mjs +0 -53
  181. package/esm2022/lib/results/components/recommendations/recommendations.component.mjs +0 -57
  182. package/esm2022/lib/results/components/research/research.component.mjs +0 -16
  183. package/esm2022/lib/results/components/roadmap/roadmap.component.mjs +0 -29
  184. package/esm2022/lib/results/components/teamdashboard-teaser/teamdashboard-teaser.component.mjs +0 -30
  185. package/esm2022/lib/results/components/teameffectiveness/teameffectiveness.component.mjs +0 -40
  186. package/esm2022/lib/results/components/termsupdated/termsupdated.component.mjs +0 -37
  187. package/esm2022/lib/results/components/tip-badge/tip-badge.component.mjs +0 -53
  188. package/esm2022/lib/results/components/trends/trends.component.mjs +0 -138
  189. package/esm2022/lib/results/components/update-in-progress/update-in-progress.component.mjs +0 -36
  190. package/esm2022/lib/results/components/userprofile/userprofile.component.mjs +0 -166
  191. package/esm2022/lib/results/components/video/video.component.mjs +0 -23
  192. package/esm2022/lib/results/components/widget-factorscore/widget-factorscore.component.mjs +0 -41
  193. package/esm2022/lib/results/components/widget-participationrate/widget-participationrate.component.mjs +0 -32
  194. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.component.mjs +0 -94
  195. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.directive.mjs +0 -30
  196. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.component.mjs +0 -93
  197. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.directive.mjs +0 -30
  198. package/esm2022/lib/results/dialogs/dialog-modelfilter/dialog-modelfilter.component.mjs +0 -84
  199. package/esm2022/lib/results/dialogs/dialog-notes/dialog-notes.component.mjs +0 -46
  200. package/esm2022/lib/results/dialogs/dialog-settings/dialog-settings.component.mjs +0 -167
  201. package/esm2022/lib/results/interfaces/IResultsState.mjs +0 -2
  202. package/esm2022/lib/results/models/badgeDto.mjs +0 -10
  203. package/esm2022/lib/results/models/dataSetDto.mjs +0 -7
  204. package/esm2022/lib/results/models/dimensionResultDto.mjs +0 -3
  205. package/esm2022/lib/results/models/exportRequestDto.mjs +0 -11
  206. package/esm2022/lib/results/models/factorScoreDto.mjs +0 -96
  207. package/esm2022/lib/results/models/localUserDto.model.mjs +0 -4
  208. package/esm2022/lib/results/models/participantDto.model.mjs +0 -4
  209. package/esm2022/lib/results/models/snapshotDto.model.mjs +0 -4
  210. package/esm2022/lib/results/models/snapshotMetaDataDto.mjs +0 -5
  211. package/esm2022/lib/results/models/teamDto.model.mjs +0 -4
  212. package/esm2022/lib/results/models/teamListResponseDto.mjs +0 -6
  213. package/esm2022/lib/results/models/teamMetaDataDto.mjs +0 -11
  214. package/esm2022/lib/results/models/trendDataRequestDto.model.mjs +0 -3
  215. package/esm2022/lib/results/models/userListResponseDto.mjs +0 -6
  216. package/esm2022/lib/results/models/widgetDataDto.mjs +0 -3
  217. package/esm2022/lib/results/results.module.mjs +0 -385
  218. package/esm2022/lib/results/services/account.service.mjs +0 -24
  219. package/esm2022/lib/results/services/dimissPopupService.mjs +0 -18
  220. package/esm2022/lib/results/services/exportService.mjs +0 -30
  221. package/esm2022/lib/results/services/factorService.mjs +0 -24
  222. package/esm2022/lib/results/services/resultsClientConfig.mjs +0 -30
  223. package/esm2022/lib/results/services/terms.service.mjs +0 -24
  224. package/esm2022/lib/results/services/trend.service.mjs +0 -24
  225. package/esm2022/lib/results/services/userProfile.service.mjs +0 -41
  226. package/esm2022/lib/validators/domainValidator.mjs +0 -14
  227. package/esm2022/lib/validators/matchInputValidator.mjs +0 -25
  228. package/esm2022/lib/validators/maxSelectedValidator.mjs +0 -9
  229. package/esm2022/lib/viewModel/interfaces.mjs +0 -6
  230. package/esm2022/lib/viewModel/reloadStrategies/noReloadStrategy.mjs +0 -22
  231. package/esm2022/lib/viewModel/reloadStrategies/reloadOnPushStrategy.mjs +0 -52
  232. package/esm2022/lib/viewModel/services/sessionIdInterceptor.service.mjs +0 -31
  233. package/esm2022/lib/viewModel/services/sessionIdProvider.service.mjs +0 -22
  234. package/esm2022/lib/viewModel/userSettings.service.mjs +0 -32
  235. package/esm2022/lib/viewModel/viewModelState.module.mjs +0 -31
  236. package/esm2022/lib/viewModel/viewModelState.service.mjs +0 -79
  237. package/esm2022/lib/viewModel/viewModelStateConfig.mjs +0 -30
  238. package/esm2022/public-api.mjs +0 -224
  239. package/esm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +0 -5
@@ -1,37 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
3
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../services/terms.service";
6
- import * as i2 from "@angular/material/snack-bar";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "../../../viewModel/viewModelState.service";
9
- export class TermsUpdatedComponent extends ComponentWithViewStateBase {
10
- constructor(termsService, state, snackBar) {
11
- super(state, snackBar);
12
- this.termsService = termsService;
13
- this.state = state;
14
- this.snackBar = snackBar;
15
- }
16
- async accept() {
17
- this.sending = true;
18
- await this.termsService.accept().subscribe(success => {
19
- this.showSuccess("Terms of service accepted");
20
- this.sending = false;
21
- });
22
- }
23
- onDataUpdate(data) {
24
- this.legal = data.userInfo.client.legal;
25
- }
26
- ;
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TermsUpdatedComponent, deps: [{ token: i1.TermsService }, { token: VIEWSTATE_PROVIDER }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TermsUpdatedComponent, selector: "termsupdated", usesInheritance: true, ngImport: i0, template: "<div class=\"termsupdated\">\n <h3>Updated terms of service</h3>\n <p> Before you can continue, we'd like you to review and accept our terms of service. They outline how we protect personal data in compliance with the European General Data Protection Directive (GDPR). They also outline our mutual responsibilities:</p>\n <ol>\n <li *ngFor=\"let document of legal.documents\"><a [href]=\"document.url\" target=\"_blank\">{{document.name}} <span class=\"icon ph-arrow-square-out\"></span></a></li>\n </ol>\n <div class=\"toolbar\">\n <button class=\"button primary acceptterms\" (click)=\"accept()\" [ngClass]=\"{'loading': sending}\"><span class=\"icon ph-check-circle\"></span> Accept and continue</button>\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}.termsupdated{margin-top:30px;margin-left:30px;margin-right:30px;padding:20px;border:3px solid #f0f0f0}.termsupdated h3{margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TermsUpdatedComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'termsupdated', template: "<div class=\"termsupdated\">\n <h3>Updated terms of service</h3>\n <p> Before you can continue, we'd like you to review and accept our terms of service. They outline how we protect personal data in compliance with the European General Data Protection Directive (GDPR). They also outline our mutual responsibilities:</p>\n <ol>\n <li *ngFor=\"let document of legal.documents\"><a [href]=\"document.url\" target=\"_blank\">{{document.name}} <span class=\"icon ph-arrow-square-out\"></span></a></li>\n </ol>\n <div class=\"toolbar\">\n <button class=\"button primary acceptterms\" (click)=\"accept()\" [ngClass]=\"{'loading': sending}\"><span class=\"icon ph-check-circle\"></span> Accept and continue</button>\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}.termsupdated{margin-top:30px;margin-left:30px;margin-right:30px;padding:20px;border:3px solid #f0f0f0}.termsupdated h3{margin-bottom:5px}\n"] }]
33
- }], ctorParameters: () => [{ type: i1.TermsService }, { type: i4.ViewModelStateBase, decorators: [{
34
- type: Inject,
35
- args: [VIEWSTATE_PROVIDER]
36
- }] }, { type: i2.MatSnackBar }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybXN1cGRhdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvdGVybXN1cGRhdGVkL3Rlcm1zdXBkYXRlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3Rlcm1zdXBkYXRlZC90ZXJtc3VwZGF0ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakYsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7QUFTbkcsTUFBTSxPQUFPLHFCQUFzQixTQUFRLDBCQUF5QztJQUtqRixZQUFvQixZQUEwQixFQUF3QyxLQUF3QyxFQUFZLFFBQXFCO1FBQ3pKLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFEUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUF3QyxVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUFZLGFBQVEsR0FBUixRQUFRLENBQWE7SUFFL0osQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUFtQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQUEsQ0FBQzsrR0FuQlEscUJBQXFCLDhDQUt5QixrQkFBa0I7bUdBTGhFLHFCQUFxQiwyRUNibEMsOHVCQVVBOzs0RkRHYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0csY0FBYzs7MEJBU3lCLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgTGVnYWxEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2xpZW50SW5mb0R0byc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElSZXN1bHRzU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1bHRzU3RhdGUnO1xuaW1wb3J0IHsgVGVybXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVybXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd0ZXJtc3VwZGF0ZWQnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3Rlcm1zdXBkYXRlZC5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi90ZXJtc3VwZGF0ZWQuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUZXJtc1VwZGF0ZWRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiB7XG4gICBwdWJsaWMgbGVnYWw6IExlZ2FsRHRvO1xuICAgcHVibGljIHRlcm1zVXBkYXRlZDogYm9vbGVhbjtcbiAgIHB1YmxpYyBzZW5kaW5nOiBib29sZWFuO1xuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlcm1zU2VydmljZTogVGVybXNTZXJ2aWNlLCBASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJvdGVjdGVkIHN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SVJlc3VsdHNTdGF0ZT4sIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgICAgIHN1cGVyKHN0YXRlLCBzbmFja0JhcilcbiAgIH1cblxuICAgcHVibGljIGFzeW5jIGFjY2VwdCgpIHtcbiAgICAgIHRoaXMuc2VuZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRlcm1zU2VydmljZS5hY2NlcHQoKS5zdWJzY3JpYmUoc3VjY2VzcyA9PiB7XG4gICAgICAgICB0aGlzLnNob3dTdWNjZXNzKFwiVGVybXMgb2Ygc2VydmljZSBhY2NlcHRlZFwiKTtcbiAgICAgICAgIHRoaXMuc2VuZGluZyA9IGZhbHNlO1xuICAgICAgfSlcbiAgIH1cblxuICAgcHJvdGVjdGVkIG9uRGF0YVVwZGF0ZShkYXRhOiBJUmVzdWx0c1N0YXRlKTogdm9pZCB7XG4gICAgICB0aGlzLmxlZ2FsID0gZGF0YS51c2VySW5mby5jbGllbnQubGVnYWw7XG4gICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInRlcm1zdXBkYXRlZFwiPlxuICAgPGgzPlVwZGF0ZWQgdGVybXMgb2Ygc2VydmljZTwvaDM+XG4gICA8cD4gQmVmb3JlIHlvdSBjYW4gY29udGludWUsIHdlJ2QgbGlrZSB5b3UgdG8gcmV2aWV3IGFuZCBhY2NlcHQgb3VyIHRlcm1zIG9mIHNlcnZpY2UuIFRoZXkgb3V0bGluZSBob3cgd2UgcHJvdGVjdCBwZXJzb25hbCBkYXRhIGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgRXVyb3BlYW4gR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gRGlyZWN0aXZlIChHRFBSKS4gVGhleSBhbHNvIG91dGxpbmUgb3VyIG11dHVhbCByZXNwb25zaWJpbGl0aWVzOjwvcD5cbiAgIDxvbD5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZG9jdW1lbnQgb2YgbGVnYWwuZG9jdW1lbnRzXCI+PGEgW2hyZWZdPVwiZG9jdW1lbnQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3tkb2N1bWVudC5uYW1lfX0gPHNwYW4gY2xhc3M9XCJpY29uIHBoLWFycm93LXNxdWFyZS1vdXRcIj48L3NwYW4+PC9hPjwvbGk+XG4gICA8L29sPlxuICAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gcHJpbWFyeSBhY2NlcHR0ZXJtc1wiIChjbGljayk9XCJhY2NlcHQoKVwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZyc6IHNlbmRpbmd9XCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLWNoZWNrLWNpcmNsZVwiPjwvc3Bhbj4gQWNjZXB0IGFuZCBjb250aW51ZTwvYnV0dG9uPlxuICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { Component, Inject, Input } from '@angular/core';
2
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
3
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/snack-bar";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/material/tooltip";
8
- import * as i4 from "@angular/router";
9
- import * as i5 from "../../../dialogs/dialog-subscribe/dialog-subscribe.directive";
10
- import * as i6 from "../../../viewModel/viewModelState.service";
11
- export class TipBadgeComponent extends ComponentWithViewStateBase {
12
- constructor(state, snackBar) {
13
- super(state, snackBar);
14
- this.state = state;
15
- this.snackBar = snackBar;
16
- }
17
- onDataUpdate(data) {
18
- var currentFactor = data.factorScores.factorScores.find(p => p.key == this.dimension);
19
- this.subscribed = data.isSubscriber;
20
- this.baseUrl = data.baseUrl;
21
- if (currentFactor != null) {
22
- this.impact = currentFactor.impact;
23
- this.class = currentFactor.qualification.toLowerCase();
24
- switch (currentFactor.qualification.toLowerCase()) {
25
- case "neutral":
26
- this.label = "average";
27
- break;
28
- case "positive":
29
- this.label = "good";
30
- break;
31
- case "negative":
32
- this.label = "urgent";
33
- break;
34
- default:
35
- this.label = "average";
36
- break;
37
- }
38
- }
39
- }
40
- ;
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TipBadgeComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TipBadgeComponent, selector: "tip-badge", inputs: { dimension: "dimension" }, usesInheritance: true, ngImport: i0, template: "<div [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimension\" class=\"tipbadge\" *ngIf=\"label && impact > 0\" [matTooltip]=\"'The impact of this recommendation is ' + impact + ' of 100'\">\n <div [class]=\"'badge ' + class\">{{ label }}</div>\n</div>\n\n<div class=\"tipbadge\" *ngIf=\"label && impact == 0 && subscribed\">\n <div [class]=\"'badge noimpact ' + class\" subscribeDialog>{{ label }}</div>\n</div>\n\n<div class=\"tipbadge\" *ngIf=\"label && impact == 0 && !subscribed\">\n <div [class]=\"'badge noimpact ' + class\">{{ label }}</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}.tipbadge{display:inline;cursor:pointer}.tipbadge .badge{display:inline}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.OpenSubscribeDialogDirective, selector: "[subscribeDialog]" }] }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TipBadgeComponent, decorators: [{
45
- type: Component,
46
- args: [{ selector: 'tip-badge', template: "<div [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimension\" class=\"tipbadge\" *ngIf=\"label && impact > 0\" [matTooltip]=\"'The impact of this recommendation is ' + impact + ' of 100'\">\n <div [class]=\"'badge ' + class\">{{ label }}</div>\n</div>\n\n<div class=\"tipbadge\" *ngIf=\"label && impact == 0 && subscribed\">\n <div [class]=\"'badge noimpact ' + class\" subscribeDialog>{{ label }}</div>\n</div>\n\n<div class=\"tipbadge\" *ngIf=\"label && impact == 0 && !subscribed\">\n <div [class]=\"'badge noimpact ' + class\">{{ label }}</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}.tipbadge{display:inline;cursor:pointer}.tipbadge .badge{display:inline}\n"] }]
47
- }], ctorParameters: () => [{ type: i6.ViewModelStateBase, decorators: [{
48
- type: Inject,
49
- args: [VIEWSTATE_PROVIDER]
50
- }] }, { type: i1.MatSnackBar }], propDecorators: { dimension: [{
51
- type: Input
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwLWJhZGdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvdGlwLWJhZGdlL3RpcC1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3RpcC1iYWRnZS90aXAtYmFkZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBc0Isa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7QUFRbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLDBCQUF5QztJQVU3RSxZQUFrRCxLQUFrRCxFQUFZLFFBQXFCO1FBQ2xJLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEd0IsVUFBSyxHQUFMLEtBQUssQ0FBNkM7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFhO0lBRXJJLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBbUI7UUFDdkMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVsQyxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZELFFBQVEsYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNqRCxLQUFLLFNBQVM7b0JBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLE1BQU07Z0JBQ1QsS0FBSyxVQUFVO29CQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO29CQUNwQixNQUFNO2dCQUNULEtBQUssVUFBVTtvQkFDWixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztvQkFDdEIsTUFBTTtnQkFDVDtvQkFDRyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsTUFBTTtZQUNaLENBQUM7UUFDSixDQUFDO0lBQ0osQ0FBQztJQUFBLENBQUM7K0dBckNRLGlCQUFpQixrQkFVUCxrQkFBa0I7bUdBVjVCLGlCQUFpQiw0R0NYOUIseWpCQVdBOzs0RkRBYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0csV0FBVzs7MEJBY1IsTUFBTTsyQkFBQyxrQkFBa0I7bUVBVDdCLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlLCBJVGVhbVJlcG9ydFJlc3VsdHNTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlc3VsdHNTdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd0aXAtYmFkZ2UnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3RpcC1iYWRnZS5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi90aXAtYmFkZ2UuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUaXBCYWRnZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+IHtcbiAgIEBJbnB1dCgpIGRpbWVuc2lvbjogc3RyaW5nO1xuICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gICBwdWJsaWMga2V5OiBzdHJpbmc7XG4gICBwdWJsaWMgZmVlZGJhY2tLZXk6IHN0cmluZztcbiAgIHB1YmxpYyBpbXBhY3Q6IG51bWJlcjtcbiAgIHB1YmxpYyBjbGFzczogc3RyaW5nO1xuICAgcHVibGljIHN1YnNjcmliZWQ6IGJvb2xlYW47XG4gICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xuXG4gICBjb25zdHJ1Y3RvcihASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJvdGVjdGVkIHN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SVRlYW1SZXBvcnRSZXN1bHRzU3RhdGU+LCBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7XG4gICAgICBzdXBlcihzdGF0ZSwgc25hY2tCYXIpO1xuICAgfVxuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElSZXN1bHRzU3RhdGUpOiB2b2lkIHtcbiAgICAgIHZhciBjdXJyZW50RmFjdG9yID0gZGF0YS5mYWN0b3JTY29yZXMuZmFjdG9yU2NvcmVzLmZpbmQocCA9PiBwLmtleSA9PSB0aGlzLmRpbWVuc2lvbik7XG4gICAgICB0aGlzLnN1YnNjcmliZWQgPSBkYXRhLmlzU3Vic2NyaWJlcjtcbiAgICAgICAgICAgIHRoaXMuYmFzZVVybCA9IGRhdGEuYmFzZVVybDtcblxuICAgICAgaWYgKGN1cnJlbnRGYWN0b3IgIT0gbnVsbCkge1xuICAgICAgICAgdGhpcy5pbXBhY3QgPSBjdXJyZW50RmFjdG9yLmltcGFjdDtcbiAgICAgICAgIHRoaXMuY2xhc3MgPSBjdXJyZW50RmFjdG9yLnF1YWxpZmljYXRpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgIHN3aXRjaCAoY3VycmVudEZhY3Rvci5xdWFsaWZpY2F0aW9uLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJuZXV0cmFsXCI6XG4gICAgICAgICAgICAgICB0aGlzLmxhYmVsID0gXCJhdmVyYWdlXCI7XG4gICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJwb3NpdGl2ZVwiOlxuICAgICAgICAgICAgICAgdGhpcy5sYWJlbCA9IFwiZ29vZFwiO1xuICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibmVnYXRpdmVcIjpcbiAgICAgICAgICAgICAgIHRoaXMubGFiZWwgPSBcInVyZ2VudFwiO1xuICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgdGhpcy5sYWJlbCA9IFwiYXZlcmFnZVwiO1xuICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBbcm91dGVyTGlua109XCJbYmFzZVVybCwgJ3RpcHMnXVwiIFtmcmFnbWVudF09XCJkaW1lbnNpb25cIiBjbGFzcz1cInRpcGJhZGdlXCIgKm5nSWY9XCJsYWJlbCAmJiBpbXBhY3QgPiAwXCIgW21hdFRvb2x0aXBdPVwiJ1RoZSBpbXBhY3Qgb2YgdGhpcyByZWNvbW1lbmRhdGlvbiBpcyAnICsgaW1wYWN0ICsgJyBvZiAxMDAnXCI+XG4gICA8ZGl2IFtjbGFzc109XCInYmFkZ2UgJyArIGNsYXNzXCI+e3sgbGFiZWwgfX08L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGlwYmFkZ2VcIiAqbmdJZj1cImxhYmVsICYmIGltcGFjdCA9PSAwICYmIHN1YnNjcmliZWRcIj5cbiAgIDxkaXYgW2NsYXNzXT1cIidiYWRnZSBub2ltcGFjdCAnICsgY2xhc3NcIiBzdWJzY3JpYmVEaWFsb2c+e3sgbGFiZWwgfX08L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGlwYmFkZ2VcIiAqbmdJZj1cImxhYmVsICYmIGltcGFjdCA9PSAwICYmICFzdWJzY3JpYmVkXCI+XG4gICA8ZGl2IFtjbGFzc109XCInYmFkZ2Ugbm9pbXBhY3QgJyArIGNsYXNzXCI+e3sgbGFiZWwgfX08L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,138 +0,0 @@
1
- import { Component, Inject, Input, ViewChild } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { LegendPosition } from '@swimlane/ngx-charts';
4
- import * as moment from 'moment';
5
- import { take } from 'rxjs/operators';
6
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
7
- import { SelectItem } from '../../../models/selectListItem';
8
- import { DateRangeDto } from '../../../pipes/dateRange/ngx-dateRangeDto.model';
9
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
10
- import { DeltaPeriodEnum, IncludeActionsModeEnum } from '../../models/factorScoreDto';
11
- import { TrendDataRequestDto } from '../../models/trendDataRequestDto.model';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- import * as i2 from "@angular/material/snack-bar";
15
- import * as i3 from "../../services/factorService";
16
- import * as i4 from "../../services/trend.service";
17
- import * as i5 from "@angular/router";
18
- import * as i6 from "@angular/common";
19
- import * as i7 from "@swimlane/ngx-charts";
20
- import * as i8 from "@angular/material/core";
21
- import * as i9 from "@angular/material/form-field";
22
- import * as i10 from "@angular/material/select";
23
- import * as i11 from "@angular/material/datepicker";
24
- import * as i12 from "../../../viewModel/viewModelState.service";
25
- export class TrendsComponent extends ComponentWithViewStateBase {
26
- constructor(formBuilder, snackBar, factorService, trendService, route, state) {
27
- super(state, snackBar);
28
- this.formBuilder = formBuilder;
29
- this.snackBar = snackBar;
30
- this.factorService = factorService;
31
- this.trendService = trendService;
32
- this.route = route;
33
- this.state = state;
34
- this.generatorNotes = [];
35
- this.loading = false;
36
- this.legendPosition = LegendPosition.Below;
37
- this.customColors = [];
38
- this.periodGroupings = [
39
- new SelectItem(DeltaPeriodEnum.previousMonth, "1 month"),
40
- new SelectItem(DeltaPeriodEnum.previousQuarter, "3 months"),
41
- new SelectItem(DeltaPeriodEnum.previousHalfYear, "6 months"),
42
- new SelectItem(DeltaPeriodEnum.previousYear, "12 months")
43
- ];
44
- this.includeActionOptions = [
45
- new SelectItem(IncludeActionsModeEnum.includeAll, "All actions"),
46
- new SelectItem(IncludeActionsModeEnum.includeRelevant, "Actions with expected impact"),
47
- new SelectItem(IncludeActionsModeEnum.none, "None")
48
- ];
49
- this.createForm();
50
- }
51
- ngOnInit() {
52
- super.ngOnInit();
53
- this.form.controls.unitKey.setValue([this.units[0]]);
54
- this.form.controls.includeActions.setValue("IncludeAll");
55
- this.form.controls.periodGrouping.setValue("PreviousQuarter");
56
- this.form.controls.start.setValue(moment.utc().subtract(1, 'years').toISOString());
57
- this.form.controls.end.setValue(moment.utc().toISOString());
58
- }
59
- onFormSubmit() {
60
- if (!this.form.valid) {
61
- return;
62
- }
63
- this.loading = true;
64
- var dataRequest = new TrendDataRequestDto();
65
- if (this.unitType == "team") {
66
- dataRequest.teamKeys = this.form.controls.unitKey.value.map(p => p.value);
67
- }
68
- else if (this.unitType = "organization") {
69
- dataRequest.clientKeys = this.form.controls.unitKey.value.map(p => p.value);
70
- }
71
- dataRequest.factorKeys = this.form.controls.factorKeys.value.map(p => p.value);
72
- dataRequest.periodGrouping = this.form.controls.periodGrouping.value;
73
- dataRequest.dateRange = new DateRangeDto();
74
- dataRequest.dateRange.from = this.form.controls.start.value;
75
- dataRequest.dateRange.to = this.form.controls.end.value;
76
- dataRequest.includeActions = this.form.controls.includeActions.value;
77
- dataRequest.includeSpread = true;
78
- this.trendService.team(dataRequest).pipe(take(1))
79
- .subscribe(success => {
80
- this.data = success.variables;
81
- this.customColors = success.variables.filter(p => p.color != null).map(p => { return { name: p.name, value: p.color }; });
82
- for (let item of this.data) {
83
- for (let s of item.series) {
84
- s.name = new Date(s.name);
85
- }
86
- }
87
- this.generatorNotes = success.generatorNotes;
88
- this.loading = false;
89
- this.onResize();
90
- });
91
- }
92
- onResize() {
93
- if (!this.chartContainer) {
94
- return;
95
- }
96
- this.view = [this.chartContainer.nativeElement.offsetWidth - 80, 450];
97
- }
98
- createForm() {
99
- this.form = this.formBuilder.group({
100
- unitKey: ["", Validators.required],
101
- factorKeys: ["", Validators.required],
102
- includeActions: ["", Validators.required],
103
- periodGrouping: [{ value: "" }, Validators.required],
104
- start: [{ value: "" }, Validators.required],
105
- end: [{ value: "" }, Validators.required],
106
- });
107
- }
108
- ;
109
- compareFactorOptions(o1, o2) {
110
- if (o1.value == o2.value)
111
- return true;
112
- else
113
- return false;
114
- }
115
- onDataUpdate(data) {
116
- this.factors = this.factorService.toSelectList(data.factorScores.modelStructure);
117
- var coreFactors = data.factorScores.modelStructure.definition.factors.filter(p => p.name == "Team Effectiveness").map(p => new SelectItem(p.publicKey, p.name));
118
- this.form.controls.factorKeys.setValue(coreFactors);
119
- }
120
- ;
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TrendsComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatSnackBar }, { token: i3.FactorService }, { token: i4.TrendService }, { token: i5.ActivatedRoute }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TrendsComponent, selector: "trends", inputs: { units: "units", unitType: "unitType" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartcontainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"dataselector\" (ngSubmit)=\"onFormSubmit()\">\n <div class=\"listtoolbar\" id=\"listtoolbar\">\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\" *ngIf=\"units.length > 1\">\n <mat-label>Select {{unitType}}</mat-label>\n <mat-select formControlName=\"unitKey\" id=\"select-units\" class=\"unitKey\" multiple [disabled]=\"units.length == 1\">\n <mat-option class=\"select-option\" *ngFor=\"let unit of units\" [value]=\"unit\">{{unit.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select factors</mat-label>\n <mat-select formControlName=\"factorKeys\" id=\"select-factors\" class=\"factorKeys\" multiple [compareWith]=\"compareFactorOptions\">\n <mat-option class=\"select-option\" *ngFor=\"let factor of factors\" [ngClass]=\"{'lower' : factor.lower}\" [value]=\"factor\" selected=\"true\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" id=\"select-periodGrouping\" 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 class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Action count</mat-label>\n <mat-select class=\"selectactions-dropdown\" id=\"select-includeActions\" formControlName=\"includeActions\">\n <mat-option class=\"select-option\" *ngFor=\"let item of includeActionOptions\" [value]=\"item.value\" class=\"select-option\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select date range </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" id=\"select-daterange\">\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 <div class=\"listtoolbar-item\">\n <button class=\"button primary\" id=\"button-showtrends\" [ngClass]=\"{'loading': loading}\"><span class=\"ph-funnel\"></span> Show trends</button>\n </div>\n </div>\n</form>\n\n<div class=\"message message-warning\" *ngIf=\"generatorNotes.length > 0\">\n <div class=\"ph-warning icon\"></div> {{generatorNotes[0]}}\n</div>\n\n<div class=\"wirebox calltoaction nodata\" *ngIf=\"!data\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>Are you actually improving?</h2>\n <p>Learn if your improvements are actually working out. Take more measurements and plot the trends for your {{unitType}}(s). How is that for empiricism?</p>\n </div>\n </div>\n</div>\n\n<div #chartcontainer class=\"linechart\">\n <div class=\"linechart-container\" *ngIf=\"data\">\n <ngx-charts-line-chart [legend]=\"true\"\n (window:resize)=\"onResize()\"\n [view]=\"view\"\n [showXAxisLabel]=\"true\"\n [showYAxisLabel]=\"true\"\n [xAxis]=\"true\"\n [scheme]=\"'vivid'\"\n [yAxis]=\"true\"\n [legendPosition]=\"legendPosition\"\n [xAxisLabel]=\"'Date'\"\n [yAxisLabel]=\"'Score'\"\n [timeline]=\"true\"\n [yScaleMin]=\"0\"\n [yScaleMax]=\"100\"\n [rangeFillOpacity]=\"0.1\"\n [results]=\"data\"\n [customColors]=\"customColors\">\n </ngx-charts-line-chart>\n </div>\n</div>\n\n<div class=\"message message-information\" *ngIf=\"data\">\n <span class=\"ph-info icon\"></span> This chart shows how factors change over time. The horizontal axis shows the time. The vertical axis shows the weighted average score on the factor. The light area around the lines represents the spread of scores (lower and upper 25% of scores). We aggregate results for one or more teams and from one or more organizations to the periods you chose (1 month, quarter, etc). For each period, we take the most recent snapshot of each team in that period (when available). Hit \"Show Trends\" when you're ready.\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}.listtoolbar{display:flex;flex-wrap:wrap;column-gap:30px;row-gap:10px}.listtoolbar .select{flex:auto}.nodata{margin-top:30px;margin-bottom:30px}.nodata img{max-width:700px}.linechart-container{border:3px solid #f0f0f0;margin-top:30px;margin-bottom:30px;padding:30px}.toolbar{margin-top:30px}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.LineChartComponent, selector: "ngx-charts-line-chart", inputs: ["legend", "legendTitle", "legendPosition", "xAxis", "yAxis", "showXAxisLabel", "showYAxisLabel", "xAxisLabel", "yAxisLabel", "autoScale", "timeline", "gradient", "showGridLines", "curve", "activeEntries", "schemeType", "rangeFillOpacity", "trimXAxisTicks", "trimYAxisTicks", "rotateXAxisTicks", "maxXAxisTickLength", "maxYAxisTickLength", "xAxisTickFormatting", "yAxisTickFormatting", "xAxisTicks", "yAxisTicks", "roundDomains", "tooltipDisabled", "showRefLines", "referenceLines", "showRefLabels", "xScaleMin", "xScaleMax", "yScaleMin", "yScaleMax", "wrapTicks"], outputs: ["activate", "deactivate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { 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"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.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: i11.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i11.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i11.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i11.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i11.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
123
- }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TrendsComponent, decorators: [{
125
- type: Component,
126
- args: [{ selector: 'trends', template: "<form [formGroup]=\"form\" class=\"dataselector\" (ngSubmit)=\"onFormSubmit()\">\n <div class=\"listtoolbar\" id=\"listtoolbar\">\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\" *ngIf=\"units.length > 1\">\n <mat-label>Select {{unitType}}</mat-label>\n <mat-select formControlName=\"unitKey\" id=\"select-units\" class=\"unitKey\" multiple [disabled]=\"units.length == 1\">\n <mat-option class=\"select-option\" *ngFor=\"let unit of units\" [value]=\"unit\">{{unit.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select factors</mat-label>\n <mat-select formControlName=\"factorKeys\" id=\"select-factors\" class=\"factorKeys\" multiple [compareWith]=\"compareFactorOptions\">\n <mat-option class=\"select-option\" *ngFor=\"let factor of factors\" [ngClass]=\"{'lower' : factor.lower}\" [value]=\"factor\" selected=\"true\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" id=\"select-periodGrouping\" 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 class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Action count</mat-label>\n <mat-select class=\"selectactions-dropdown\" id=\"select-includeActions\" formControlName=\"includeActions\">\n <mat-option class=\"select-option\" *ngFor=\"let item of includeActionOptions\" [value]=\"item.value\" class=\"select-option\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select date range </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" id=\"select-daterange\">\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 <div class=\"listtoolbar-item\">\n <button class=\"button primary\" id=\"button-showtrends\" [ngClass]=\"{'loading': loading}\"><span class=\"ph-funnel\"></span> Show trends</button>\n </div>\n </div>\n</form>\n\n<div class=\"message message-warning\" *ngIf=\"generatorNotes.length > 0\">\n <div class=\"ph-warning icon\"></div> {{generatorNotes[0]}}\n</div>\n\n<div class=\"wirebox calltoaction nodata\" *ngIf=\"!data\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>Are you actually improving?</h2>\n <p>Learn if your improvements are actually working out. Take more measurements and plot the trends for your {{unitType}}(s). How is that for empiricism?</p>\n </div>\n </div>\n</div>\n\n<div #chartcontainer class=\"linechart\">\n <div class=\"linechart-container\" *ngIf=\"data\">\n <ngx-charts-line-chart [legend]=\"true\"\n (window:resize)=\"onResize()\"\n [view]=\"view\"\n [showXAxisLabel]=\"true\"\n [showYAxisLabel]=\"true\"\n [xAxis]=\"true\"\n [scheme]=\"'vivid'\"\n [yAxis]=\"true\"\n [legendPosition]=\"legendPosition\"\n [xAxisLabel]=\"'Date'\"\n [yAxisLabel]=\"'Score'\"\n [timeline]=\"true\"\n [yScaleMin]=\"0\"\n [yScaleMax]=\"100\"\n [rangeFillOpacity]=\"0.1\"\n [results]=\"data\"\n [customColors]=\"customColors\">\n </ngx-charts-line-chart>\n </div>\n</div>\n\n<div class=\"message message-information\" *ngIf=\"data\">\n <span class=\"ph-info icon\"></span> This chart shows how factors change over time. The horizontal axis shows the time. The vertical axis shows the weighted average score on the factor. The light area around the lines represents the spread of scores (lower and upper 25% of scores). We aggregate results for one or more teams and from one or more organizations to the periods you chose (1 month, quarter, etc). For each period, we take the most recent snapshot of each team in that period (when available). Hit \"Show Trends\" when you're ready.\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}.listtoolbar{display:flex;flex-wrap:wrap;column-gap:30px;row-gap:10px}.listtoolbar .select{flex:auto}.nodata{margin-top:30px;margin-bottom:30px}.nodata img{max-width:700px}.linechart-container{border:3px solid #f0f0f0;margin-top:30px;margin-bottom:30px;padding:30px}.toolbar{margin-top:30px}.mat-mdc-option.lower{margin-left:20px}\n"] }]
127
- }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.MatSnackBar }, { type: i3.FactorService }, { type: i4.TrendService }, { type: i5.ActivatedRoute }, { type: i12.ViewModelStateBase, decorators: [{
128
- type: Inject,
129
- args: [VIEWSTATE_PROVIDER]
130
- }] }], propDecorators: { units: [{
131
- type: Input
132
- }], unitType: [{
133
- type: Input
134
- }], chartContainer: [{
135
- type: ViewChild,
136
- args: ["chartcontainer"]
137
- }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlbmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvdHJlbmRzL3RyZW5kcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3RyZW5kcy90cmVuZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRSxPQUFPLEVBQXNCLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVM3RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSwwQkFBeUM7SUF5QjNFLFlBQW9CLFdBQStCLEVB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QUFDLGtCQUFrQjt5Q0F4QjNNLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDOEIsY0FBYztzQkFBakQsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTGVnZW5kUG9zaXRpb24gfSBmcm9tICdAc3dpbWxhbmUvbmd4LWNoYXJ0cyc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2VsZWN0TGlzdEl0ZW0nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlRHRvIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZGF0ZVJhbmdlL25neC1kYXRlUmFuZ2VEdG8ubW9kZWwnO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IERlbHRhUGVyaW9kRW51bSwgSW5jbHVkZUFjdGlvbnNNb2RlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9mYWN0b3JTY29yZUR0byc7XG5pbXBvcnQgeyBUcmVuZERhdGFSZXF1ZXN0RHRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZW5kRGF0YVJlcXVlc3REdG8ubW9kZWwnO1xuaW1wb3J0IHsgRmFjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhY3RvclNlcnZpY2UnO1xuaW1wb3J0IHsgVHJlbmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJlbmQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd0cmVuZHMnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3RyZW5kcy5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi90cmVuZHMuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVuZHNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiB7XG4gICBASW5wdXQoKSBwdWJsaWMgdW5pdHM6IFNlbGVjdEl0ZW1bXTtcbiAgIEBJbnB1dCgpIHB1YmxpYyB1bml0VHlwZTogc3RyaW5nO1xuICAgQFZpZXdDaGlsZChcImNoYXJ0Y29udGFpbmVyXCIpIHB1YmxpYyBjaGFydENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD5cbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG4gICBwdWJsaWMgZGF0YTogYW55W107XG4gICBwdWJsaWMgZ2VuZXJhdG9yTm90ZXM6IHN0cmluZ1tdID0gW107XG4gICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICBwdWJsaWMgdmlldzogW251bWJlciwgbnVtYmVyXTtcbiAgIHB1YmxpYyBsZWdlbmRQb3NpdGlvbjogTGVnZW5kUG9zaXRpb24gPSBMZWdlbmRQb3NpdGlvbi5CZWxvdztcbiAgIHB1YmxpYyBjdXN0b21Db2xvcnMgPSBbXTtcblxuICAgcHVibGljIHBlcmlvZEdyb3VwaW5nczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oRGVsdGFQZXJpb2RFbnVtLnByZXZpb3VzTW9udGgsIFwiMSBtb250aFwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKERlbHRhUGVyaW9kRW51bS5wcmV2aW91c1F1YXJ0ZXIsIFwiMyBtb250aHNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShEZWx0YVBlcmlvZEVudW0ucHJldmlvdXNIYWxmWWVhciwgXCI2IG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKERlbHRhUGVyaW9kRW51bS5wcmV2aW91c1llYXIsIFwiMTIgbW9udGhzXCIpXG4gICBdXG4gICBwdWJsaWMgaW5jbHVkZUFjdGlvbk9wdGlvbnM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEluY2x1ZGVBY3Rpb25zTW9kZUVudW0uaW5jbHVkZUFsbCwgXCJBbGwgYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEluY2x1ZGVBY3Rpb25zTW9kZUVudW0uaW5jbHVkZVJlbGV2YW50LCBcIkFjdGlvbnMgd2l0aCBleHBlY3RlZCBpbXBhY3RcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShJbmNsdWRlQWN0aW9uc01vZGVFbnVtLm5vbmUsIFwiTm9uZVwiKVxuICAgXVxuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIsIHByaXZhdGUgZmFjdG9yU2VydmljZTogRmFjdG9yU2VydmljZSwgcHJpdmF0ZSB0cmVuZFNlcnZpY2U6IFRyZW5kU2VydmljZSwgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgQEluamVjdChWSUVXU1RBVEVfUFJPVklERVIpIHByaXZhdGUgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKTtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnVuaXRLZXkuc2V0VmFsdWUoW3RoaXMudW5pdHNbMF1dKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmNsdWRlQWN0aW9ucy5zZXRWYWx1ZShcIkluY2x1ZGVBbGxcIik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucGVyaW9kR3JvdXBpbmcuc2V0VmFsdWUoXCJQcmV2aW91c1F1YXJ0ZXJcIik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhcnQuc2V0VmFsdWUobW9tZW50LnV0YygpLnN1YnRyYWN0KDEsICd5ZWFycycpLnRvSVNPU3RyaW5nKCkpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmVuZC5zZXRWYWx1ZShtb21lbnQudXRjKCkudG9JU09TdHJpbmcoKSk7XG4gICB9XG5cbiAgIHB1YmxpYyBvbkZvcm1TdWJtaXQoKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIHZhciBkYXRhUmVxdWVzdDogVHJlbmREYXRhUmVxdWVzdER0byA9IG5ldyBUcmVuZERhdGFSZXF1ZXN0RHRvKCk7XG5cbiAgICAgIGlmICh0aGlzLnVuaXRUeXBlID09IFwidGVhbVwiKSB7XG4gICAgICAgICBkYXRhUmVxdWVzdC50ZWFtS2V5cyA9IHRoaXMuZm9ybS5jb250cm9scy51bml0S2V5LnZhbHVlLm1hcChwID0+IHAudmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy51bml0VHlwZSA9IFwib3JnYW5pemF0aW9uXCIpIHtcbiAgICAgICAgIGRhdGFSZXF1ZXN0LmNsaWVudEtleXMgPSB0aGlzLmZvcm0uY29udHJvbHMudW5pdEtleS52YWx1ZS5tYXAocCA9PiBwLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVJlcXVlc3QuZmFjdG9yS2V5cyA9IHRoaXMuZm9ybS5jb250cm9scy5mYWN0b3JLZXlzLnZhbHVlLm1hcChwID0+IHAudmFsdWUpO1xuICAgICAgZGF0YVJlcXVlc3QucGVyaW9kR3JvdXBpbmcgPSB0aGlzLmZvcm0uY29udHJvbHMucGVyaW9kR3JvdXBpbmcudmFsdWU7XG4gICAgICBkYXRhUmVxdWVzdC5kYXRlUmFuZ2UgPSBuZXcgRGF0ZVJhbmdlRHRvKCk7XG4gICAgICBkYXRhUmVxdWVzdC5kYXRlUmFuZ2UuZnJvbSA9IHRoaXMuZm9ybS5jb250cm9scy5zdGFydC52YWx1ZTtcbiAgICAgIGRhdGFSZXF1ZXN0LmRhdGVSYW5nZS50byA9IHRoaXMuZm9ybS5jb250cm9scy5lbmQudmFsdWU7XG4gICAgICBkYXRhUmVxdWVzdC5pbmNsdWRlQWN0aW9ucyA9IHRoaXMuZm9ybS5jb250cm9scy5pbmNsdWRlQWN0aW9ucy52YWx1ZTtcbiAgICAgIGRhdGFSZXF1ZXN0LmluY2x1ZGVTcHJlYWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLnRyZW5kU2VydmljZS50ZWFtKGRhdGFSZXF1ZXN0KS5waXBlKHRha2UoMSkpXG4gICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBzdWNjZXNzLnZhcmlhYmxlcztcbiAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JzID0gc3VjY2Vzcy52YXJpYWJsZXMuZmlsdGVyKHAgPT4gcC5jb2xvciAhPSBudWxsKS5tYXAocCA9PiB7IHJldHVybiB7IG5hbWU6IHAubmFtZSwgdmFsdWU6IHAuY29sb3IgfSB9KTtcblxuICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHMgb2YgaXRlbS5zZXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgIHMubmFtZSA9IG5ldyBEYXRlKHMubmFtZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JOb3RlcyA9IHN1Y2Nlc3MuZ2VuZXJhdG9yTm90ZXM7XG4gICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgb25SZXNpemUoKSB7XG4gICAgICBpZiAoIXRoaXMuY2hhcnRDb250YWluZXIpIHsgcmV0dXJuOyB9XG4gICAgICB0aGlzLnZpZXcgPSBbdGhpcy5jaGFydENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gODAsIDQ1MF07XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgdW5pdEtleTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgZmFjdG9yS2V5czogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgaW5jbHVkZUFjdGlvbnM6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHBlcmlvZEdyb3VwaW5nOiBbeyB2YWx1ZTogXCJcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHN0YXJ0OiBbeyB2YWx1ZTogXCJcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIGVuZDogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB9KTtcbiAgIH07XG5cbiAgIHB1YmxpYyBjb21wYXJlRmFjdG9yT3B0aW9ucyhvMTogU2VsZWN0SXRlbSwgbzI6IFNlbGVjdEl0ZW0pIHtcbiAgICAgIGlmIChvMS52YWx1ZSA9PSBvMi52YWx1ZSlcbiAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZWxzZSByZXR1cm4gZmFsc2VcbiAgIH1cblxuICAgcHJvdGVjdGVkIG9uRGF0YVVwZGF0ZShkYXRhOiBJUmVzdWx0c1N0YXRlKTogdm9pZCB7XG4gICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmZhY3RvclNlcnZpY2UudG9TZWxlY3RMaXN0KGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlKTtcbiAgICAgIHZhciBjb3JlRmFjdG9ycyA9IGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlLmRlZmluaXRpb24uZmFjdG9ycy5maWx0ZXIocCA9PiBwLm5hbWUgPT0gXCJUZWFtIEVmZmVjdGl2ZW5lc3NcIikubWFwKHAgPT4gbmV3IFNlbGVjdEl0ZW0ocC5wdWJsaWNLZXksIHAubmFtZSkpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZhY3RvcktleXMuc2V0VmFsdWUoY29yZUZhY3RvcnMpO1xuICAgfTtcbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZGF0YXNlbGVjdG9yXCIgKG5nU3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgpXCI+XG4gICA8ZGl2IGNsYXNzPVwibGlzdHRvb2xiYXJcIiBpZD1cImxpc3R0b29sYmFyXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJsaXN0dG9vbGJhci1pdGVtIHNlbGVjdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCJ1bml0cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCB7e3VuaXRUeXBlfX08L21hdC1sYWJlbD5cbiAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVuaXRLZXlcIiBpZD1cInNlbGVjdC11bml0c1wiIGNsYXNzPVwidW5pdEtleVwiIG11bHRpcGxlIFtkaXNhYmxlZF09XCJ1bml0cy5sZW5ndGggPT0gMVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IHVuaXQgb2YgdW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPnt7dW5pdC5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibGlzdHRvb2xiYXItaXRlbSBzZWxlY3RcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgPG1hdC1sYWJlbD5TZWxlY3QgZmFjdG9yczwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZmFjdG9yS2V5c1wiIGlkPVwic2VsZWN0LWZhY3RvcnNcIiBjbGFzcz1cImZhY3RvcktleXNcIiBtdWx0aXBsZSBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUZhY3Rvck9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBmYWN0b3Igb2YgZmFjdG9yc1wiIFtuZ0NsYXNzXT1cInsnbG93ZXInIDogZmFjdG9yLmxvd2VyfVwiIFt2YWx1ZV09XCJmYWN0b3JcIiBzZWxlY3RlZD1cInRydWVcIj57e2ZhY3Rvci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibGlzdHRvb2xiYXItaXRlbSBzZWxlY3RcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgPG1hdC1sYWJlbD5TdW1tYXJpemUgdG8gcGVyaW9kcyBvZjwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJwZXJpb2RHcm91cGluZy1kcm9wZG93blwiIGlkPVwic2VsZWN0LXBlcmlvZEdyb3VwaW5nXCIgZm9ybUNvbnRyb2xOYW1lPVwicGVyaW9kR3JvdXBpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBlcmlvZEdyb3VwaW5nc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJsaXN0dG9vbGJhci1pdGVtIHNlbGVjdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPkFjdGlvbiBjb3VudDwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJzZWxlY3RhY3Rpb25zLWRyb3Bkb3duXCIgaWQ9XCJzZWxlY3QtaW5jbHVkZUFjdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJpbmNsdWRlQWN0aW9uc1wiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW5jbHVkZUFjdGlvbk9wdGlvbnNcIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibGlzdHRvb2xiYXItaXRlbSBzZWxlY3RcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgPG1hdC1sYWJlbD5TZWxlY3QgZGF0ZSByYW5nZSA8L21hdC1sYWJlbD5cbiAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbcmFuZ2VQaWNrZXJdPVwicGlja2VyXCIgaWQ9XCJzZWxlY3QtZGF0ZXJhbmdlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBwbGFjZWhvbGRlcj1cIkVuZCBkYXRlXCI+XG4gICAgICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cblxuICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuc3RhcnQuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKVwiPkludmFsaWQgc3RhcnQgZGF0ZTwvbWF0LWVycm9yPlxuICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZW5kLmhhc0Vycm9yKCdtYXRFbmREYXRlSW52YWxpZCcpXCI+SW52YWxpZCBlbmQgZGF0ZTwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdiBjbGFzcz1cImxpc3R0b29sYmFyLWl0ZW1cIj5cbiAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIGlkPVwiYnV0dG9uLXNob3d0cmVuZHNcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmcnOiBsb2FkaW5nfVwiPjxzcGFuIGNsYXNzPVwicGgtZnVubmVsXCI+PC9zcGFuPiBTaG93IHRyZW5kczwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdiBjbGFzcz1cIm1lc3NhZ2UgbWVzc2FnZS13YXJuaW5nXCIgKm5nSWY9XCJnZW5lcmF0b3JOb3Rlcy5sZW5ndGggPiAwXCI+XG4gICA8ZGl2IGNsYXNzPVwicGgtd2FybmluZyBpY29uXCI+PC9kaXY+IHt7Z2VuZXJhdG9yTm90ZXNbMF19fVxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ3aXJlYm94IGNhbGx0b2FjdGlvbiBub2RhdGFcIiAqbmdJZj1cIiFkYXRhXCI+XG4gICA8ZGl2IGNsYXNzPVwiY29udGVudHdpdGhib3JkZXJzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWcvaW1wcm92ZS5wbmdcIiAvPlxuICAgICAgICAgPGgyPkFyZSB5b3UgYWN0dWFsbHkgaW1wcm92aW5nPzwvaDI+XG4gICAgICAgICA8cD5MZWFybiBpZiB5b3VyIGltcHJvdmVtZW50cyBhcmUgYWN0dWFsbHkgd29ya2luZyBvdXQuIFRha2UgbW9yZSBtZWFzdXJlbWVudHMgYW5kIHBsb3QgdGhlIHRyZW5kcyBmb3IgeW91ciB7e3VuaXRUeXBlfX0ocykuIEhvdyBpcyB0aGF0IGZvciBlbXBpcmljaXNtPzwvcD5cbiAgICAgIDwvZGl2PlxuICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAjY2hhcnRjb250YWluZXIgY2xhc3M9XCJsaW5lY2hhcnRcIj5cbiAgIDxkaXYgY2xhc3M9XCJsaW5lY2hhcnQtY29udGFpbmVyXCIgKm5nSWY9XCJkYXRhXCI+XG4gICAgICA8bmd4LWNoYXJ0cy1saW5lLWNoYXJ0IFtsZWdlbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dYQXhpc0xhYmVsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1lBeGlzTGFiZWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt4QXhpc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjaGVtZV09XCIndml2aWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3lBeGlzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVnZW5kUG9zaXRpb25dPVwibGVnZW5kUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeEF4aXNMYWJlbF09XCInRGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeUF4aXNMYWJlbF09XCInU2NvcmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVsaW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeVNjYWxlTWluXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeVNjYWxlTWF4XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZUZpbGxPcGFjaXR5XT1cIjAuMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN1bHRzXT1cImRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29sb3JzXT1cImN1c3RvbUNvbG9yc1wiPlxuICAgICAgPC9uZ3gtY2hhcnRzLWxpbmUtY2hhcnQ+XG4gICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWVzc2FnZSBtZXNzYWdlLWluZm9ybWF0aW9uXCIgKm5nSWY9XCJkYXRhXCI+XG4gICA8c3BhbiBjbGFzcz1cInBoLWluZm8gaWNvblwiPjwvc3Bhbj4gVGhpcyBjaGFydCBzaG93cyBob3cgZmFjdG9ycyBjaGFuZ2Ugb3ZlciB0aW1lLiBUaGUgaG9yaXpvbnRhbCBheGlzIHNob3dzIHRoZSB0aW1lLiBUaGUgdmVydGljYWwgYXhpcyBzaG93cyB0aGUgd2VpZ2h0ZWQgYXZlcmFnZSBzY29yZSBvbiB0aGUgZmFjdG9yLiBUaGUgbGlnaHQgYXJlYSBhcm91bmQgdGhlIGxpbmVzIHJlcHJlc2VudHMgdGhlIHNwcmVhZCBvZiBzY29yZXMgKGxvd2VyIGFuZCB1cHBlciAyNSUgb2Ygc2NvcmVzKS4gV2UgYWdncmVnYXRlIHJlc3VsdHMgZm9yIG9uZSBvciBtb3JlIHRlYW1zIGFuZCBmcm9tIG9uZSBvciBtb3JlIG9yZ2FuaXphdGlvbnMgdG8gdGhlIHBlcmlvZHMgeW91IGNob3NlICgxIG1vbnRoLCBxdWFydGVyLCBldGMpLiBGb3IgZWFjaCBwZXJpb2QsIHdlIHRha2UgdGhlIG1vc3QgcmVjZW50IHNuYXBzaG90IG9mIGVhY2ggdGVhbSBpbiB0aGF0IHBlcmlvZCAod2hlbiBhdmFpbGFibGUpLiBIaXQgXCJTaG93IFRyZW5kc1wiIHdoZW4geW91J3JlIHJlYWR5LlxuPC9kaXY+XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { ComponentWithViewStateBase } from '../../../componentWithViewStateBase';
3
- import { VIEWSTATE_PROVIDER } from '../../../viewModel/viewModelState.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/snack-bar";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../../../viewModel/viewModelState.service";
8
- export class UpdateInProgressComponent extends ComponentWithViewStateBase {
9
- constructor(state, snackBar) {
10
- super(state, snackBar);
11
- this.state = state;
12
- this.snackBar = snackBar;
13
- }
14
- ngOnInit() {
15
- this.subscription = this.state.updating.subscribe(reloaded => {
16
- this.delayedReloading = reloaded;
17
- });
18
- }
19
- ;
20
- ngOnDestroy() {
21
- if (this.subscription) {
22
- this.subscription.unsubscribe();
23
- }
24
- }
25
- ;
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UpdateInProgressComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: UpdateInProgressComponent, selector: "update-in-progress", usesInheritance: true, ngImport: i0, template: "<div class=\"update-in-progress\" *ngIf=\"delayedReloading\">\n <span class=\"icon ph-floppy-disk-bold\"></span>\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}.update-in-progress{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%;-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;background:#2f2f2f;position:fixed;right:0;width:20px;height:20px;bottom:0;padding:5px;display:flex;justify-content:center;align-items:center}.update-in-progress .icon{color:#f0f0f0;font-size:18px;animation:beating;animation-duration:1s;animation-iteration-count:infinite}@keyframes beating{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: UpdateInProgressComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'update-in-progress', template: "<div class=\"update-in-progress\" *ngIf=\"delayedReloading\">\n <span class=\"icon ph-floppy-disk-bold\"></span>\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}.update-in-progress{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%;-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;background:#2f2f2f;position:fixed;right:0;width:20px;height:20px;bottom:0;padding:5px;display:flex;justify-content:center;align-items:center}.update-in-progress .icon{color:#f0f0f0;font-size:18px;animation:beating;animation-duration:1s;animation-iteration-count:infinite}@keyframes beating{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}\n"] }]
32
- }], ctorParameters: () => [{ type: i3.ViewModelStateBase, decorators: [{
33
- type: Inject,
34
- args: [VIEWSTATE_PROVIDER]
35
- }] }, { type: i1.MatSnackBar }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWluLXByb2dyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvdXBkYXRlLWluLXByb2dyZXNzL3VwZGF0ZS1pbi1wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL3VwZGF0ZS1pbi1wcm9ncmVzcy91cGRhdGUtaW4tcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQVFuRyxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQXlDO0lBSXJGLFlBQWtELEtBQWtELEVBQVksUUFBcUI7UUFDbEksS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUE2QztRQUFZLGFBQVEsR0FBUixRQUFRLENBQWE7SUFFckksQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUFBLENBQUM7SUFFSyxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUFBLENBQUM7K0dBbEJRLHlCQUF5QixrQkFJZixrQkFBa0I7bUdBSjVCLHlCQUF5QixpRkNadEMsOEhBR0E7OzRGRFNhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRyxvQkFBb0I7OzBCQVFqQixNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgVmlld01vZGVsU3RhdGVCYXNlLCBWSUVXU1RBVEVfUFJPVklERVIgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJUmVzdWx0c1N0YXRlLCBJVGVhbVJlcG9ydFJlc3VsdHNTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlc3VsdHNTdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICd1cGRhdGUtaW4tcHJvZ3Jlc3MnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS1pbi1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi91cGRhdGUtaW4tcHJvZ3Jlc3MuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBVcGRhdGVJblByb2dyZXNzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2U8SVJlc3VsdHNTdGF0ZT4ge1xuICAgcHVibGljIGRlbGF5ZWRSZWxvYWRpbmc6IGJvb2xlYW47XG4gICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICBjb25zdHJ1Y3RvcihASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJvdGVjdGVkIHN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SVRlYW1SZXBvcnRSZXN1bHRzU3RhdGU+LCBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7XG4gICAgICBzdXBlcihzdGF0ZSwgc25hY2tCYXIpO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuc3RhdGUudXBkYXRpbmcuc3Vic2NyaWJlKHJlbG9hZGVkID0+IHtcbiAgICAgICAgIHRoaXMuZGVsYXllZFJlbG9hZGluZyA9IHJlbG9hZGVkO1xuICAgICAgfSk7XG4gICB9O1xuXG4gICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInVwZGF0ZS1pbi1wcm9ncmVzc1wiICpuZ0lmPVwiZGVsYXllZFJlbG9hZGluZ1wiPlxuICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWZsb3BweS1kaXNrLWJvbGRcIj48L3NwYW4+XG48L2Rpdj5cbiJdfQ==