@sunbird-cb/consumption 0.0.42 → 0.0.44

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 (62) hide show
  1. package/bundles/sunbird-cb-consumption.umd.js +1243 -165
  2. package/bundles/sunbird-cb-consumption.umd.js.map +1 -1
  3. package/bundles/sunbird-cb-consumption.umd.min.js +2 -2
  4. package/bundles/sunbird-cb-consumption.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +175 -0
  6. package/esm2015/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +261 -0
  7. package/esm2015/lib/_common/cards/cards.component.js +24 -25
  8. package/esm2015/lib/_common/cards/cards.module.js +28 -3
  9. package/esm2015/lib/_common/content-progress/content-progress.component.js +89 -0
  10. package/esm2015/lib/_common/content-progress/content-progress.module.js +22 -0
  11. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +43 -2
  12. package/esm2015/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +225 -0
  13. package/esm2015/lib/_common/dialog-components/dialog-components.module.js +43 -0
  14. package/esm2015/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +2 -4
  15. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.js +28 -0
  16. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.module.js +19 -0
  17. package/esm2015/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +2 -2
  18. package/esm2015/lib/_services/certificate.service.js +63 -0
  19. package/esm2015/lib/_services/multilingual-translations.service.js +27 -24
  20. package/esm2015/lib/_services/widget-content.service.js +1 -2
  21. package/esm2015/lib/consumption.module.js +1 -1
  22. package/esm2015/public-api.js +2 -1
  23. package/esm2015/sunbird-cb-consumption.js +34 -26
  24. package/esm5/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +202 -0
  25. package/esm5/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +278 -0
  26. package/esm5/lib/_common/cards/cards.component.js +28 -17
  27. package/esm5/lib/_common/cards/cards.module.js +28 -3
  28. package/esm5/lib/_common/content-progress/content-progress.component.js +94 -0
  29. package/esm5/lib/_common/content-progress/content-progress.module.js +26 -0
  30. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +58 -8
  31. package/esm5/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +248 -0
  32. package/esm5/lib/_common/dialog-components/dialog-components.module.js +47 -0
  33. package/esm5/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +2 -4
  34. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.js +57 -0
  35. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.module.js +23 -0
  36. package/esm5/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +3 -3
  37. package/esm5/lib/_services/certificate.service.js +70 -0
  38. package/esm5/lib/_services/multilingual-translations.service.js +27 -24
  39. package/esm5/lib/_services/widget-content.service.js +1 -2
  40. package/esm5/lib/consumption.module.js +1 -1
  41. package/esm5/public-api.js +2 -1
  42. package/esm5/sunbird-cb-consumption.js +34 -26
  43. package/fesm2015/sunbird-cb-consumption.js +1074 -136
  44. package/fesm2015/sunbird-cb-consumption.js.map +1 -1
  45. package/fesm5/sunbird-cb-consumption.js +1210 -140
  46. package/fesm5/sunbird-cb-consumption.js.map +1 -1
  47. package/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.d.ts +28 -0
  48. package/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.d.ts +41 -0
  49. package/lib/_common/cards/cards.component.d.ts +5 -3
  50. package/lib/_common/content-progress/content-progress.component.d.ts +13 -0
  51. package/lib/_common/content-progress/content-progress.module.d.ts +2 -0
  52. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.d.ts +2 -0
  53. package/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.d.ts +22 -0
  54. package/lib/_common/dialog-components/dialog-components.module.d.ts +2 -0
  55. package/lib/_pipes/object-to-array/object-to-array.pipe.d.ts +4 -0
  56. package/lib/_pipes/object-to-array/object-to-array.pipe.module.d.ts +2 -0
  57. package/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts +1 -1
  58. package/lib/_services/certificate.service.d.ts +8 -0
  59. package/package.json +1 -1
  60. package/public-api.d.ts +1 -0
  61. package/sunbird-cb-consumption.d.ts +32 -24
  62. package/sunbird-cb-consumption.metadata.json +1 -1
@@ -0,0 +1,202 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
6
+ // import { WidgetUserService } from '../../../../_services/widget-user.service';
7
+ import { ConfigurationsService, NsContent } from '@sunbird-cb/utils-v2';
8
+ import { WidgetContentService } from '../../../../_services/widget-content.service';
9
+ var CardAssessmentComponent = /** @class */ (function () {
10
+ function CardAssessmentComponent(configSvc, contSvc) {
11
+ this.configSvc = configSvc;
12
+ this.contSvc = contSvc;
13
+ this.contentData = new EventEmitter();
14
+ this.isCardLoading = false;
15
+ this.stripData = [];
16
+ this.enrollList = [];
17
+ this.activeResource = [];
18
+ this.daysRemaining = 0;
19
+ this.daysPending = false;
20
+ }
21
+ /**
22
+ * @return {?}
23
+ */
24
+ CardAssessmentComponent.prototype.ngOnInit = /**
25
+ * @return {?}
26
+ */
27
+ function () {
28
+ /** @type {?} */
29
+ var instanceConfig = this.configSvc.instanceConfig;
30
+ if (instanceConfig) {
31
+ this.defaultThumbnail = instanceConfig.logos.defaultContent || '';
32
+ this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg';
33
+ }
34
+ else {
35
+ this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png';
36
+ this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg';
37
+ }
38
+ };
39
+ /**
40
+ * @param {?} startDate
41
+ * @return {?}
42
+ */
43
+ CardAssessmentComponent.prototype.updateStartDate = /**
44
+ * @param {?} startDate
45
+ * @return {?}
46
+ */
47
+ function (startDate) {
48
+ this.startDate = startDate;
49
+ this.startCountdown(this.startDate);
50
+ };
51
+ /**
52
+ * @param {?} date
53
+ * @return {?}
54
+ */
55
+ CardAssessmentComponent.prototype.startCountdown = /**
56
+ * @param {?} date
57
+ * @return {?}
58
+ */
59
+ function (date) {
60
+ var _this = this;
61
+ // Update the countdown immediately on start
62
+ this.updateCountdown(date);
63
+ // Update the countdown every second
64
+ this.intervalId = setInterval((/**
65
+ * @return {?}
66
+ */
67
+ function () {
68
+ _this.updateCountdown(date);
69
+ }), 1000);
70
+ };
71
+ // Method to update the countdown values
72
+ // Method to update the countdown values
73
+ /**
74
+ * @param {?} targetDate
75
+ * @return {?}
76
+ */
77
+ CardAssessmentComponent.prototype.updateCountdown =
78
+ // Method to update the countdown values
79
+ /**
80
+ * @param {?} targetDate
81
+ * @return {?}
82
+ */
83
+ function (targetDate) {
84
+ /** @type {?} */
85
+ var now = new Date().getTime();
86
+ // Current time in milliseconds
87
+ /** @type {?} */
88
+ var targetTime = new Date(targetDate).getTime();
89
+ /** @type {?} */
90
+ var distance = targetTime - now;
91
+ if (distance > 0) {
92
+ this.daysRemaining = Math.ceil(distance / (1000 * 60 * 60 * 24));
93
+ this.daysPending = true;
94
+ }
95
+ else {
96
+ this.daysRemaining = 0;
97
+ this.daysPending = false;
98
+ this.clearTimer();
99
+ }
100
+ };
101
+ // Method to clear the interval
102
+ // Method to clear the interval
103
+ /**
104
+ * @return {?}
105
+ */
106
+ CardAssessmentComponent.prototype.clearTimer =
107
+ // Method to clear the interval
108
+ /**
109
+ * @return {?}
110
+ */
111
+ function () {
112
+ clearInterval(this.intervalId);
113
+ };
114
+ /**
115
+ * @return {?}
116
+ */
117
+ CardAssessmentComponent.prototype.ngOnDestroy = /**
118
+ * @return {?}
119
+ */
120
+ function () {
121
+ this.clearTimer();
122
+ };
123
+ /**
124
+ * @param {?} contentData
125
+ * @return {?}
126
+ */
127
+ CardAssessmentComponent.prototype.getRedirectUrlData = /**
128
+ * @param {?} contentData
129
+ * @return {?}
130
+ */
131
+ function (contentData) {
132
+ // for telemetry
133
+ if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {
134
+ contentData['typeOfTelemetry'] = this.widgetData.context.pageSection;
135
+ }
136
+ this.contSvc.changeTelemetryData(contentData);
137
+ // for redirection
138
+ this.contentData.emit(contentData);
139
+ };
140
+ CardAssessmentComponent.decorators = [
141
+ { type: Component, args: [{
142
+ selector: 'sb-uic-card-assessment',
143
+ template: "<ng-container *ngIf=\"!isCardLoading\">\n<ng-container >\n\t<mat-card class=\"card-assessment card-scheduled-assessment card-users-container padding-remove cursor-pointer mr-4\">\n\t<a (click)=\"getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n\t\t<div class=\"display-contents\">\n\t\t\t<ng-container *ngIf=\"widgetData\">\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<div class=\"flex flex-col h-full\">\n\t\t\t\t\t\t<div class=\"flex flex-1 flex-row padding-s\">\n\t\t\t\t\t\t\t<div class=\"flex image-container\">\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"widgetData?.content?.posterImage\">\n\t\t\t\t\t\t\t\t\t<img mat-card-image class=\"margin-remove assess-img\" [src]=\"widgetData?.content?.posterImage | pipePublicURL\"\n\t\t\t\t\t\t\t\t\t\t[alt]=\"widgetData?.content?.name\">\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n\t\t\t\t\t\t\t\t\t<ng-template #defaultImg>\n\t\t\t\t\t\t\t\t\t\t<img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"card-wide-img ws-mat-primary-lite-background margin-remove assess-img\"\n\t\t\t\t\t\t\t\t\t\t\t[alt]=\"widgetData?.content?.name\" />\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"flex title-container flex-col\">\n\t\t\t\t\t\t\t\t<div class=\"flex title-text mat-subheading-1\">\n\t\t\t\t\t\t\t\t\t{{ widgetData?.content?.name }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"flex margin-remove margin-top-s font-normal mat-caption sub-title-text\">\n\t\t\t\t\t\t\t\t\t<div class=\"course_logo_box\">\n\t\t\t\t\t\t\t\t\t\t<img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\"\n\t\t\t\t\t\t\t\t\t\t\t[wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n\t\t\t\t\t\t\t\t\t\t\t[alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<span class=\"sub-title-text\">\n\t\t\t\t\t\t\t\t\t\t{{ (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n\t\t\t\t\t\t\t\t\t\twidgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"start-span\">Assessment starts in </span>\n\t\t\t\t\t\t<mat-card-footer class=\"assessment-card-footer padding-m\">\n\t\t\t\t\t\t\t<div class=\"flex flex-1 items-center justify-center col-row margin-top-m\">\n\t\t\t\t\t\t\t\t<div class=\"flex margin-right-m\">\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"daysPending\"> {{ startCountdown(widgetData?.content?.batch?.startDate) }}<div id=\"demo\"></div> </span>\n\t\t\t\t\t\t\t\t\t<span *ngIf=\"!daysPending\" class=\"start-btn\"> Start Assessment\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"flex\">\n\t\t\t\t\t\t\t\t\t<span class=\"time-span flex items-center justify-center\">{{widgetData?.content?.batch?.startDate | date: 'd MMM, y' }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</mat-card-footer>\n\t\t\t\t\t</div>\n\t\t\t\t</mat-card-content>\n\t\t\t</ng-container>\n\t\t</div>\n\t</a>\n</mat-card>\n</ng-container>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"isCardLoading\">\n\t<ng-container [ngTemplateOutlet]=\"skeltonLoader\"></ng-container>\n</ng-container>\n\n<ng-template #skeltonLoader>\n\n\t<mat-card class=\"card-assessment card-scheduled-assessment card-users-container padding-remove cursor-pointer mr-4\">\n\t\t<a>\n\t\t\t<div class=\"display-contents\">\n\t\t\t\t<ng-container>\n\t\t\t\t\t<mat-card-content>\n\t\t\t\t\t\t<div class=\"flex flex-col h-full\">\n\t\t\t\t\t\t\t<div class=\"flex flex-1 flex-row padding-s\">\n\t\t\t\t\t\t\t\t<div class=\"flex image-container\">\n\t\t\t\t\t\t\t\t\t<ng-container>\n\t\t\t\t\t\t\t\t\t\t<sb-uic-skeleton-loader [width]=\"'300px'\" [height]=\"'155px'\"\n\t\t\t\t\t\t\t\t\t\t\t></sb-uic-skeleton-loader>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"flex title-container flex-col\">\n\t\t\t\t\t\t\t\t\t<div class=\"flex\">\n\t\t\t\t\t\t\t\t\t\t<sb-uic-skeleton-loader [width]=\"'100px'\" [height]=\"'16px'\"\n\t\t\t\t\t\t\t\t\t\t\t[bindingClass]=\"'flex rounded br-8'\"></sb-uic-skeleton-loader>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"flex margin-remove margin-top-l font-normal\">\n\t\t\t\t\t\t\t\t\t\t<sb-uic-skeleton-loader [width]=\"'100px'\" [height]=\"'16px'\"\n\t\t\t\t\t\t\t\t\t\t\t[bindingClass]=\"'flex rounded br-8'\"></sb-uic-skeleton-loader>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<!-- <span class=\"text-center\"><sb-uic-skeleton-loader [width]=\"'90px'\" [height]=\"'16px'\"\n\t\t\t\t\t\t\t\t\t[bindingClass]=\"'flex rounded br-8'\"></sb-uic-skeleton-loader> </span> -->\n\t\t\t\t\t\t\t<mat-card-footer\n\t\t\t\t\t\t\t\tclass=\"assessment-card-footer col-row padding-l\">\n\t\t\t\t\t\t\t\t<div class=\"flex flex-1 items-center justify-center col-row margin-top-m\">\n\t\t\t\t\t\t\t\t<div class=\"flex margin-right-m\">\n\t\t\t\t\t\t\t\t\t<sb-uic-skeleton-loader [width]=\"'100px'\" [height]=\"'16px'\"\n\t\t\t\t\t\t\t\t\t\t[bindingClass]=\"'flex rounded br-8'\"></sb-uic-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"flex\">\n\t\t\t\t\t\t\t\t\t<sb-uic-skeleton-loader [width]=\"'100px'\" [height]=\"'16px'\"\n\t\t\t\t\t\t\t\t\t\t[bindingClass]=\"'flex rounded br-8'\"></sb-uic-skeleton-loader>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</mat-card-footer>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</mat-card-content>\n\t\t\t\t</ng-container>\n\t\t\t</div>\n\t\t</a>\n\t</mat-card>\n</ng-template>",
144
+ styles: [".card-assessment{width:100%;min-height:190px;box-sizing:border-box;min-width:335px;margin-top:16px}.image-container{width:155px;height:120px;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08)}.title-container{margin-left:12px}.title-text{word-break:break-word;white-space:initial;margin:8px 0;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-height:48px;font:600 14px/24px Montserrat}.sub-title-text{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.course_logo_box{width:38px;height:38px;background:#fff;border-radius:8px;box-sizing:border-box;margin-right:4px;box-shadow:0 2px 1px -1px rgb(0 0 0 / 20%),0 1px 1px 0 rgb(0 0 0 / 14%),0 1px 3px 0 rgb(0 0 0 / 12%)}.course_logo_box img.source-icon{height:28px;width:28px;padding:5px;display:inline-block}.mat-card-footer{margin:0!important}.time-span{padding:2px 8px;color:#fff;border-radius:4px;text-align:center;font-size:12px;background-color:green}span.start-span{border-radius:50px;border:2px solid rgba(0,0,0,.08);font-size:12px;text-align:center;position:absolute;bottom:0;width:140px;left:50%;margin-left:-70px;background-color:#fff;margin-bottom:62px;margin-right:8px}.assessment-card-footer{background:rgba(239,149,30,.16)!important;text-align:center;box-sizing:border-box}.start-btn{background:#1b4ca1!important;color:#fff;font-size:14px;font-weight:600;border-radius:25px;text-align:center;padding:4px 12px}.dots-container{display:none}"]
145
+ }] }
146
+ ];
147
+ /** @nocollapse */
148
+ CardAssessmentComponent.ctorParameters = function () { return [
149
+ { type: ConfigurationsService },
150
+ { type: WidgetContentService }
151
+ ]; };
152
+ CardAssessmentComponent.propDecorators = {
153
+ widgetData: [{ type: Input }],
154
+ enrollmentMapData: [{ type: Input }],
155
+ contentData: [{ type: Output }],
156
+ isCardLoading: [{ type: Input }]
157
+ };
158
+ return CardAssessmentComponent;
159
+ }());
160
+ export { CardAssessmentComponent };
161
+ if (false) {
162
+ /** @type {?} */
163
+ CardAssessmentComponent.prototype.widgetData;
164
+ /** @type {?} */
165
+ CardAssessmentComponent.prototype.enrollmentMapData;
166
+ /** @type {?} */
167
+ CardAssessmentComponent.prototype.contentData;
168
+ /** @type {?} */
169
+ CardAssessmentComponent.prototype.isCardLoading;
170
+ /** @type {?} */
171
+ CardAssessmentComponent.prototype.stripData;
172
+ /** @type {?} */
173
+ CardAssessmentComponent.prototype.enrollList;
174
+ /** @type {?} */
175
+ CardAssessmentComponent.prototype.activeResource;
176
+ /** @type {?} */
177
+ CardAssessmentComponent.prototype.defaultThumbnail;
178
+ /** @type {?} */
179
+ CardAssessmentComponent.prototype.defaultSLogo;
180
+ /** @type {?} */
181
+ CardAssessmentComponent.prototype.daysRemaining;
182
+ /** @type {?} */
183
+ CardAssessmentComponent.prototype.startDate;
184
+ /** @type {?} */
185
+ CardAssessmentComponent.prototype.daysPending;
186
+ /**
187
+ * @type {?}
188
+ * @private
189
+ */
190
+ CardAssessmentComponent.prototype.intervalId;
191
+ /**
192
+ * @type {?}
193
+ * @private
194
+ */
195
+ CardAssessmentComponent.prototype.configSvc;
196
+ /**
197
+ * @type {?}
198
+ * @private
199
+ */
200
+ CardAssessmentComponent.prototype.contSvc;
201
+ }
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1hc3Nlc3NtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uLyIsInNvdXJjZXMiOlsibGliL19jb21tb24vY2FyZHMvY2FyZC1hc3Nlc3NtZW50L2NhcmQtYXNzZXNzbWVudC9jYXJkLWFzc2Vzc21lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEY7SUF1QkUsaUNBQW9CLFNBQWdDLEVBQVUsT0FBNkI7UUFBdkUsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQVhqRixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7UUFDdEMsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFDdkMsY0FBUyxHQUFRLEVBQUUsQ0FBQTtRQUNuQixlQUFVLEdBQVEsRUFBRSxDQUFBO1FBQ3BCLG1CQUFjLEdBQU8sRUFBRSxDQUFBO1FBR3ZCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsS0FBSyxDQUFBO0lBRXFFLENBQUM7Ozs7SUFFakcsMENBQVE7OztJQUFSOztZQUNRLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWM7UUFDcEQsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQTtZQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksNERBQTRE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O0lBQzFCLDRDQUFhOztJQUNiLDhDQUEyQjs7Ozs7SUFDM0IsNkNBQXdCOzs7OztJQUNaLDRDQUF3Qzs7Ozs7SUFBRSwwQ0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBXaWRnZXRVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgTnNDb250ZW50IH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInO1xuaW1wb3J0IHsgV2lkZ2V0Q29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NiLXVpYy1jYXJkLWFzc2Vzc21lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1hc3Nlc3NtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1hc3Nlc3NtZW50LmNvbXBvbmVudC5jc3MnXVxufSlcblxuLy8gQERpcmVjdGl2ZSh7XG4vLyAgIHNlbGVjdG9yOiAnW2NhbGxGdW5jdGlvbk9uSW5pdF0nXG4vLyB9KVxuZXhwb3J0IGNsYXNzIENhcmRBc3Nlc3NtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgd2lkZ2V0RGF0YSE6IE5zQ29udGVudC5JQ29udGVudDtcbiAgQElucHV0KCkgZW5yb2xsbWVudE1hcERhdGE6IGFueVxuICBAT3V0cHV0KCkgY29udGVudERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBASW5wdXQoKSBpc0NhcmRMb2FkaW5nOiBib29sZWFuID0gZmFsc2VcbiAgc3RyaXBEYXRhOiBhbnkgPSBbXVxuICBlbnJvbGxMaXN0OiBhbnkgPSBbXVxuICBhY3RpdmVSZXNvdXJjZTogYW55ID1bXVxuICBkZWZhdWx0VGh1bWJuYWlsOiBhbnlcbiAgZGVmYXVsdFNMb2dvOiBhbnlcbiAgZGF5c1JlbWFpbmluZzogbnVtYmVyID0gMDtcbiAgc3RhcnREYXRlOmFueVxuICBkYXlzUGVuZGluZzpib29sZWFuID0gZmFsc2VcbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsIHByaXZhdGUgY29udFN2YzogV2lkZ2V0Q29udGVudFNlcnZpY2UsKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZyA9IHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnXG4gICAgaWYgKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRUaHVtYm5haWwgPSBpbnN0YW5jZUNvbmZpZy5sb2dvcy5kZWZhdWx0Q29udGVudCB8fCAnJ1xuICAgICAgdGhpcy5kZWZhdWx0U0xvZ28gPSBpbnN0YW5jZUNvbmZpZy5sb2dvcy5kZWZhdWx0U291cmNlTG9nbyB8fCAnL2Fzc2V0cy9pbnN0YW5jZXMvZWFnbGUvYXBwX2xvZ29zL0thcm1heW9naUJoYXJhdF9Mb2dvLnN2ZydcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWZhdWx0VGh1bWJuYWlsID0gJy9hc3NldHMvaW5zdGFuY2VzL2VhZ2xlL2FwcF9sb2dvcy9kZWZhdWx0LnBuZydcbiAgICAgIHRoaXMuZGVmYXVsdFNMb2dvID0gICcvYXNzZXRzL2luc3RhbmNlcy9lYWdsZS9hcHBfbG9nb3MvS2FybWF5b2dpQmhhcmF0X0xvZ28uc3ZnJ1xuICAgIH1cblxuICB9XG5cbiAgdXBkYXRlU3RhcnREYXRlKHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCk6dm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGUgPSBzdGFydERhdGU7ICAgICBcbiAgICB0aGlzLnN0YXJ0Q291bnRkb3duKHRoaXMuc3RhcnREYXRlKVxuICB9XG5cbiAgIHN0YXJ0Q291bnRkb3duKGRhdGU6YW55KTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIHRoZSBjb3VudGRvd24gaW1tZWRpYXRlbHkgb24gc3RhcnRcbiAgICB0aGlzLnVwZGF0ZUNvdW50ZG93bihkYXRlKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgY291bnRkb3duIGV2ZXJ5IHNlY29uZFxuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ291bnRkb3duKGRhdGUpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHVwZGF0ZSB0aGUgY291bnRkb3duIHZhbHVlc1xuICAgdXBkYXRlQ291bnRkb3duKHRhcmdldERhdGU6YW55KTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7IC8vIEN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCB0YXJnZXRUaW1lID0gbmV3IERhdGUodGFyZ2V0RGF0ZSkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0VGltZSAtIG5vdzsgLy8gRGlzdGFuY2UgaW4gbWlsbGlzZWNvbmRzXG4gICAgaWYgKGRpc3RhbmNlID4gMCkge1xuICAgICAgdGhpcy5kYXlzUmVtYWluaW5nID0gTWF0aC5jZWlsKGRpc3RhbmNlIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgIHRoaXMuZGF5c1BlbmRpbmcgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF5c1JlbWFpbmluZyA9IDA7XG4gICAgICB0aGlzLmRheXNQZW5kaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byBjbGVhciB0aGUgaW50ZXJ2YWxcbiAgY2xlYXJUaW1lcigpOiB2b2lkIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgfVxuXG4gIGdldFJlZGlyZWN0VXJsRGF0YShjb250ZW50RGF0YTogYW55KXtcbiAgICAvLyBmb3IgdGVsZW1ldHJ5XG4gICAgaWYgKHRoaXMud2lkZ2V0RGF0YSAmJiB0aGlzLndpZGdldERhdGEuY29udGV4dCAmJiB0aGlzLndpZGdldERhdGEuY29udGV4dC5wYWdlU2VjdGlvbikge1xuICAgICAgY29udGVudERhdGFbJ3R5cGVPZlRlbGVtZXRyeSddID0gdGhpcy53aWRnZXREYXRhLmNvbnRleHQucGFnZVNlY3Rpb25cbiAgICB9XG4gICAgdGhpcy5jb250U3ZjLmNoYW5nZVRlbGVtZXRyeURhdGEoY29udGVudERhdGEpXG4gICAgLy8gZm9yIHJlZGlyZWN0aW9uXG4gICAgdGhpcy5jb250ZW50RGF0YS5lbWl0KGNvbnRlbnREYXRhKVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,278 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
6
+ import { NsCardContent } from '../../../_models/card-content.model';
7
+ import { MatDialog, MatSnackBar } from '@angular/material';
8
+ import { TranslateService } from '@ngx-translate/core';
9
+ import { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';
10
+ import { WidgetContentService } from '../../../_services/widget-content.service';
11
+ import { ConfigurationsService, EventService, WsEvents } from '@sunbird-cb/utils-v2';
12
+ import * as _ from "lodash";
13
+ import { CertificateService } from '../../../_services/certificate.service';
14
+ import { CertificateDialogComponent } from '../../dialog-components/certificate-dialog/certificate-dialog.component';
15
+ var CardProgressPortraitLibComponent = /** @class */ (function () {
16
+ function CardProgressPortraitLibComponent(snackBar, translate, events, langtranslations, configSvc, contSvc, certificateService, dialog) {
17
+ var _this = this;
18
+ this.snackBar = snackBar;
19
+ this.translate = translate;
20
+ this.events = events;
21
+ this.langtranslations = langtranslations;
22
+ this.configSvc = configSvc;
23
+ this.contSvc = contSvc;
24
+ this.certificateService = certificateService;
25
+ this.dialog = dialog;
26
+ this.isCardLoading = false;
27
+ this.contentData = new EventEmitter();
28
+ this.isCardFlipped = false;
29
+ this.acbpConstants = NsCardContent.ACBPConst;
30
+ this.showFlip = false;
31
+ this.widgetType = 'df';
32
+ this.widgetSubType = 'sdf';
33
+ this.downloadCertificateLoading = false;
34
+ this.langtranslations.languageSelectedObservable.subscribe((/**
35
+ * @return {?}
36
+ */
37
+ function () {
38
+ if (localStorage.getItem('websiteLanguage')) {
39
+ _this.translate.setDefaultLang('en');
40
+ /** @type {?} */
41
+ var lang = (/** @type {?} */ (localStorage.getItem('websiteLanguage')));
42
+ _this.translate.use(lang);
43
+ }
44
+ }));
45
+ }
46
+ /**
47
+ * @return {?}
48
+ */
49
+ CardProgressPortraitLibComponent.prototype.ngOnInit = /**
50
+ * @return {?}
51
+ */
52
+ function () {
53
+ /** @type {?} */
54
+ var instanceConfig = this.configSvc.instanceConfig;
55
+ if (instanceConfig) {
56
+ this.defaultThumbnail = instanceConfig.logos.defaultContent || '';
57
+ this.sourceLogos = instanceConfig.sources;
58
+ this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '';
59
+ }
60
+ else {
61
+ this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png';
62
+ this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg';
63
+ }
64
+ };
65
+ /**
66
+ * @return {?}
67
+ */
68
+ CardProgressPortraitLibComponent.prototype.showSnackbar = /**
69
+ * @return {?}
70
+ */
71
+ function () {
72
+ if (this.showIntranetContent) {
73
+ this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 });
74
+ }
75
+ else if (!this.isLiveOrMarkForDeletion) {
76
+ this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 });
77
+ }
78
+ };
79
+ /**
80
+ * @param {?} contentData
81
+ * @return {?}
82
+ */
83
+ CardProgressPortraitLibComponent.prototype.getRedirectUrlData = /**
84
+ * @param {?} contentData
85
+ * @return {?}
86
+ */
87
+ function (contentData) {
88
+ // for telemetry
89
+ if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {
90
+ contentData['typeOfTelemetry'] = this.widgetData.context.pageSection;
91
+ }
92
+ this.contSvc.changeTelemetryData(contentData);
93
+ // for redirection
94
+ this.contentData.emit(contentData);
95
+ };
96
+ /**
97
+ * @param {?} label
98
+ * @param {?} type
99
+ * @param {?=} subtype
100
+ * @return {?}
101
+ */
102
+ CardProgressPortraitLibComponent.prototype.translateLabels = /**
103
+ * @param {?} label
104
+ * @param {?} type
105
+ * @param {?=} subtype
106
+ * @return {?}
107
+ */
108
+ function (label, type, subtype) {
109
+ return this.langtranslations.translateLabelWithoutspace(label, type, subtype);
110
+ };
111
+ /**
112
+ * @return {?}
113
+ */
114
+ CardProgressPortraitLibComponent.prototype.raiseTelemetry = /**
115
+ * @return {?}
116
+ */
117
+ function () {
118
+ this.events.raiseInteractTelemetry({
119
+ type: 'click',
120
+ subType: this.widgetType + "-" + this.widgetSubType,
121
+ id: _.camelCase(this.widgetData.content.primaryCategory) + "-card",
122
+ }, {
123
+ id: this.widgetData.content.identifier,
124
+ type: this.widgetData.content.primaryCategory,
125
+ //context: this.widgetData.context,
126
+ rollup: {},
127
+ ver: "" + this.widgetData.content.version + '',
128
+ }, {
129
+ pageIdExt: _.camelCase(this.widgetData.content.primaryCategory) + "-card",
130
+ module: _.camelCase(this.widgetData.content.primaryCategory),
131
+ });
132
+ };
133
+ /**
134
+ * @param {?} certificateData
135
+ * @return {?}
136
+ */
137
+ CardProgressPortraitLibComponent.prototype.downloadCertificate = /**
138
+ * @param {?} certificateData
139
+ * @return {?}
140
+ */
141
+ function (certificateData) {
142
+ var _this = this;
143
+ this.events.raiseInteractTelemetry({
144
+ type: WsEvents.EnumInteractTypes.CLICK,
145
+ id: 'view-certificate',
146
+ subType: WsEvents.EnumInteractSubTypes.CERTIFICATE,
147
+ }, {
148
+ id: certificateData.issuedCertificates[0].identifier,
149
+ // id of the certificate
150
+ type: WsEvents.EnumInteractSubTypes.CERTIFICATE,
151
+ });
152
+ if (certificateData.issuedCertificates.length > 0) {
153
+ this.downloadCertificateLoading = true;
154
+ /** @type {?} */
155
+ var certData_1 = certificateData.issuedCertificates[0];
156
+ this.certificateService.downloadCertificate_v2(certData_1.identifier).subscribe((/**
157
+ * @param {?} res
158
+ * @return {?}
159
+ */
160
+ function (res) {
161
+ _this.downloadCertificateLoading = false;
162
+ /** @type {?} */
163
+ var cet = res.result.printUri;
164
+ _this.dialog.open(CertificateDialogComponent, {
165
+ width: '1300px',
166
+ data: { cet: cet, certId: certData_1.identifier },
167
+ });
168
+ }));
169
+ }
170
+ else {
171
+ this.downloadCertificateLoading = false;
172
+ }
173
+ };
174
+ CardProgressPortraitLibComponent.decorators = [
175
+ { type: Component, args: [{
176
+ selector: 'sb-uic-card-progress-portrait-lib',
177
+ template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer\" [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\" (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\" >\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\">\n <div class=\"flex flex-end flex-middle course_port\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <sb-uic-display-content-type i18n-title title=\"Content Type\" *ngIf=\"widgetData?.content?.primaryCategory\"\n class=\"ws-mat-black60-text font-normal mat-caption \" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </div>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\"\n [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier]\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\"\n [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\"\n class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\" [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{ (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ? widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\" >\n <div class=\"progress-block\" >\n <div class=\"completed-time\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\" *ngIf=\"widgetData?.content?.identifier\"\n [contentId]=\"widgetData?.content?.identifier\" [progress]=\"widgetData?.content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\" [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\" \n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage === 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\" [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\" (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content);$event.stopPropagation()\" \n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\" src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date: 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date: 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\" [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\" [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\" [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\" [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\" [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\" [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\" [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>",
178
+ styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:318px;min-height:154px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:rgba(0,0,0,.87);font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-all;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #ef951e;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:rgba(0,0,0,.6)!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:rgba(0,0,0,.87);font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400;padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #ef951e;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}"]
179
+ }] }
180
+ ];
181
+ /** @nocollapse */
182
+ CardProgressPortraitLibComponent.ctorParameters = function () { return [
183
+ { type: MatSnackBar },
184
+ { type: TranslateService },
185
+ { type: EventService },
186
+ { type: MultilingualTranslationsService },
187
+ { type: ConfigurationsService },
188
+ { type: WidgetContentService },
189
+ { type: CertificateService },
190
+ { type: MatDialog }
191
+ ]; };
192
+ CardProgressPortraitLibComponent.propDecorators = {
193
+ widgetData: [{ type: Input }],
194
+ isLiveOrMarkForDeletion: [{ type: Input }],
195
+ showIntranetContent: [{ type: Input }],
196
+ isIntranetAllowedSettings: [{ type: Input }],
197
+ isCardLoading: [{ type: Input }],
198
+ contentData: [{ type: Output }],
199
+ cbPlanMapData: [{ type: Input }]
200
+ };
201
+ return CardProgressPortraitLibComponent;
202
+ }());
203
+ export { CardProgressPortraitLibComponent };
204
+ if (false) {
205
+ /** @type {?} */
206
+ CardProgressPortraitLibComponent.prototype.widgetData;
207
+ /** @type {?} */
208
+ CardProgressPortraitLibComponent.prototype.isLiveOrMarkForDeletion;
209
+ /** @type {?} */
210
+ CardProgressPortraitLibComponent.prototype.showIntranetContent;
211
+ /** @type {?} */
212
+ CardProgressPortraitLibComponent.prototype.isIntranetAllowedSettings;
213
+ /** @type {?} */
214
+ CardProgressPortraitLibComponent.prototype.isCardLoading;
215
+ /** @type {?} */
216
+ CardProgressPortraitLibComponent.prototype.contentData;
217
+ /** @type {?} */
218
+ CardProgressPortraitLibComponent.prototype.cbPlanMapData;
219
+ /** @type {?} */
220
+ CardProgressPortraitLibComponent.prototype.isCardFlipped;
221
+ /** @type {?} */
222
+ CardProgressPortraitLibComponent.prototype.acbpConstants;
223
+ /** @type {?} */
224
+ CardProgressPortraitLibComponent.prototype.defaultThumbnail;
225
+ /** @type {?} */
226
+ CardProgressPortraitLibComponent.prototype.sourceLogos;
227
+ /** @type {?} */
228
+ CardProgressPortraitLibComponent.prototype.defaultSLogo;
229
+ /** @type {?} */
230
+ CardProgressPortraitLibComponent.prototype.showFlip;
231
+ /** @type {?} */
232
+ CardProgressPortraitLibComponent.prototype.widgetType;
233
+ /** @type {?} */
234
+ CardProgressPortraitLibComponent.prototype.widgetSubType;
235
+ /** @type {?} */
236
+ CardProgressPortraitLibComponent.prototype.downloadCertificateLoading;
237
+ /**
238
+ * @type {?}
239
+ * @private
240
+ */
241
+ CardProgressPortraitLibComponent.prototype.snackBar;
242
+ /**
243
+ * @type {?}
244
+ * @private
245
+ */
246
+ CardProgressPortraitLibComponent.prototype.translate;
247
+ /**
248
+ * @type {?}
249
+ * @private
250
+ */
251
+ CardProgressPortraitLibComponent.prototype.events;
252
+ /**
253
+ * @type {?}
254
+ * @private
255
+ */
256
+ CardProgressPortraitLibComponent.prototype.langtranslations;
257
+ /**
258
+ * @type {?}
259
+ * @private
260
+ */
261
+ CardProgressPortraitLibComponent.prototype.configSvc;
262
+ /**
263
+ * @type {?}
264
+ * @private
265
+ */
266
+ CardProgressPortraitLibComponent.prototype.contSvc;
267
+ /**
268
+ * @type {?}
269
+ * @private
270
+ */
271
+ CardProgressPortraitLibComponent.prototype.certificateService;
272
+ /**
273
+ * @type {?}
274
+ * @private
275
+ */
276
+ CardProgressPortraitLibComponent.prototype.dialog;
277
+ }
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1wcm9ncmVzcy1wb3J0cmFpdC1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvY29uc3VtcHRpb24vIiwic291cmNlcyI6WyJsaWIvX2NvbW1vbi9jYXJkcy9jYXJkLXByb2dyZXNzLXBvcnRyYWl0LWxpYi9jYXJkLXByb2dyZXNzLXBvcnRyYWl0LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRixPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUVySDtJQXdCRSwwQ0FDVSxRQUFxQixFQUNyQixTQUEyQixFQUMzQixNQUFvQixFQUNwQixnQkFBaUQsRUFDakQsU0FBZ0MsRUFDaEMsT0FBNkIsRUFDN0Isa0JBQXNDLEVBQ3RDLE1BQWlCO1FBUjNCLGlCQWlCRztRQWhCTyxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtC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TixLQUFLOztJQTZHUix1Q0FBQztDQUFBLEFBMUhELElBMEhDO1NBckhZLGdDQUFnQzs7O0lBRTNDLHNEQUEwQzs7SUFDMUMsbUVBQXFDOztJQUNyQywrREFBaUM7O0lBQ2pDLHFFQUF1Qzs7SUFDdkMseURBQXVDOztJQUN2Qyx1REFBK0M7O0lBQy9DLHlEQUE0Qjs7SUFDNUIseURBQTZCOztJQUM3Qix5REFBdUM7O0lBQ3ZDLDREQUFxQjs7SUFDckIsdURBQWdCOztJQUNoQix3REFBaUI7O0lBQ2pCLG9EQUFnQjs7SUFDaEIsc0RBQXNCOztJQUN0Qix5REFBeUI7O0lBQ3pCLHNFQUEyQzs7Ozs7SUFHekMsb0RBQTZCOzs7OztJQUM3QixxREFBbUM7Ozs7O0lBQ25DLGtEQUE0Qjs7Ozs7SUFDNUIsNERBQXlEOzs7OztJQUN6RCxxREFBd0M7Ozs7O0lBQ3hDLG1EQUFxQzs7Ozs7SUFDckMsOERBQThDOzs7OztJQUM5QyxrREFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOc0NhcmRDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9jYXJkLWNvbnRlbnQubW9kZWwnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9tdWx0aWxpbmd1YWwtdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0Q29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgV3NFdmVudHMgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Mic7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IENlcnRpZmljYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9jZXJ0aWZpY2F0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9nLWNvbXBvbmVudHMvY2VydGlmaWNhdGUtZGlhbG9nL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYi11aWMtY2FyZC1wcm9ncmVzcy1wb3J0cmFpdC1saWInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1wcm9ncmVzcy1wb3J0cmFpdC1saWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJkLXByb2dyZXNzLXBvcnRyYWl0LWxpYi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhcmRQcm9ncmVzc1BvcnRyYWl0TGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSB3aWRnZXREYXRhITogTnNDYXJkQ29udGVudC5JQ2FyZDtcbiAgQElucHV0KCkgaXNMaXZlT3JNYXJrRm9yRGVsZXRpb246IGFueVxuICBASW5wdXQoKSBzaG93SW50cmFuZXRDb250ZW50OiBhbnlcbiAgQElucHV0KCkgaXNJbnRyYW5ldEFsbG93ZWRTZXR0aW5nczogYW55XG4gIEBJbnB1dCgpIGlzQ2FyZExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZVxuICBAT3V0cHV0KCkgY29udGVudERhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBASW5wdXQoKSAgY2JQbGFuTWFwRGF0YTogYW55XG4gIGlzQ2FyZEZsaXBwZWQ6Ym9vbGVhbiA9IGZhbHNlXG4gIGFjYnBDb25zdGFudHMgPSBOc0NhcmRDb250ZW50LkFDQlBDb25zdFxuICBkZWZhdWx0VGh1bWJuYWlsOiBhbnlcbiAgc291cmNlTG9nb3M6IGFueVxuICBkZWZhdWx0U0xvZ286IGFueVxuICBzaG93RmxpcCA9IGZhbHNlXG4gIHdpZGdldFR5cGU6IGFueSA9ICdkZidcbiAgd2lkZ2V0U3ViVHlwZTogYW55ID0nc2RmJ1xuICBkb3dubG9hZENlcnRpZmljYXRlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd0cmFuc2xhdGlvbnM6IE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2VydGlmaWNhdGVTZXJ2aWNlOiBDZXJ0aWZpY2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICApIHsgXG4gICAgICB0aGlzLmxhbmd0cmFuc2xhdGlvbnMubGFuZ3VhZ2VTZWxlY3RlZE9ic2VydmFibGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKCdlbicpXG4gICAgICAgICAgY29uc3QgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSFcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgaW5zdGFuY2VDb25maWcgPSB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZ1xuICAgIGlmIChpbnN0YW5jZUNvbmZpZykge1xuICAgICAgdGhpcy5kZWZhdWx0VGh1bWJuYWlsID0gaW5zdGFuY2VDb25maWcubG9nb3MuZGVmYXVsdENvbnRlbnQgfHwgJydcbiAgICAgIHRoaXMuc291cmNlTG9nb3MgPSBpbnN0YW5jZUNvbmZpZy5zb3VyY2VzXG4gICAgICB0aGlzLmRlZmF1bHRTTG9nbyA9IGluc3RhbmNlQ29uZmlnLmxvZ29zLmRlZmF1bHRTb3VyY2VMb2dvIHx8ICcnXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFRodW1ibmFpbCA9ICcvYXNzZXRzL2luc3RhbmNlcy9lYWdsZS9hcHBfbG9nb3MvZGVmYXVsdC5wbmcnXG4gICAgICB0aGlzLmRlZmF1bHRTTG9nbyA9ICAnL2Fzc2V0cy9pbnN0YW5jZXMvZWFnbGUvYXBwX2xvZ29zL0thcm1heW9naUJoYXJhdF9Mb2dvLnN2ZydcbiAgICB9XG4gIH1cblxuICBzaG93U25hY2tiYXIoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0ludHJhbmV0Q29udGVudCkge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdDb250ZW50IGlzIG9ubHkgYXZhaWxhYmxlIGluIGludHJhbmV0JywgJ1gnLCB7IGR1cmF0aW9uOiAyMDAwIH0pXG4gICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmVPck1hcmtGb3JEZWxldGlvbikge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdDb250ZW50IG1heSBiZSBleHBpcmVkIG9yIGRlbGV0ZWQnLCAnWCcsIHsgZHVyYXRpb246IDIwMDAgfSlcbiAgICB9XG4gIH1cbiAgZ2V0UmVkaXJlY3RVcmxEYXRhKGNvbnRlbnREYXRhOiBhbnkpe1xuICAgIC8vIGZvciB0ZWxlbWV0cnlcbiAgICBpZiAodGhpcy53aWRnZXREYXRhICYmIHRoaXMud2lkZ2V0RGF0YS5jb250ZXh0ICYmIHRoaXMud2lkZ2V0RGF0YS5jb250ZXh0LnBhZ2VTZWN0aW9uKSB7XG4gICAgICBjb250ZW50RGF0YVsndHlwZU9mVGVsZW1ldHJ5J10gPSB0aGlzLndpZGdldERhdGEuY29udGV4dC5wYWdlU2VjdGlvblxuICAgIH1cbiAgICB0aGlzLmNvbnRTdmMuY2hhbmdlVGVsZW1ldHJ5RGF0YShjb250ZW50RGF0YSlcbiAgICAvLyBmb3IgcmVkaXJlY3Rpb25cbiAgICB0aGlzLmNvbnRlbnREYXRhLmVtaXQoY29udGVudERhdGEpXG4gIH1cblxuICB0cmFuc2xhdGVMYWJlbHMobGFiZWw6IHN0cmluZywgdHlwZTogYW55LCBzdWJ0eXBlPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3RyYW5zbGF0aW9ucy50cmFuc2xhdGVMYWJlbFdpdGhvdXRzcGFjZShsYWJlbCwgdHlwZSwgc3VidHlwZSlcbiAgfVxuICByYWlzZVRlbGVtZXRyeSgpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiAnY2xpY2snLFxuICAgICAgICBzdWJUeXBlOiBgJHt0aGlzLndpZGdldFR5cGV9LSR7dGhpcy53aWRnZXRTdWJUeXBlfWAsXG4gICAgICAgIGlkOiBgJHtfLmNhbWVsQ2FzZSh0aGlzLndpZGdldERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkpfS1jYXJkYCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0aGlzLndpZGdldERhdGEuY29udGVudC5pZGVudGlmaWVyLFxuICAgICAgICB0eXBlOiB0aGlzLndpZGdldERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgIC8vY29udGV4dDogdGhpcy53aWRnZXREYXRhLmNvbnRleHQsXG4gICAgICAgIHJvbGx1cDoge30sXG4gICAgICAgIHZlcjogYCR7dGhpcy53aWRnZXREYXRhLmNvbnRlbnQudmVyc2lvbn0keycnfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKHRoaXMud2lkZ2V0RGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSl9LWNhcmRgLFxuICAgICAgICBtb2R1bGU6IF8uY2FtZWxDYXNlKHRoaXMud2lkZ2V0RGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSksXG4gICAgICB9KVxuICB9XG5cbiAgZG93bmxvYWRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZURhdGE6IGFueSkge1xuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxuICAgICAgICBpZDogJ3ZpZXctY2VydGlmaWNhdGUnLFxuICAgICAgICBzdWJUeXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RTdWJUeXBlcy5DRVJUSUZJQ0FURSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBjZXJ0aWZpY2F0ZURhdGEuaXNzdWVkQ2VydGlmaWNhdGVzWzBdLmlkZW50aWZpZXIsICAgLy8gaWQgb2YgdGhlIGNlcnRpZmljYXRlXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFN1YlR5cGVzLkNFUlRJRklDQVRFLFxuICAgICAgfSlcbiAgICBpZihjZXJ0aWZpY2F0ZURhdGEuaXNzdWVkQ2VydGlmaWNhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmcgPSB0cnVlXG4gICAgICBsZXQgY2VydERhdGE6IGFueSA9IGNlcnRpZmljYXRlRGF0YS5pc3N1ZWRDZXJ0aWZpY2F0ZXNbMF1cbiAgICAgIHRoaXMuY2VydGlmaWNhdGVTZXJ2aWNlLmRvd25sb2FkQ2VydGlmaWNhdGVfdjIoY2VydERhdGEuaWRlbnRpZmllcikuc3Vic2NyaWJlKChyZXM6IGFueSk9PntcbiAgICAgICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlTG9hZGluZyA9IGZhbHNlXG4gICAgICAgIGNvbnN0IGNldCA9IHJlcy5yZXN1bHQucHJpbnRVcmlcbiAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIHdpZHRoOiAnMTMwMHB4JyxcbiAgICAgICAgICBkYXRhOiB7IGNldCwgY2VydElkOiBjZXJ0RGF0YS5pZGVudGlmaWVyIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxufVxuIl19