@smarterplan/ngx-smarterplan-core 1.0.39 → 1.0.40

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 (141) hide show
  1. package/esm2020/lib/components/csv-export/csv-export.component.mjs +58 -58
  2. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  3. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +79 -79
  4. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +115 -115
  5. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +247 -247
  6. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +80 -80
  7. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +38 -38
  8. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  9. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  10. package/esm2020/lib/config.mjs +4 -4
  11. package/esm2020/lib/helpers.service.mjs +470 -470
  12. package/esm2020/lib/mattertagData.mjs +157 -157
  13. package/esm2020/lib/ngx-smarterplan-core.module.mjs +119 -119
  14. package/esm2020/lib/ngx-smarterplan-core.service.mjs +13 -13
  15. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +65 -65
  16. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +25 -25
  17. package/esm2020/lib/pipes/safe-url.pipe.mjs +19 -19
  18. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +103 -103
  19. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  20. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  21. package/esm2020/lib/services/baseVisibility.service.mjs +17 -17
  22. package/esm2020/lib/services/content.service.mjs +135 -135
  23. package/esm2020/lib/services/filter.service.mjs +560 -560
  24. package/esm2020/lib/services/intervention.service.mjs +236 -236
  25. package/esm2020/lib/services/locale.service.mjs +45 -45
  26. package/esm2020/lib/services/matterport-import.service.mjs +351 -351
  27. package/esm2020/lib/services/matterport.service.mjs +1093 -1093
  28. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  29. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  30. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  31. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  32. package/esm2020/lib/services/models/domain.service.mjs +77 -77
  33. package/esm2020/lib/services/models/equipment.service.mjs +651 -651
  34. package/esm2020/lib/services/models/event.service.mjs +128 -128
  35. package/esm2020/lib/services/models/feature.service.mjs +362 -362
  36. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  37. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  38. package/esm2020/lib/services/models/measurement.service.mjs +164 -164
  39. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  40. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  41. package/esm2020/lib/services/models/node.service.mjs +31 -31
  42. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  43. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  44. package/esm2020/lib/services/models/plan.service.mjs +796 -795
  45. package/esm2020/lib/services/models/poi.service.mjs +48 -48
  46. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  47. package/esm2020/lib/services/models/property.service.mjs +44 -44
  48. package/esm2020/lib/services/models/space.service.mjs +204 -204
  49. package/esm2020/lib/services/models/template.service.mjs +41 -41
  50. package/esm2020/lib/services/models/ticket.service.mjs +454 -454
  51. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  52. package/esm2020/lib/services/models/zone.service.mjs +218 -218
  53. package/esm2020/lib/services/navigator.service.mjs +175 -175
  54. package/esm2020/lib/services/s3.service.mjs +124 -124
  55. package/esm2020/lib/services/search.service.mjs +124 -124
  56. package/esm2020/lib/services/support.service.mjs +42 -42
  57. package/esm2020/lib/services/tag.service.mjs +111 -111
  58. package/esm2020/lib/services/user.service.mjs +501 -501
  59. package/esm2020/lib/services/validators.service.mjs +50 -50
  60. package/esm2020/lib/services/viewer.service.mjs +364 -364
  61. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  62. package/esm2020/lib/types.service.mjs +305 -305
  63. package/esm2020/lib/validators/email.directive.mjs +7 -7
  64. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  65. package/esm2020/lib/validators/number.directive.mjs +12 -12
  66. package/esm2020/lib/validators/text.directive.mjs +12 -12
  67. package/esm2020/public-api.mjs +70 -70
  68. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  69. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +10516 -10515
  70. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  71. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +9813 -9812
  72. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  73. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  74. package/lib/components/loader/loader.component.d.ts +10 -10
  75. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  76. package/lib/components/menu-bar/menu-bar.component.d.ts +35 -35
  77. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +66 -66
  78. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +24 -24
  79. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  80. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  81. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  82. package/lib/config.d.ts +21 -21
  83. package/lib/helpers.service.d.ts +79 -79
  84. package/lib/mattertagData.d.ts +62 -62
  85. package/lib/ngx-smarterplan-core.module.d.ts +28 -28
  86. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  87. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  88. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  89. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  90. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  91. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  92. package/lib/services/base-tab.service.d.ts +10 -10
  93. package/lib/services/baseVisibility.service.d.ts +8 -8
  94. package/lib/services/content.service.d.ts +28 -28
  95. package/lib/services/filter.service.d.ts +58 -58
  96. package/lib/services/intervention.service.d.ts +25 -25
  97. package/lib/services/locale.service.d.ts +23 -23
  98. package/lib/services/matterport-import.service.d.ts +47 -47
  99. package/lib/services/matterport.service.d.ts +267 -267
  100. package/lib/services/models/affectation.service.d.ts +14 -14
  101. package/lib/services/models/base-object.service.d.ts +20 -20
  102. package/lib/services/models/capture.service.d.ts +13 -13
  103. package/lib/services/models/comment.service.d.ts +26 -26
  104. package/lib/services/models/domain.service.d.ts +19 -19
  105. package/lib/services/models/equipment.service.d.ts +88 -88
  106. package/lib/services/models/event.service.d.ts +43 -43
  107. package/lib/services/models/feature.service.d.ts +72 -72
  108. package/lib/services/models/hashtag.service.d.ts +13 -13
  109. package/lib/services/models/layer.service.d.ts +11 -11
  110. package/lib/services/models/measurement.service.d.ts +44 -44
  111. package/lib/services/models/mission.service.d.ts +39 -39
  112. package/lib/services/models/navigation.service.d.ts +29 -29
  113. package/lib/services/models/node.service.d.ts +12 -12
  114. package/lib/services/models/operation.service.d.ts +15 -15
  115. package/lib/services/models/organisation.service.d.ts +19 -19
  116. package/lib/services/models/plan.service.d.ts +133 -133
  117. package/lib/services/models/poi.service.d.ts +15 -15
  118. package/lib/services/models/profile.service.d.ts +16 -16
  119. package/lib/services/models/property.service.d.ts +13 -13
  120. package/lib/services/models/space.service.d.ts +46 -46
  121. package/lib/services/models/template.service.d.ts +15 -15
  122. package/lib/services/models/ticket.service.d.ts +86 -86
  123. package/lib/services/models/visit.service.d.ts +24 -24
  124. package/lib/services/models/zone.service.d.ts +50 -50
  125. package/lib/services/navigator.service.d.ts +57 -57
  126. package/lib/services/s3.service.d.ts +13 -13
  127. package/lib/services/search.service.d.ts +20 -20
  128. package/lib/services/support.service.d.ts +17 -17
  129. package/lib/services/tag.service.d.ts +29 -29
  130. package/lib/services/user.service.d.ts +118 -118
  131. package/lib/services/validators.service.d.ts +18 -18
  132. package/lib/services/viewer.service.d.ts +107 -107
  133. package/lib/services/zone-drawer.service.d.ts +7 -7
  134. package/lib/types.service.d.ts +791 -791
  135. package/lib/validators/email.directive.d.ts +2 -2
  136. package/lib/validators/no-empty.directive.d.ts +2 -2
  137. package/lib/validators/number.directive.d.ts +2 -2
  138. package/lib/validators/text.directive.d.ts +2 -2
  139. package/package.json +1 -1
  140. package/public-api.d.ts +62 -62
  141. package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
@@ -1,59 +1,59 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@ngx-translate/core";
4
- export class CsvExportComponent {
5
- constructor() {
6
- /** Header of the CSV, titles for each columns */
7
- this.headers = [];
8
- /** Array of each rows (array of array of string), if it's not set, then the function getRows() will be used */
9
- this.rowsInput = undefined;
10
- /** Function used to get rows if rowsInput is not set, call each time the user click on the button to generate the CSV file */
11
- this.getRows = undefined;
12
- /** Title of the file to download */
13
- this.title = "file";
14
- /** Label for the button to click */
15
- this.buttonLabel = "Export";
16
- /** Delimiter for the CSV */
17
- this.delimeter = ";";
18
- }
19
- async onClickDownload() {
20
- let rows = this.rowsInput;
21
- if (!rows) {
22
- rows = await Promise.resolve(this.getRows());
23
- }
24
- const data = `data:text/csv;charset=utf-8,${this.headers.join(this.delimeter)}\n${rows
25
- .map((row) =>
26
- /** Clean each rows/cells */
27
- row
28
- .map((value) => value
29
- .replace(this.delimeter, " ")
30
- .replace("\n", " ")
31
- .replace("\r", " "))
32
- .join(this.delimeter))
33
- .join("\n")}`;
34
- /** Create a link to download the file */
35
- const link = document.createElement("a");
36
- link.setAttribute("href", encodeURI(data));
37
- link.setAttribute("download", `${this.title}.csv`);
38
- document.body.append(link);
39
- link.click();
40
- link.remove();
41
- }
42
- }
43
- CsvExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CsvExportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- CsvExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: CsvExportComponent, selector: "lib-csv-export", inputs: { headers: "headers", rowsInput: "rowsInput", getRows: "getRows", title: "title", buttonLabel: "buttonLabel" }, ngImport: i0, template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\n {{ buttonLabel | translate}}\n</span>\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"], pipes: { "translate": i1.TranslatePipe } });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CsvExportComponent, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'lib-csv-export', template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\n {{ buttonLabel | translate}}\n</span>\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"] }]
48
- }], propDecorators: { headers: [{
49
- type: Input
50
- }], rowsInput: [{
51
- type: Input
52
- }], getRows: [{
53
- type: Input
54
- }], title: [{
55
- type: Input
56
- }], buttonLabel: [{
57
- type: Input
58
- }] } });
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ export class CsvExportComponent {
5
+ constructor() {
6
+ /** Header of the CSV, titles for each columns */
7
+ this.headers = [];
8
+ /** Array of each rows (array of array of string), if it's not set, then the function getRows() will be used */
9
+ this.rowsInput = undefined;
10
+ /** Function used to get rows if rowsInput is not set, call each time the user click on the button to generate the CSV file */
11
+ this.getRows = undefined;
12
+ /** Title of the file to download */
13
+ this.title = "file";
14
+ /** Label for the button to click */
15
+ this.buttonLabel = "Export";
16
+ /** Delimiter for the CSV */
17
+ this.delimeter = ";";
18
+ }
19
+ async onClickDownload() {
20
+ let rows = this.rowsInput;
21
+ if (!rows) {
22
+ rows = await Promise.resolve(this.getRows());
23
+ }
24
+ const data = `data:text/csv;charset=utf-8,${this.headers.join(this.delimeter)}\n${rows
25
+ .map((row) =>
26
+ /** Clean each rows/cells */
27
+ row
28
+ .map((value) => value
29
+ .replace(this.delimeter, " ")
30
+ .replace("\n", " ")
31
+ .replace("\r", " "))
32
+ .join(this.delimeter))
33
+ .join("\n")}`;
34
+ /** Create a link to download the file */
35
+ const link = document.createElement("a");
36
+ link.setAttribute("href", encodeURI(data));
37
+ link.setAttribute("download", `${this.title}.csv`);
38
+ document.body.append(link);
39
+ link.click();
40
+ link.remove();
41
+ }
42
+ }
43
+ CsvExportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CsvExportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ CsvExportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: CsvExportComponent, selector: "lib-csv-export", inputs: { headers: "headers", rowsInput: "rowsInput", getRows: "getRows", title: "title", buttonLabel: "buttonLabel" }, ngImport: i0, template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\n {{ buttonLabel | translate}}\n</span>\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"], pipes: { "translate": i1.TranslatePipe } });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CsvExportComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'lib-csv-export', template: "<span [style.cursor]=\"'pointer'\" (click)=\"onClickDownload()\" class=\"download-csv d-flex\">\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\n {{ buttonLabel | translate}}\n</span>\n", styles: [".download-csv{color:var(--smarterplan-primary)}\n"] }]
48
+ }], propDecorators: { headers: [{
49
+ type: Input
50
+ }], rowsInput: [{
51
+ type: Input
52
+ }], getRows: [{
53
+ type: Input
54
+ }], title: [{
55
+ type: Input
56
+ }], buttonLabel: [{
57
+ type: Input
58
+ }] } });
59
59
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvY3N2LWV4cG9ydC9jc3YtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jc3YtZXhwb3J0L2Nzdi1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBT0ksaURBQWlEO1FBQ3hDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFFaEMsK0dBQStHO1FBQ3RHLGNBQVMsR0FBZSxTQUFTLENBQUM7UUFFM0MsOEhBQThIO1FBQ3JILFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFN0Isb0NBQW9DO1FBQzNCLFVBQUssR0FBVyxNQUFNLENBQUM7UUFFaEMsb0NBQW9DO1FBQzNCLGdCQUFXLEdBQVcsUUFBUSxDQUFDO1FBRXhDLDRCQUE0QjtRQUM1QixjQUFTLEdBQVcsR0FBRyxDQUFDO0tBK0IzQjtJQTdCRyxLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLElBQUksR0FBZSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsTUFBTSxJQUFJLEdBQUcsK0JBQStCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN6RCxJQUFJLENBQUMsU0FBUyxDQUNqQixLQUFLLElBQUk7YUFDTCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNULDRCQUE0QjtRQUM1QixHQUFHO2FBQ0UsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDWCxLQUFLO2FBQ0EsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQzVCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFCO2FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUI7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUVsQix5Q0FBeUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzsrR0FoRFEsa0JBQWtCO21HQUFsQixrQkFBa0IsOEtDUC9CLDJOQUlBOzJGREdhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBT2YsT0FBTztzQkFBZixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY3N2LWV4cG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jc3YtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3N2LWV4cG9ydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENzdkV4cG9ydENvbXBvbmVudCB7XG4gICAgXG4gICAgLyoqIEhlYWRlciBvZiB0aGUgQ1NWLCB0aXRsZXMgZm9yIGVhY2ggY29sdW1ucyAqL1xuICAgIEBJbnB1dCgpIGhlYWRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQXJyYXkgb2YgZWFjaCByb3dzIChhcnJheSBvZiBhcnJheSBvZiBzdHJpbmcpLCBpZiBpdCdzIG5vdCBzZXQsIHRoZW4gdGhlIGZ1bmN0aW9uIGdldFJvd3MoKSB3aWxsIGJlIHVzZWQgKi9cbiAgICBASW5wdXQoKSByb3dzSW5wdXQ6IHN0cmluZ1tdW10gPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogRnVuY3Rpb24gdXNlZCB0byBnZXQgcm93cyBpZiByb3dzSW5wdXQgaXMgbm90IHNldCwgY2FsbCBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgb24gdGhlIGJ1dHRvbiB0byBnZW5lcmF0ZSB0aGUgQ1NWIGZpbGUgKi9cbiAgICBASW5wdXQoKSBnZXRSb3dzID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRpdGxlIG9mIHRoZSBmaWxlIHRvIGRvd25sb2FkICovXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IFwiZmlsZVwiO1xuXG4gICAgLyoqIExhYmVsIGZvciB0aGUgYnV0dG9uIHRvIGNsaWNrICovXG4gICAgQElucHV0KCkgYnV0dG9uTGFiZWw6IHN0cmluZyA9IFwiRXhwb3J0XCI7XG5cbiAgICAvKiogRGVsaW1pdGVyIGZvciB0aGUgQ1NWICovXG4gICAgZGVsaW1ldGVyOiBzdHJpbmcgPSBcIjtcIjtcblxuICAgIGFzeW5jIG9uQ2xpY2tEb3dubG9hZCgpIHtcbiAgICAgICAgbGV0IHJvd3M6IHN0cmluZ1tdW10gPSB0aGlzLnJvd3NJbnB1dDtcbiAgICAgICAgaWYgKCFyb3dzKSB7XG4gICAgICAgICAgICByb3dzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuZ2V0Um93cygpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gYGRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwke3RoaXMuaGVhZGVycy5qb2luKFxuICAgICAgICAgICAgdGhpcy5kZWxpbWV0ZXIsXG4gICAgICAgICl9XFxuJHtyb3dzXG4gICAgICAgICAgICAubWFwKChyb3cpID0+XG4gICAgICAgICAgICAgICAgLyoqIENsZWFuIGVhY2ggcm93cy9jZWxscyAqL1xuICAgICAgICAgICAgICAgIHJvd1xuICAgICAgICAgICAgICAgICAgICAubWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5kZWxpbWV0ZXIsIFwiIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiXFxuXCIsIFwiIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiXFxyXCIsIFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbih0aGlzLmRlbGltZXRlciksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbihcIlxcblwiKX1gO1xuXG4gICAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGRvd25sb2FkIHRoZSBmaWxlICovXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGVuY29kZVVSSShkYXRhKSk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgYCR7dGhpcy50aXRsZX0uY3N2YCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgIGxpbmsucmVtb3ZlKCk7XG4gICAgfVxufVxuIiwiPHNwYW4gW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIiAoY2xpY2spPVwib25DbGlja0Rvd25sb2FkKClcIiBjbGFzcz1cImRvd25sb2FkLWNzdiBkLWZsZXhcIj5cbiAgICA8c3BhbiBjbGFzcz1cImljb25pZnlcIiBkYXRhLWljb249XCJtZGk6ZmlsZS1kb3dubG9hZC1vdXRsaW5lXCI+PC9zcGFuPlxuICAgIHt7IGJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlfX1cbjwvc3Bhbj5cbiJdfQ==
@@ -1,23 +1,23 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class LoaderComponent {
5
- constructor() {
6
- this.useLogo = true;
7
- this.color = "#53B6BB";
8
- }
9
- ngOnInit() {
10
- document.documentElement.style.setProperty('--color', this.color);
11
- }
12
- }
13
- LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: LoaderComponent, selector: "lib-loader", inputs: { useLogo: "useLogo", color: "color" }, ngImport: i0, template: "<div class=\"sk-fading-circle\">\r\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\r\n <div class=\"sk-circle1 sk-circle\"></div>\r\n <div class=\"sk-circle2 sk-circle\"></div>\r\n <div class=\"sk-circle3 sk-circle\"></div>\r\n <div class=\"sk-circle4 sk-circle\"></div>\r\n <div class=\"sk-circle5 sk-circle\"></div>\r\n <div class=\"sk-circle6 sk-circle\"></div>\r\n <div class=\"sk-circle7 sk-circle\"></div>\r\n <div class=\"sk-circle8 sk-circle\"></div>\r\n <div class=\"sk-circle9 sk-circle\"></div>\r\n <div class=\"sk-circle10 sk-circle\"></div>\r\n <div class=\"sk-circle11 sk-circle\"></div>\r\n <div class=\"sk-circle12 sk-circle\"></div>\r\n</div>\r\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LoaderComponent, decorators: [{
16
- type: Component,
17
- args: [{ selector: 'lib-loader', template: "<div class=\"sk-fading-circle\">\r\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\r\n <div class=\"sk-circle1 sk-circle\"></div>\r\n <div class=\"sk-circle2 sk-circle\"></div>\r\n <div class=\"sk-circle3 sk-circle\"></div>\r\n <div class=\"sk-circle4 sk-circle\"></div>\r\n <div class=\"sk-circle5 sk-circle\"></div>\r\n <div class=\"sk-circle6 sk-circle\"></div>\r\n <div class=\"sk-circle7 sk-circle\"></div>\r\n <div class=\"sk-circle8 sk-circle\"></div>\r\n <div class=\"sk-circle9 sk-circle\"></div>\r\n <div class=\"sk-circle10 sk-circle\"></div>\r\n <div class=\"sk-circle11 sk-circle\"></div>\r\n <div class=\"sk-circle12 sk-circle\"></div>\r\n</div>\r\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"] }]
18
- }], ctorParameters: function () { return []; }, propDecorators: { useLogo: [{
19
- type: Input
20
- }], color: [{
21
- type: Input
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFPekQsTUFBTSxPQUFPLGVBQWU7SUFJeEI7UUFIUyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLFVBQUssR0FBVyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVqQixRQUFRO1FBQ0osUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7NEdBUlEsZUFBZTtnR0FBZixlQUFlLGtHQ1A1QiwydEJBZUE7MkZEUmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxZQUFZOzBFQUtiLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItbG9hZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9hZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSB1c2VMb2dvOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gXCIjNTNCNkJCXCI7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvcicsIHRoaXMuY29sb3IpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2stZmFkaW5nLWNpcmNsZVwiPlxyXG4gICAgPGltZyAqbmdJZj1cInVzZUxvZ29cIiBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc21hcnRlcnBsYW4uc3ZnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMSBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUyIHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTMgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlNCBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU1IHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTYgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlNyBzay1jaXJjbGVcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU4IHNrLWNpcmNsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTkgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTAgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTEgc2stY2lyY2xlXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTIgc2stY2lyY2xlXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class LoaderComponent {
5
+ constructor() {
6
+ this.useLogo = true;
7
+ this.color = "#53B6BB";
8
+ }
9
+ ngOnInit() {
10
+ document.documentElement.style.setProperty('--color', this.color);
11
+ }
12
+ }
13
+ LoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ LoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: LoaderComponent, selector: "lib-loader", inputs: { useLogo: "useLogo", color: "color" }, ngImport: i0, template: "<div class=\"sk-fading-circle\">\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\n <div class=\"sk-circle1 sk-circle\"></div>\n <div class=\"sk-circle2 sk-circle\"></div>\n <div class=\"sk-circle3 sk-circle\"></div>\n <div class=\"sk-circle4 sk-circle\"></div>\n <div class=\"sk-circle5 sk-circle\"></div>\n <div class=\"sk-circle6 sk-circle\"></div>\n <div class=\"sk-circle7 sk-circle\"></div>\n <div class=\"sk-circle8 sk-circle\"></div>\n <div class=\"sk-circle9 sk-circle\"></div>\n <div class=\"sk-circle10 sk-circle\"></div>\n <div class=\"sk-circle11 sk-circle\"></div>\n <div class=\"sk-circle12 sk-circle\"></div>\n</div>\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LoaderComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: 'lib-loader', template: "<div class=\"sk-fading-circle\">\n <img *ngIf=\"useLogo\" src=\"../../../../assets/icons/smarterplan.svg\">\n <div class=\"sk-circle1 sk-circle\"></div>\n <div class=\"sk-circle2 sk-circle\"></div>\n <div class=\"sk-circle3 sk-circle\"></div>\n <div class=\"sk-circle4 sk-circle\"></div>\n <div class=\"sk-circle5 sk-circle\"></div>\n <div class=\"sk-circle6 sk-circle\"></div>\n <div class=\"sk-circle7 sk-circle\"></div>\n <div class=\"sk-circle8 sk-circle\"></div>\n <div class=\"sk-circle9 sk-circle\"></div>\n <div class=\"sk-circle10 sk-circle\"></div>\n <div class=\"sk-circle11 sk-circle\"></div>\n <div class=\"sk-circle12 sk-circle\"></div>\n</div>\n", styles: [".sk-fading-circle{width:88px;height:88px;position:relative}.sk-fading-circle img{width:2rem;position:absolute;left:calc(50% - 16px);top:calc(50% - 16px)}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:var(--color);border-radius:100%;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{animation-delay:-1s}.sk-fading-circle .sk-circle4:before{animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}\n"] }]
18
+ }], ctorParameters: function () { return []; }, propDecorators: { useLogo: [{
19
+ type: Input
20
+ }], color: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFPekQsTUFBTSxPQUFPLGVBQWU7SUFJeEI7UUFIUyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLFVBQUssR0FBVyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVqQixRQUFRO1FBQ0osUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7NEdBUlEsZUFBZTtnR0FBZixlQUFlLGtHQ1A1Qiw2ckJBZUE7MkZEUmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxZQUFZOzBFQUtiLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9sb2FkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHVzZUxvZ286IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZyA9IFwiIzUzQjZCQlwiO1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yJywgdGhpcy5jb2xvcik7XG4gICAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2stZmFkaW5nLWNpcmNsZVwiPlxuICAgIDxpbWcgKm5nSWY9XCJ1c2VMb2dvXCIgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3NtYXJ0ZXJwbGFuLnN2Z1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUxIHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUyIHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUzIHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU0IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU1IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU2IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU3IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU4IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGU5IHNrLWNpcmNsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzay1jaXJjbGUxMCBzay1jaXJjbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2stY2lyY2xlMTEgc2stY2lyY2xlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNrLWNpcmNsZTEyIHNrLWNpcmNsZVwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,80 +1,80 @@
1
- import { Component, Input } from '@angular/core';
2
- import { uploadFileToS3, getSignedImageUrlForProfile } from '../../../services/s3.service';
3
- import { ProfileEntity } from '../../../types.service';
4
- import { Md5 } from "ts-md5/dist/md5";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../../services/user.service";
7
- import * as i2 from "../../../services/models/profile.service";
8
- const cache = {};
9
- export class AvatarComponent {
10
- constructor(userService, profileService) {
11
- this.userService = userService;
12
- this.profileService = profileService;
13
- this.size = 45;
14
- this.userSub = this.userService.isChanged.subscribe((connected) => {
15
- if (connected) {
16
- this.currentUser = this.userService.cu;
17
- this.setAvatar(this.currentUser);
18
- }
19
- });
20
- }
21
- async ngOnInit() {
22
- if (this.userID) {
23
- const profile = await this.profileService.getProfile(this.userID);
24
- if (profile) {
25
- const user = new ProfileEntity(profile);
26
- this.setAvatar(user);
27
- }
28
- }
29
- else {
30
- this.currentUser = this.userService.cu;
31
- this.setAvatar(this.currentUser);
32
- }
33
- }
34
- ngOnDestroy() {
35
- if (this.userSub) {
36
- this.userSub.unsubscribe();
37
- }
38
- }
39
- async setAvatar(user) {
40
- const { id, avatar, email } = user;
41
- // If avatar is not cached, check first if we have an avatar URL to fetch
42
- // from S3. If not, retrieve it from libravatar.
43
- // TODO use in a Service to be able to change/upload freely.
44
- if (!cache.hasOwnProperty(id)) {
45
- if (!avatar && email) {
46
- const md5 = new Md5();
47
- const md5hash = md5.appendStr(email).end();
48
- const avatar = `https://seccdn.libravatar.org/avatar/${md5hash}?s=${this.size}&default=identicon`;
49
- const url = await fetch(avatar)
50
- .then((res) => res.blob())
51
- .then((blob) => {
52
- const file = new File([blob], "avatar.jpeg", {
53
- type: "image/jpeg",
54
- });
55
- return uploadFileToS3("avatars/", file, id);
56
- });
57
- await this.profileService.updateProfile({ id, avatar: url });
58
- user.avatar = url;
59
- cache[id] = avatar;
60
- }
61
- if (avatar) {
62
- // TODO generating signed urls for avatar makes NO SENSE ($$$)
63
- // Sorry got to copypaste that, but really need to get rid of
64
- cache[id] = await getSignedImageUrlForProfile(user);
65
- }
66
- }
67
- this.avatar = cache[id];
68
- }
69
- }
70
- AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.BaseUserService }, { token: i2.ProfileService }], target: i0.ɵɵFactoryTarget.Component });
71
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AvatarComponent, selector: "lib-avatar", inputs: { size: "size", userID: "userID" }, ngImport: i0, template: `<img [src]="avatar" />`, isInline: true, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AvatarComponent, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'lib-avatar', template: `<img [src]="avatar" />`, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] }]
75
- }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i2.ProfileService }]; }, propDecorators: { size: [{
76
- type: Input
77
- }], userID: [{
78
- type: Input
79
- }] } });
1
+ import { Component, Input } from '@angular/core';
2
+ import { uploadFileToS3, getSignedImageUrlForProfile } from '../../../services/s3.service';
3
+ import { ProfileEntity } from '../../../types.service';
4
+ import { Md5 } from "ts-md5/dist/md5";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../services/user.service";
7
+ import * as i2 from "../../../services/models/profile.service";
8
+ const cache = {};
9
+ export class AvatarComponent {
10
+ constructor(userService, profileService) {
11
+ this.userService = userService;
12
+ this.profileService = profileService;
13
+ this.size = 45;
14
+ this.userSub = this.userService.isChanged.subscribe((connected) => {
15
+ if (connected) {
16
+ this.currentUser = this.userService.cu;
17
+ this.setAvatar(this.currentUser);
18
+ }
19
+ });
20
+ }
21
+ async ngOnInit() {
22
+ if (this.userID) {
23
+ const profile = await this.profileService.getProfile(this.userID);
24
+ if (profile) {
25
+ const user = new ProfileEntity(profile);
26
+ this.setAvatar(user);
27
+ }
28
+ }
29
+ else {
30
+ this.currentUser = this.userService.cu;
31
+ this.setAvatar(this.currentUser);
32
+ }
33
+ }
34
+ ngOnDestroy() {
35
+ if (this.userSub) {
36
+ this.userSub.unsubscribe();
37
+ }
38
+ }
39
+ async setAvatar(user) {
40
+ const { id, avatar, email } = user;
41
+ // If avatar is not cached, check first if we have an avatar URL to fetch
42
+ // from S3. If not, retrieve it from libravatar.
43
+ // TODO use in a Service to be able to change/upload freely.
44
+ if (!cache.hasOwnProperty(id)) {
45
+ if (!avatar && email) {
46
+ const md5 = new Md5();
47
+ const md5hash = md5.appendStr(email).end();
48
+ const avatar = `https://seccdn.libravatar.org/avatar/${md5hash}?s=${this.size}&default=identicon`;
49
+ const url = await fetch(avatar)
50
+ .then((res) => res.blob())
51
+ .then((blob) => {
52
+ const file = new File([blob], "avatar.jpeg", {
53
+ type: "image/jpeg",
54
+ });
55
+ return uploadFileToS3("avatars/", file, id);
56
+ });
57
+ await this.profileService.updateProfile({ id, avatar: url });
58
+ user.avatar = url;
59
+ cache[id] = avatar;
60
+ }
61
+ if (avatar) {
62
+ // TODO generating signed urls for avatar makes NO SENSE ($$$)
63
+ // Sorry got to copypaste that, but really need to get rid of
64
+ cache[id] = await getSignedImageUrlForProfile(user);
65
+ }
66
+ }
67
+ this.avatar = cache[id];
68
+ }
69
+ }
70
+ AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.BaseUserService }, { token: i2.ProfileService }], target: i0.ɵɵFactoryTarget.Component });
71
+ AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AvatarComponent, selector: "lib-avatar", inputs: { size: "size", userID: "userID" }, ngImport: i0, template: `<img [src]="avatar" />`, isInline: true, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AvatarComponent, decorators: [{
73
+ type: Component,
74
+ args: [{ selector: 'lib-avatar', template: `<img [src]="avatar" />`, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] }]
75
+ }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i2.ProfileService }]; }, propDecorators: { size: [{
76
+ type: Input
77
+ }], userID: [{
78
+ type: Input
79
+ }] } });
80
80
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUd0QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFNakIsTUFBTSxPQUFPLGVBQWU7SUFZeEIsWUFDWSxXQUE0QixFQUM1QixjQUE4QjtRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWmpDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFjdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM5RCxJQUFJLFNBQVMsRUFBRTtnQkFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQW1CO1FBQy9CLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUVuQyx5RUFBeUU7UUFDekUsZ0RBQWdEO1FBQ2hELDREQUE0RDtRQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDbEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxNQUFNLEdBQUcsd0NBQXdDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxvQkFBb0IsQ0FBQztnQkFDbEcsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDO3FCQUMxQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztxQkFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUU7d0JBQ3pDLElBQUksRUFBRSxZQUFZO3FCQUNyQixDQUFDLENBQUM7b0JBQ0gsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDdEI7WUFDRCxJQUFJLE1BQU0sRUFBRTtnQkFDUiw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkQ7U0FDSjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OzRHQXpFUSxlQUFlO2dHQUFmLGVBQWUsOEZBSGQsd0JBQXdCOzJGQUd6QixlQUFlO2tCQUwzQixTQUFTOytCQUNJLFlBQVksWUFDWix3QkFBd0I7bUlBS3pCLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kZWxzL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyB1cGxvYWRGaWxlVG9TMywgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvczMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWQ1IH0gZnJvbSBcInRzLW1kNS9kaXN0L21kNVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IGNhY2hlID0ge307XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1hdmF0YXInLFxuICAgIHRlbXBsYXRlOiBgPGltZyBbc3JjXT1cImF2YXRhclwiIC8+YCxcbiAgICBzdHlsZVVybHM6IFtcIi4vYXZhdGFyLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gNDU7XG5cbiAgICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcblxuICAgIGN1cnJlbnRVc2VyOiBQcm9maWxlRW50aXR5O1xuXG4gICAgYXZhdGFyO1xuXG4gICAgdXNlclN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXNlclN1YiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoY29ubmVjdGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMudXNlclNlcnZpY2UuY3U7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdmF0YXIodGhpcy5jdXJyZW50VXNlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy51c2VySUQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGUodGhpcy51c2VySUQpO1xuICAgICAgICAgICAgaWYgKHByb2ZpbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdmF0YXIodXNlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy51c2VyU2VydmljZS5jdTtcbiAgICAgICAgICAgIHRoaXMuc2V0QXZhdGFyKHRoaXMuY3VycmVudFVzZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJTdWIpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0QXZhdGFyKHVzZXI6IFByb2ZpbGVFbnRpdHkpIHtcbiAgICAgICAgY29uc3QgeyBpZCwgYXZhdGFyLCBlbWFpbCB9ID0gdXNlcjtcblxuICAgICAgICAvLyBJZiBhdmF0YXIgaXMgbm90IGNhY2hlZCwgY2hlY2sgZmlyc3QgaWYgd2UgaGF2ZSBhbiBhdmF0YXIgVVJMIHRvIGZldGNoXG4gICAgICAgIC8vIGZyb20gUzMuIElmIG5vdCwgcmV0cmlldmUgaXQgZnJvbSBsaWJyYXZhdGFyLlxuICAgICAgICAvLyBUT0RPIHVzZSBpbiBhIFNlcnZpY2UgdG8gYmUgYWJsZSB0byBjaGFuZ2UvdXBsb2FkIGZyZWVseS5cbiAgICAgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgICAgIGlmICghYXZhdGFyICYmIGVtYWlsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWQ1ID0gbmV3IE1kNSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1kNWhhc2ggPSBtZDUuYXBwZW5kU3RyKGVtYWlsKS5lbmQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdmF0YXIgPSBgaHR0cHM6Ly9zZWNjZG4ubGlicmF2YXRhci5vcmcvYXZhdGFyLyR7bWQ1aGFzaH0/cz0ke3RoaXMuc2l6ZX0mZGVmYXVsdD1pZGVudGljb25gO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IGZldGNoKGF2YXRhcilcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmJsb2IoKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIFwiYXZhdGFyLmpwZWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2UvanBlZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBsb2FkRmlsZVRvUzMoXCJhdmF0YXJzL1wiLCBmaWxlLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7IGlkLCBhdmF0YXI6IHVybCB9KTtcbiAgICAgICAgICAgICAgICB1c2VyLmF2YXRhciA9IHVybDtcbiAgICAgICAgICAgICAgICBjYWNoZVtpZF0gPSBhdmF0YXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBnZW5lcmF0aW5nIHNpZ25lZCB1cmxzIGZvciBhdmF0YXIgbWFrZXMgTk8gU0VOU0UgKCQkJClcbiAgICAgICAgICAgICAgICAvLyBTb3JyeSBnb3QgdG8gY29weXBhc3RlIHRoYXQsIGJ1dCByZWFsbHkgbmVlZCB0byBnZXQgcmlkIG9mXG4gICAgICAgICAgICAgICAgY2FjaGVbaWRdID0gYXdhaXQgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JQcm9maWxlKHVzZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXZhdGFyID0gY2FjaGVbaWRdO1xuICAgIH1cbn1cbiJdfQ==