@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47
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.
- package/README.md +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +2 -2
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
package/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# NgxSmarterplanCore
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project ngx-smarterplan-core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-smarterplan-core`.
|
|
8
|
-
> Note: Don't forget to add `--project ngx-smarterplan-core` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build ngx-smarterplan-core` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build ngx-smarterplan-core`, go to the dist folder `cd dist/ngx-smarterplan-core` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test ngx-smarterplan-core` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# NgxSmarterplanCore
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ngx-smarterplan-core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-smarterplan-core`.
|
|
8
|
+
> Note: Don't forget to add `--project ngx-smarterplan-core` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build ngx-smarterplan-core` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build ngx-smarterplan-core`, go to the dist folder `cd dist/ngx-smarterplan-core` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test ngx-smarterplan-core` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -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
|
-
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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\">\r\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\r\n {{ buttonLabel | translate}}\r\n</span>\r\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\">\r\n <span class=\"iconify\" data-icon=\"mdi:file-download-outline\"></span>\r\n {{ buttonLabel | translate}}\r\n</span>\r\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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWV4cG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvY3N2LWV4cG9ydC9jc3YtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jc3YtZXhwb3J0L2Nzdi1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBT0ksaURBQWlEO1FBQ3hDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFFaEMsK0dBQStHO1FBQ3RHLGNBQVMsR0FBZSxTQUFTLENBQUM7UUFFM0MsOEhBQThIO1FBQ3JILFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFN0Isb0NBQW9DO1FBQzNCLFVBQUssR0FBVyxNQUFNLENBQUM7UUFFaEMsb0NBQW9DO1FBQzNCLGdCQUFXLEdBQVcsUUFBUSxDQUFDO1FBRXhDLDRCQUE0QjtRQUM1QixjQUFTLEdBQVcsR0FBRyxDQUFDO0tBK0IzQjtJQTdCRyxLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLElBQUksR0FBZSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsTUFBTSxJQUFJLEdBQUcsK0JBQStCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN6RCxJQUFJLENBQUMsU0FBUyxDQUNqQixLQUFLLElBQUk7YUFDTCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNULDRCQUE0QjtRQUM1QixHQUFHO2FBQ0UsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDWCxLQUFLO2FBQ0EsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQzVCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFCO2FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUI7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUVsQix5Q0FBeUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzsrR0FoRFEsa0JBQWtCO21HQUFsQixrQkFBa0IsOEtDUC9CLG1PQUlBOzJGREdhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBT2YsT0FBTztzQkFBZixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY3N2LWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nzdi1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Nzdi1leHBvcnQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3N2RXhwb3J0Q29tcG9uZW50IHtcclxuICAgIFxyXG4gICAgLyoqIEhlYWRlciBvZiB0aGUgQ1NWLCB0aXRsZXMgZm9yIGVhY2ggY29sdW1ucyAqL1xyXG4gICAgQElucHV0KCkgaGVhZGVyczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKiogQXJyYXkgb2YgZWFjaCByb3dzIChhcnJheSBvZiBhcnJheSBvZiBzdHJpbmcpLCBpZiBpdCdzIG5vdCBzZXQsIHRoZW4gdGhlIGZ1bmN0aW9uIGdldFJvd3MoKSB3aWxsIGJlIHVzZWQgKi9cclxuICAgIEBJbnB1dCgpIHJvd3NJbnB1dDogc3RyaW5nW11bXSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKiogRnVuY3Rpb24gdXNlZCB0byBnZXQgcm93cyBpZiByb3dzSW5wdXQgaXMgbm90IHNldCwgY2FsbCBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgb24gdGhlIGJ1dHRvbiB0byBnZW5lcmF0ZSB0aGUgQ1NWIGZpbGUgKi9cclxuICAgIEBJbnB1dCgpIGdldFJvd3MgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIFRpdGxlIG9mIHRoZSBmaWxlIHRvIGRvd25sb2FkICovXHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gXCJmaWxlXCI7XHJcblxyXG4gICAgLyoqIExhYmVsIGZvciB0aGUgYnV0dG9uIHRvIGNsaWNrICovXHJcbiAgICBASW5wdXQoKSBidXR0b25MYWJlbDogc3RyaW5nID0gXCJFeHBvcnRcIjtcclxuXHJcbiAgICAvKiogRGVsaW1pdGVyIGZvciB0aGUgQ1NWICovXHJcbiAgICBkZWxpbWV0ZXI6IHN0cmluZyA9IFwiO1wiO1xyXG5cclxuICAgIGFzeW5jIG9uQ2xpY2tEb3dubG9hZCgpIHtcclxuICAgICAgICBsZXQgcm93czogc3RyaW5nW11bXSA9IHRoaXMucm93c0lucHV0O1xyXG4gICAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgICAgICByb3dzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuZ2V0Um93cygpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGBkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsJHt0aGlzLmhlYWRlcnMuam9pbihcclxuICAgICAgICAgICAgdGhpcy5kZWxpbWV0ZXIsXHJcbiAgICAgICAgKX1cXG4ke3Jvd3NcclxuICAgICAgICAgICAgLm1hcCgocm93KSA9PlxyXG4gICAgICAgICAgICAgICAgLyoqIENsZWFuIGVhY2ggcm93cy9jZWxscyAqL1xyXG4gICAgICAgICAgICAgICAgcm93XHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSh0aGlzLmRlbGltZXRlciwgXCIgXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIlxcblwiLCBcIiBcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiXFxyXCIsIFwiIFwiKSxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4odGhpcy5kZWxpbWV0ZXIpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWA7XHJcblxyXG4gICAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGRvd25sb2FkIHRoZSBmaWxlICovXHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBlbmNvZGVVUkkoZGF0YSkpO1xyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgYCR7dGhpcy50aXRsZX0uY3N2YCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGxpbmsucmVtb3ZlKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNwYW4gW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIiAoY2xpY2spPVwib25DbGlja0Rvd25sb2FkKClcIiBjbGFzcz1cImRvd25sb2FkLWNzdiBkLWZsZXhcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbmlmeVwiIGRhdGEtaWNvbj1cIm1kaTpmaWxlLWRvd25sb2FkLW91dGxpbmVcIj48L3NwYW4+XHJcbiAgICB7eyBidXR0b25MYWJlbCB8IHRyYW5zbGF0ZX19XHJcbjwvc3Bhbj5cclxuIl19
|
|
@@ -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\">\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,
|
|
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,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
|
-
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUd0QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFNakIsTUFBTSxPQUFPLGVBQWU7SUFZeEIsWUFDWSxXQUE0QixFQUM1QixjQUE4QjtRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWmpDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFjdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM5RCxJQUFJLFNBQVMsRUFBRTtnQkFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQW1CO1FBQy9CLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztRQUVuQyx5RUFBeUU7UUFDekUsZ0RBQWdEO1FBQ2hELDREQUE0RDtRQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDbEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxNQUFNLEdBQUcsd0NBQXdDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxvQkFBb0IsQ0FBQztnQkFDbEcsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDO3FCQUMxQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztxQkFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUU7d0JBQ3pDLElBQUksRUFBRSxZQUFZO3FCQUNyQixDQUFDLENBQUM7b0JBQ0gsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDdEI7WUFDRCxJQUFJLE1BQU0sRUFBRTtnQkFDUiw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkQ7U0FDSjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OzRHQXpFUSxlQUFlO2dHQUFmLGVBQWUsOEZBSGQsd0JBQXdCOzJGQUd6QixlQUFlO2tCQUwzQixTQUFTOytCQUNJLFlBQVksWUFDWix3QkFBd0I7bUlBS3pCLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvcHJvZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdXBsb2FkRmlsZVRvUzMsIGdldFNpZ25lZEltYWdlVXJsRm9yUHJvZmlsZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3MzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9maWxlRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1kNSB9IGZyb20gXCJ0cy1tZDUvZGlzdC9tZDVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBjYWNoZSA9IHt9O1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWF2YXRhcicsXHJcbiAgICB0ZW1wbGF0ZTogYDxpbWcgW3NyY109XCJhdmF0YXJcIiAvPmAsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vYXZhdGFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSA0NTtcclxuXHJcbiAgICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcclxuXHJcbiAgICBjdXJyZW50VXNlcjogUHJvZmlsZUVudGl0eTtcclxuXHJcbiAgICBhdmF0YXI7XHJcblxyXG4gICAgdXNlclN1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMudXNlclN1YiA9IHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoY29ubmVjdGVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdmF0YXIodGhpcy5jdXJyZW50VXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAodGhpcy51c2VySUQpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZSh0aGlzLnVzZXJJRCk7XHJcbiAgICAgICAgICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF2YXRhcih1c2VyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1O1xyXG4gICAgICAgICAgICB0aGlzLnNldEF2YXRhcih0aGlzLmN1cnJlbnRVc2VyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlclN1Yikge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0QXZhdGFyKHVzZXI6IFByb2ZpbGVFbnRpdHkpIHtcclxuICAgICAgICBjb25zdCB7IGlkLCBhdmF0YXIsIGVtYWlsIH0gPSB1c2VyO1xyXG5cclxuICAgICAgICAvLyBJZiBhdmF0YXIgaXMgbm90IGNhY2hlZCwgY2hlY2sgZmlyc3QgaWYgd2UgaGF2ZSBhbiBhdmF0YXIgVVJMIHRvIGZldGNoXHJcbiAgICAgICAgLy8gZnJvbSBTMy4gSWYgbm90LCByZXRyaWV2ZSBpdCBmcm9tIGxpYnJhdmF0YXIuXHJcbiAgICAgICAgLy8gVE9ETyB1c2UgaW4gYSBTZXJ2aWNlIHRvIGJlIGFibGUgdG8gY2hhbmdlL3VwbG9hZCBmcmVlbHkuXHJcbiAgICAgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcclxuICAgICAgICAgICAgaWYgKCFhdmF0YXIgJiYgZW1haWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1kNSA9IG5ldyBNZDUoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1kNWhhc2ggPSBtZDUuYXBwZW5kU3RyKGVtYWlsKS5lbmQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGF2YXRhciA9IGBodHRwczovL3NlY2Nkbi5saWJyYXZhdGFyLm9yZy9hdmF0YXIvJHttZDVoYXNofT9zPSR7dGhpcy5zaXplfSZkZWZhdWx0PWlkZW50aWNvbmA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCBmZXRjaChhdmF0YXIpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmJsb2IoKSlcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoYmxvYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBcImF2YXRhci5qcGVnXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKFwiYXZhdGFycy9cIiwgZmlsZSwgaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHsgaWQsIGF2YXRhcjogdXJsIH0pO1xyXG4gICAgICAgICAgICAgICAgdXNlci5hdmF0YXIgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICBjYWNoZVtpZF0gPSBhdmF0YXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGF2YXRhcikge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBnZW5lcmF0aW5nIHNpZ25lZCB1cmxzIGZvciBhdmF0YXIgbWFrZXMgTk8gU0VOU0UgKCQkJClcclxuICAgICAgICAgICAgICAgIC8vIFNvcnJ5IGdvdCB0byBjb3B5cGFzdGUgdGhhdCwgYnV0IHJlYWxseSBuZWVkIHRvIGdldCByaWQgb2ZcclxuICAgICAgICAgICAgICAgIGNhY2hlW2lkXSA9IGF3YWl0IGdldFNpZ25lZEltYWdlVXJsRm9yUHJvZmlsZSh1c2VyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF2YXRhciA9IGNhY2hlW2lkXTtcclxuICAgIH1cclxufVxyXG4iXX0=
|