@spicainternational/ngx-sds-components 7.11.1 → 7.12.0-beta.2
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/esm2020/src/lib/avatar/avatar.component.mjs +17 -6
- package/esm2020/src/lib/navigation/navigation-group/navigation-group.component.mjs +12 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-avatar.mjs +16 -5
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-avatar.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs +11 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-avatar.mjs +16 -5
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-avatar.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs +11 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/avatar/avatar.component.d.ts +5 -3
- package/src/lib/navigation/navigation-group/navigation-group.component.d.ts +3 -2
|
@@ -8,10 +8,10 @@ import * as i1 from "@angular/common";
|
|
|
8
8
|
* @property {boolean} showHint - show hint with text
|
|
9
9
|
* @property {string} initialsText - override internal extraction of initials and set avatar text directly
|
|
10
10
|
*
|
|
11
|
-
* @property {string} pictureUri - uri of picture to show on avatar
|
|
11
|
+
* @property {string} pictureUri - uri of picture to show on avatar (supports http/https URLs and base64 data URIs)
|
|
12
12
|
* @property {string} pictureImageAlt - alt text for image, for accessibility
|
|
13
|
-
* @property {string} pictureLoading - loading strategy for image, lazy or eager
|
|
14
|
-
* @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images
|
|
13
|
+
* @property {string} pictureLoading - loading strategy for image, lazy or eager (only applies to URLs, not base64)
|
|
14
|
+
* @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images (only applies to URLs, not base64)
|
|
15
15
|
*
|
|
16
16
|
* @property {string} badgeVisible - show badge on avatar
|
|
17
17
|
* @property {string} badgePosition - position of badge
|
|
@@ -31,6 +31,7 @@ export class SdsAvatarComponent {
|
|
|
31
31
|
this.badgePosition = 'bottom-right';
|
|
32
32
|
this.badgeBackgroundColor = 'var(--bs-danger)';
|
|
33
33
|
this.badgeTextColor = 'white';
|
|
34
|
+
this.isBase64Image = false;
|
|
34
35
|
this.label = '';
|
|
35
36
|
this.showPicture = false;
|
|
36
37
|
this.colorClass = 'color18';
|
|
@@ -49,6 +50,7 @@ export class SdsAvatarComponent {
|
|
|
49
50
|
}
|
|
50
51
|
if (changes['pictureUri']) {
|
|
51
52
|
this.setShowPicture();
|
|
53
|
+
this.checkIfBase64();
|
|
52
54
|
}
|
|
53
55
|
if (changes['colorKey']) {
|
|
54
56
|
this.setColorClass();
|
|
@@ -60,6 +62,15 @@ export class SdsAvatarComponent {
|
|
|
60
62
|
setShowPicture() {
|
|
61
63
|
this.showPicture = !!this.pictureUri && this.pictureUri?.length > 0;
|
|
62
64
|
}
|
|
65
|
+
checkIfBase64() {
|
|
66
|
+
if (this.pictureUri) {
|
|
67
|
+
// Check if the URI is a data URI (base64)
|
|
68
|
+
this.isBase64Image = this.pictureUri.startsWith('data:');
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.isBase64Image = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
63
74
|
setColorClass() {
|
|
64
75
|
if (this.colorKey) {
|
|
65
76
|
this.colorClass = 'color' + this.getColorIndex(this.colorKey);
|
|
@@ -109,10 +120,10 @@ export class SdsAvatarComponent {
|
|
|
109
120
|
}
|
|
110
121
|
}
|
|
111
122
|
SdsAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
SdsAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAvatarComponent, selector: "sds-avatar", inputs: { text: "text", colorKey: "colorKey", pictureUri: "pictureUri", showHint: "showHint", borderStyle: "borderStyle", borderColor: "borderColor", initialsText: "initialsText", cursor: "cursor", size: "size", pictureImageAlt: "pictureImageAlt", pictureLoading: "pictureLoading", picturePriority: "picturePriority", badgeVisible: "badgeVisible", badgePosition: "badgePosition", badgeBackgroundColor: "badgeBackgroundColor", badgeTextColor: "badgeTextColor", badgeHint: "badgeHint" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <img \r\n *ngIf=\"showPicture\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n
|
|
123
|
+
SdsAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAvatarComponent, selector: "sds-avatar", inputs: { text: "text", colorKey: "colorKey", pictureUri: "pictureUri", showHint: "showHint", borderStyle: "borderStyle", borderColor: "borderColor", initialsText: "initialsText", cursor: "cursor", size: "size", pictureImageAlt: "pictureImageAlt", pictureLoading: "pictureLoading", picturePriority: "picturePriority", badgeVisible: "badgeVisible", badgePosition: "badgePosition", badgeBackgroundColor: "badgeBackgroundColor", badgeTextColor: "badgeTextColor", badgeHint: "badgeHint" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <!-- For base64 images, use regular src attribute -->\r\n <img \r\n *ngIf=\"showPicture && isBase64Image\" \r\n [src]=\"pictureUri\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n class=\"avatar-image\" />\r\n\r\n <!-- For URL images, use ngSrc with optimization features -->\r\n <img \r\n *ngIf=\"showPicture && !isBase64Image\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>", styles: [".avatar{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.avatar.color0{color:#f44336;background-color:#feeceb;border-width:1px;border-style:solid;border-color:#f4433680}.avatar.color1{color:#e91e63;background-color:#fde9ef;border-width:1px;border-style:solid;border-color:#e91e6380}.avatar.color2{color:#9c27b0;background-color:#f5e9f7;border-width:1px;border-style:solid;border-color:#9c27b080}.avatar.color3{color:#673ab7;background-color:#f0ebf8;border-width:1px;border-style:solid;border-color:#673ab780}.avatar.color4{color:#3f51b5;background-color:#eceef8;border-width:1px;border-style:solid;border-color:#3f51b580}.avatar.color5{color:#2196f3;background-color:#e9f5fe;border-width:1px;border-style:solid;border-color:#2196f380}.avatar.color6{color:#03a9f4;background-color:#e6f6fe;border-width:1px;border-style:solid;border-color:#03a9f480}.avatar.color7{color:#00bcd4;background-color:#e6f8fb;border-width:1px;border-style:solid;border-color:#00bcd480}.avatar.color8{color:#009688;background-color:#e6f5f3;border-width:1px;border-style:solid;border-color:#00968880}.avatar.color9{color:#8bc34a;background-color:#edf7ee;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color10{color:#8bc34a;background-color:#f3f9ed;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color11{color:#aebc21;background-color:#f7f8e9;border-width:1px;border-style:solid;border-color:#aebc2180}.avatar.color12{color:#d1bc04;background-color:#faf8e6;border-width:1px;border-style:solid;border-color:#d1bc0480}.avatar.color13{color:#edb201;background-color:#fdf7e6;border-width:1px;border-style:solid;border-color:#edb20180}.avatar.color14{color:#ff5722;background-color:#ffeee9;border-width:1px;border-style:solid;border-color:#ff572280}.avatar.color15{color:#e48901;background-color:#fcf3e6;border-width:1px;border-style:solid;border-color:#e4890180}.avatar.color16{color:#795548;background-color:#f2eeed;border-width:1px;border-style:solid;border-color:#79554880}.avatar.color17{color:#9e9e9e;background-color:#f5f5f5;border-width:1px;border-style:solid;border-color:#9e9e9e80}.avatar.color18{color:#607d8b;background-color:#eff2f3;border-width:1px;border-style:solid;border-color:#607d8b80}.avatar img{width:100%;height:100%;border-radius:50%}.avatar.circle{border-radius:50%;height:1em;text-align:center;width:1em}.avatar.circle .initials{font-size:.3703703704em;font-weight:500}.avatar.circle.hasPicture{border-width:0}.avatar .notification-badge{width:.4em;height:.4em}.avatar .notification-badge.top-right{top:0;right:0;transform:translate(20%)}.avatar .notification-badge.bottom-right{bottom:0;right:0;transform:translate(20%,10%)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
113
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAvatarComponent, decorators: [{
|
|
114
125
|
type: Component,
|
|
115
|
-
args: [{ selector: 'sds-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <img \r\n *ngIf=\"showPicture\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n
|
|
126
|
+
args: [{ selector: 'sds-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <!-- For base64 images, use regular src attribute -->\r\n <img \r\n *ngIf=\"showPicture && isBase64Image\" \r\n [src]=\"pictureUri\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n class=\"avatar-image\" />\r\n\r\n <!-- For URL images, use ngSrc with optimization features -->\r\n <img \r\n *ngIf=\"showPicture && !isBase64Image\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>", styles: [".avatar{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.avatar.color0{color:#f44336;background-color:#feeceb;border-width:1px;border-style:solid;border-color:#f4433680}.avatar.color1{color:#e91e63;background-color:#fde9ef;border-width:1px;border-style:solid;border-color:#e91e6380}.avatar.color2{color:#9c27b0;background-color:#f5e9f7;border-width:1px;border-style:solid;border-color:#9c27b080}.avatar.color3{color:#673ab7;background-color:#f0ebf8;border-width:1px;border-style:solid;border-color:#673ab780}.avatar.color4{color:#3f51b5;background-color:#eceef8;border-width:1px;border-style:solid;border-color:#3f51b580}.avatar.color5{color:#2196f3;background-color:#e9f5fe;border-width:1px;border-style:solid;border-color:#2196f380}.avatar.color6{color:#03a9f4;background-color:#e6f6fe;border-width:1px;border-style:solid;border-color:#03a9f480}.avatar.color7{color:#00bcd4;background-color:#e6f8fb;border-width:1px;border-style:solid;border-color:#00bcd480}.avatar.color8{color:#009688;background-color:#e6f5f3;border-width:1px;border-style:solid;border-color:#00968880}.avatar.color9{color:#8bc34a;background-color:#edf7ee;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color10{color:#8bc34a;background-color:#f3f9ed;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color11{color:#aebc21;background-color:#f7f8e9;border-width:1px;border-style:solid;border-color:#aebc2180}.avatar.color12{color:#d1bc04;background-color:#faf8e6;border-width:1px;border-style:solid;border-color:#d1bc0480}.avatar.color13{color:#edb201;background-color:#fdf7e6;border-width:1px;border-style:solid;border-color:#edb20180}.avatar.color14{color:#ff5722;background-color:#ffeee9;border-width:1px;border-style:solid;border-color:#ff572280}.avatar.color15{color:#e48901;background-color:#fcf3e6;border-width:1px;border-style:solid;border-color:#e4890180}.avatar.color16{color:#795548;background-color:#f2eeed;border-width:1px;border-style:solid;border-color:#79554880}.avatar.color17{color:#9e9e9e;background-color:#f5f5f5;border-width:1px;border-style:solid;border-color:#9e9e9e80}.avatar.color18{color:#607d8b;background-color:#eff2f3;border-width:1px;border-style:solid;border-color:#607d8b80}.avatar img{width:100%;height:100%;border-radius:50%}.avatar.circle{border-radius:50%;height:1em;text-align:center;width:1em}.avatar.circle .initials{font-size:.3703703704em;font-weight:500}.avatar.circle.hasPicture{border-width:0}.avatar .notification-badge{width:.4em;height:.4em}.avatar .notification-badge.top-right{top:0;right:0;transform:translate(20%)}.avatar .notification-badge.bottom-right{bottom:0;right:0;transform:translate(20%,10%)}\n"] }]
|
|
116
127
|
}], ctorParameters: function () { return []; }, propDecorators: { text: [{
|
|
117
128
|
type: Input
|
|
118
129
|
}], colorKey: [{
|
|
@@ -148,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
148
159
|
}], badgeHint: [{
|
|
149
160
|
type: Input
|
|
150
161
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR1IsTUFBTSxlQUFlLENBQUM7OztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBNkIzQjtRQXpCUyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQTJDLE1BQU0sQ0FBQztRQUk3RCxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLG9CQUFlLEdBQVcsYUFBYSxDQUFDO1FBQ3hDLG1CQUFjLEdBQXFCLE1BQU0sQ0FBQztRQUMxQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdqQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFpQyxjQUFjLENBQUM7UUFDN0QseUJBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxPQUFPLENBQUM7UUFVOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FB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QyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQy9CLENBQUM7O2dIQXBIUSxrQkFBa0I7b0dBQWxCLGtCQUFrQiw2aUJDakMvQiw2MkNBd0NBOzRGRFBhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07MEVBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyBkZWZpbml0aW9uXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0aGF0IGlzIHBhcnNlZCBmb3IgaW5pdGlhbHMuIElmIHNob3dIaW50IGlzIHNldCB0byB0cnVlIHRoaXMgdGV4dCB3aWxsIGJlIHNob3duIGluIGhpbnRcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbG9yS2V5IC0gdmFsdWUgdGhhdCBpcyBiYXNlIGZvciBjYWxjdWxhdGluZyBjb2xvciBvZiBhdmF0YXJcclxuICogQHByb3BlcnR5IHtib29sZWFufSBzaG93SGludCAtIHNob3cgaGludCB3aXRoIHRleHRcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGluaXRpYWxzVGV4dCAtIG92ZXJyaWRlIGludGVybmFsIGV4dHJhY3Rpb24gb2YgaW5pdGlhbHMgYW5kIHNldCBhdmF0YXIgdGV4dCBkaXJlY3RseVxyXG4gKiBcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBpY3R1cmVVcmkgLSB1cmkgb2YgcGljdHVyZSB0byBzaG93IG9uIGF2YXRhclxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGljdHVyZUltYWdlQWx0IC0gYWx0IHRleHQgZm9yIGltYWdlLCBmb3IgYWNjZXNzaWJpbGl0eVxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGljdHVyZUxvYWRpbmcgLSBsb2FkaW5nIHN0cmF0ZWd5IGZvciBpbWFnZSwgbGF6eSBvciBlYWdlclxyXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHBpY3R1cmVQcmlvcml0eSAtIGlmIHRydWUgaW1hZ2UgaXMgY29uc2lkZXJlZCBoaWdoIHByaW9yaXR5IGFuZCB3aWxsIGJlIGxvYWRlZCBiZWZvcmUgb3RoZXIgaW1hZ2VzXHJcbiAqIFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFkZ2VWaXNpYmxlIC0gc2hvdyBiYWRnZSBvbiBhdmF0YXJcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGJhZGdlUG9zaXRpb24gLSBwb3NpdGlvbiBvZiBiYWRnZVxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFkZ2VCYWNrZ3JvdW5kQ29sb3IgLSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGJhZGdlXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYWRnZVRleHRDb2xvciAtIHRleHQgY29sb3Igb2YgYmFkZ2VcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGJhZGdlSGludCAtIGhpbnQgdGV4dCBmb3IgYmFkZ2VcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtYXZhdGFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIHRleHQ/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjb2xvcktleT86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHBpY3R1cmVVcmk/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaG93SGludDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgYm9yZGVyU3R5bGU6ICdzb2xpZCcgfCAnZGFzaGVkJyB8ICdkb3R0ZWQnIHwgJ25vbmUnID0gJ25vbmUnO1xyXG4gICAgQElucHV0KCkgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbml0aWFsc1RleHQ/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjdXJzb3I/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAyO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKSBwaWN0dXJlSW1hZ2VBbHQ6IHN0cmluZyA9ICdVc2VyIGF2YXRhcic7IFxyXG4gICAgQElucHV0KCkgcGljdHVyZUxvYWRpbmc6ICdsYXp5JyB8ICdlYWdlcicgPSAnbGF6eSc7IFxyXG4gICAgQElucHV0KCkgcGljdHVyZVByaW9yaXR5OiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuXHJcbiAgICBASW5wdXQoKSBiYWRnZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGJhZGdlUG9zaXRpb246ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1yaWdodCcgPSAnYm90dG9tLXJpZ2h0JztcclxuICAgIEBJbnB1dCgpIGJhZGdlQmFja2dyb3VuZENvbG9yID0gJ3ZhcigtLWJzLWRhbmdlciknO1xyXG4gICAgQElucHV0KCkgYmFkZ2VUZXh0Q29sb3IgPSAnd2hpdGUnO1xyXG4gICAgQElucHV0KCkgYmFkZ2VIaW50Pzogc3RyaW5nO1xyXG5cclxuXHJcbiAgICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuICAgIHB1YmxpYyBzaG93UGljdHVyZTogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBjb2xvckNsYXNzOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaW1hZ2VTaXplSW5QaXhlbHM6IG51bWJlcjsgLy8gQ2FsY3VsYXRlZCBmcm9tIHJlbSBzaXplXHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbCA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2hvd1BpY3R1cmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbG9yQ2xhc3MgPSAnY29sb3IxOCc7XHJcbiAgICAgICAgdGhpcy5pbWFnZVNpemVJblBpeGVscyA9IHRoaXMuY2FsY3VsYXRlUGl4ZWxTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0U2hvd1BpY3R1cmUoKTtcclxuICAgICAgICB0aGlzLnNldENvbG9yQ2xhc3MoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxzVGV4dCddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TGFiZWwoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0ZXh0J10pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRMYWJlbCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3BpY3R1cmVVcmknXSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNob3dQaWN0dXJlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snY29sb3JLZXknXSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q29sb3JDbGFzcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NpemUnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlU2l6ZUluUGl4ZWxzID0gdGhpcy5jYWxjdWxhdGVQaXhlbFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTaG93UGljdHVyZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3dQaWN0dXJlID0gISF0aGlzLnBpY3R1cmVVcmkgJiYgdGhpcy5waWN0dXJlVXJpPy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Q29sb3JDbGFzcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xvcktleSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yQ2xhc3MgPSAnY29sb3InICsgdGhpcy5nZXRDb2xvckluZGV4KHRoaXMuY29sb3JLZXkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3JDbGFzcyA9ICdjb2xvcjE4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRMYWJlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsc1RleHQgJiYgdGhpcy5pbml0aWFsc1RleHQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuaW5pdGlhbHNUZXh0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSAnJztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0Py5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxzRnJvbVRleHQgPSB0aGlzLnRleHRcclxuICAgICAgICAgICAgICAgICAgICAudHJpbSgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKG4pID0+IG5bMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih4ID0+ICEheCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxzRnJvbVRleHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwgPSBpbml0aWFsc0Zyb21UZXh0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsc0Zyb21UZXh0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbCA9IGAke3RoaXMubGFiZWx9JHtpbml0aWFsc0Zyb21UZXh0W2luaXRpYWxzRnJvbVRleHQubGVuZ3RoIC0gMV19YFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBpeGVsU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIC8vIENvbnZlcnQgcmVtIHRvIHBpeGVscyAoYXNzdW1pbmcgMXJlbSA9IDE2cHgsIHdoaWNoIGlzIHRoZSBicm93c2VyIGRlZmF1bHQpXHJcbiAgICAgICAgLy8gWW91IGNhbiBhZGp1c3QgdGhpcyBtdWx0aXBsaWVyIGJhc2VkIG9uIHlvdXIgcm9vdCBmb250LXNpemVcclxuICAgICAgICBjb25zdCByZW1Ub1BpeGVsUmF0aW8gPSAxNTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNpemUgKiByZW1Ub1BpeGVsUmF0aW8pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q29sb3JJbmRleChzOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IDEwO1xyXG4gICAgICAgIGlmICghcykge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN1bU9mQ2hhcnMgPSBzXHJcbiAgICAgICAgICAgIC5zcGxpdCgnJylcclxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5jaGFyQ29kZUF0KDApKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XHJcbiAgICAgICAgcmV0dXJuIHN1bU9mQ2hhcnMgJSBsZW5ndGg7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXZcclxuICAgIGNsYXNzPVwiYXZhdGFyIGNpcmNsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgW2NsYXNzXT1cImNvbG9yQ2xhc3NcIlxyXG4gICAgW2NsYXNzLmhhc1BpY3R1cmVdPVwic2hvd1BpY3R1cmVcIlxyXG4gICAgW3RpdGxlXT1cInNob3dIaW50ID8gdGV4dCA6ICcnXCJcclxuICAgIFtzdHlsZS5ib3JkZXItc3R5bGVdPVwiYm9yZGVyU3R5bGUudG9TdHJpbmcoKVwiXHJcbiAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cImJvcmRlckNvbG9yXCJcclxuICAgIFtzdHlsZS5jdXJzb3JdPVwiY3Vyc29yID8gY3Vyc29yIDogJ2RlZmF1bHQnXCJcclxuICAgIFtzdHlsZS5mb250LXNpemUucmVtXT1cInNpemVcIlxyXG4+XHJcbiAgICA8c3BhbiBcclxuICAgICAgICAqbmdJZj1cIiFzaG93UGljdHVyZVwiIFxyXG4gICAgICAgIGNsYXNzPVwiaW5pdGlhbHNcIlxyXG4gICAgICAgID5cclxuICAgICAgICB7eyBsYWJlbCB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxpbWcgXHJcbiAgICAgICAgKm5nSWY9XCJzaG93UGljdHVyZVwiIFxyXG4gICAgICAgIFtuZ1NyY109XCJwaWN0dXJlVXJpIVwiXHJcbiAgICAgICAgW3dpZHRoXT1cImltYWdlU2l6ZUluUGl4ZWxzXCJcclxuICAgICAgICBbaGVpZ2h0XT1cImltYWdlU2l6ZUluUGl4ZWxzXCJcclxuICAgICAgICBbYWx0XT1cInBpY3R1cmVJbWFnZUFsdFwiXHJcbiAgICAgICAgW2xvYWRpbmddPVwicGljdHVyZUxvYWRpbmdcIlxyXG4gICAgICAgIFtwcmlvcml0eV09XCJwaWN0dXJlUHJpb3JpdHlcIlxyXG4gICAgICAgIGNsYXNzPVwiYXZhdGFyLWltYWdlXCIgLz5cclxuXHJcbiAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYmFkZ2VWaXNpYmxlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBub3RpZmljYXRpb24tYmFkZ2UgYm9yZGVyIGJvcmRlci1saWdodCByb3VuZGVkLWNpcmNsZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50b3AtcmlnaHRdPVwiYmFkZ2VQb3NpdGlvbiA9PT0gJ3RvcC1yaWdodCdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm90dG9tLXJpZ2h0XT1cImJhZGdlUG9zaXRpb24gPT09ICdib3R0b20tcmlnaHQnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmFkZ2VCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiYmFkZ2VUZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiYmFkZ2VIaW50ID8gYmFkZ2VIaW50IDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgPC9zcGFuPlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR1IsTUFBTSxlQUFlLENBQUM7OztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBOEIzQjtRQTFCUyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQTJDLE1BQU0sQ0FBQztRQUk3RCxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLG9CQUFlLEdBQVcsYUFBYSxDQUFDO1FBQ3hDLG1CQUFjLEdBQXFCLE1BQU0sQ0FBQztRQUMxQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdqQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFpQyxjQUFjLENBQUM7UUFDN0QseUJBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxPQUFPLENBQUM7UUFRM0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFHbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FB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QUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzIGRlZmluaXRpb25cclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRoYXQgaXMgcGFyc2VkIGZvciBpbml0aWFscy4gSWYgc2hvd0hpbnQgaXMgc2V0IHRvIHRydWUgdGhpcyB0ZXh0IHdpbGwgYmUgc2hvd24gaW4gaGludFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29sb3JLZXkgLSB2YWx1ZSB0aGF0IGlzIGJhc2UgZm9yIGNhbGN1bGF0aW5nIGNvbG9yIG9mIGF2YXRhclxyXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dIaW50IC0gc2hvdyBoaW50IHdpdGggdGV4dFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5pdGlhbHNUZXh0IC0gb3ZlcnJpZGUgaW50ZXJuYWwgZXh0cmFjdGlvbiBvZiBpbml0aWFscyBhbmQgc2V0IGF2YXRhciB0ZXh0IGRpcmVjdGx5XHJcbiAqIFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGljdHVyZVVyaSAtIHVyaSBvZiBwaWN0dXJlIHRvIHNob3cgb24gYXZhdGFyIChzdXBwb3J0cyBodHRwL2h0dHBzIFVSTHMgYW5kIGJhc2U2NCBkYXRhIFVSSXMpXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwaWN0dXJlSW1hZ2VBbHQgLSBhbHQgdGV4dCBmb3IgaW1hZ2UsIGZvciBhY2Nlc3NpYmlsaXR5XHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwaWN0dXJlTG9hZGluZyAtIGxvYWRpbmcgc3RyYXRlZ3kgZm9yIGltYWdlLCBsYXp5IG9yIGVhZ2VyIChvbmx5IGFwcGxpZXMgdG8gVVJMcywgbm90IGJhc2U2NClcclxuICogQHByb3BlcnR5IHtib29sZWFufSBwaWN0dXJlUHJpb3JpdHkgLSBpZiB0cnVlIGltYWdlIGlzIGNvbnNpZGVyZWQgaGlnaCBwcmlvcml0eSBhbmQgd2lsbCBiZSBsb2FkZWQgYmVmb3JlIG90aGVyIGltYWdlcyAob25seSBhcHBsaWVzIHRvIFVSTHMsIG5vdCBiYXNlNjQpXHJcbiAqIFxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFkZ2VWaXNpYmxlIC0gc2hvdyBiYWRnZSBvbiBhdmF0YXJcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGJhZGdlUG9zaXRpb24gLSBwb3NpdGlvbiBvZiBiYWRnZVxyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmFkZ2VCYWNrZ3JvdW5kQ29sb3IgLSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGJhZGdlXHJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYWRnZVRleHRDb2xvciAtIHRleHQgY29sb3Igb2YgYmFkZ2VcclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGJhZGdlSGludCAtIGhpbnQgdGV4dCBmb3IgYmFkZ2VcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtYXZhdGFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIHRleHQ/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjb2xvcktleT86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHBpY3R1cmVVcmk/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaG93SGludDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgYm9yZGVyU3R5bGU6ICdzb2xpZCcgfCAnZGFzaGVkJyB8ICdkb3R0ZWQnIHwgJ25vbmUnID0gJ25vbmUnO1xyXG4gICAgQElucHV0KCkgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbml0aWFsc1RleHQ/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjdXJzb3I/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAyO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKSBwaWN0dXJlSW1hZ2VBbHQ6IHN0cmluZyA9ICdVc2VyIGF2YXRhcic7IFxyXG4gICAgQElucHV0KCkgcGljdHVyZUxvYWRpbmc6ICdsYXp5JyB8ICdlYWdlcicgPSAnbGF6eSc7IFxyXG4gICAgQElucHV0KCkgcGljdHVyZVByaW9yaXR5OiBib29sZWFuID0gZmFsc2U7IFxyXG5cclxuXHJcbiAgICBASW5wdXQoKSBiYWRnZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGJhZGdlUG9zaXRpb246ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1yaWdodCcgPSAnYm90dG9tLXJpZ2h0JztcclxuICAgIEBJbnB1dCgpIGJhZGdlQmFja2dyb3VuZENvbG9yID0gJ3ZhcigtLWJzLWRhbmdlciknO1xyXG4gICAgQElucHV0KCkgYmFkZ2VUZXh0Q29sb3IgPSAnd2hpdGUnO1xyXG4gICAgQElucHV0KCkgYmFkZ2VIaW50Pzogc3RyaW5nO1xyXG5cclxuXHJcbiAgICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuICAgIHB1YmxpYyBzaG93UGljdHVyZTogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBjb2xvckNsYXNzOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaW1hZ2VTaXplSW5QaXhlbHM6IG51bWJlcjtcclxuICAgIHB1YmxpYyBpc0Jhc2U2NEltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbCA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2hvd1BpY3R1cmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbG9yQ2xhc3MgPSAnY29sb3IxOCc7XHJcbiAgICAgICAgdGhpcy5pbWFnZVNpemVJblBpeGVscyA9IHRoaXMuY2FsY3VsYXRlUGl4ZWxTaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0U2hvd1BpY3R1cmUoKTtcclxuICAgICAgICB0aGlzLnNldENvbG9yQ2xhc3MoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxzVGV4dCddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TGFiZWwoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0ZXh0J10pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRMYWJlbCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3BpY3R1cmVVcmknXSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNob3dQaWN0dXJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJZkJhc2U2NCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2NvbG9yS2V5J10pe1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbG9yQ2xhc3MoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzaXplJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZVNpemVJblBpeGVscyA9IHRoaXMuY2FsY3VsYXRlUGl4ZWxTaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U2hvd1BpY3R1cmUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93UGljdHVyZSA9ICEhdGhpcy5waWN0dXJlVXJpICYmIHRoaXMucGljdHVyZVVyaT8ubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrSWZCYXNlNjQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucGljdHVyZVVyaSkge1xyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgVVJJIGlzIGEgZGF0YSBVUkkgKGJhc2U2NClcclxuICAgICAgICAgICAgdGhpcy5pc0Jhc2U2NEltYWdlID0gdGhpcy5waWN0dXJlVXJpLnN0YXJ0c1dpdGgoJ2RhdGE6Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc0Jhc2U2NEltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Q29sb3JDbGFzcygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xvcktleSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbG9yQ2xhc3MgPSAnY29sb3InICsgdGhpcy5nZXRDb2xvckluZGV4KHRoaXMuY29sb3JLZXkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3JDbGFzcyA9ICdjb2xvcjE4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRMYWJlbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsc1RleHQgJiYgdGhpcy5pbml0aWFsc1RleHQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuaW5pdGlhbHNUZXh0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSAnJztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50ZXh0Py5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxzRnJvbVRleHQgPSB0aGlzLnRleHRcclxuICAgICAgICAgICAgICAgICAgICAudHJpbSgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKG4pID0+IG5bMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih4ID0+ICEheCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxzRnJvbVRleHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwgPSBpbml0aWFsc0Zyb21UZXh0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsc0Zyb21UZXh0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbCA9IGAke3RoaXMubGFiZWx9JHtpbml0aWFsc0Zyb21UZXh0W2luaXRpYWxzRnJvbVRleHQubGVuZ3RoIC0gMV19YFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBpeGVsU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIC8vIENvbnZlcnQgcmVtIHRvIHBpeGVscyAoYXNzdW1pbmcgMXJlbSA9IDE2cHgsIHdoaWNoIGlzIHRoZSBicm93c2VyIGRlZmF1bHQpXHJcbiAgICAgICAgLy8gWW91IGNhbiBhZGp1c3QgdGhpcyBtdWx0aXBsaWVyIGJhc2VkIG9uIHlvdXIgcm9vdCBmb250LXNpemVcclxuICAgICAgICBjb25zdCByZW1Ub1BpeGVsUmF0aW8gPSAxNTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNpemUgKiByZW1Ub1BpeGVsUmF0aW8pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q29sb3JJbmRleChzOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IDEwO1xyXG4gICAgICAgIGlmICghcykge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN1bU9mQ2hhcnMgPSBzXHJcbiAgICAgICAgICAgIC5zcGxpdCgnJylcclxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5jaGFyQ29kZUF0KDApKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XHJcbiAgICAgICAgcmV0dXJuIHN1bU9mQ2hhcnMgJSBsZW5ndGg7XHJcbiAgICB9XHJcblxyXG59IiwiPGRpdlxyXG4gICAgY2xhc3M9XCJhdmF0YXIgY2lyY2xlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICBbY2xhc3NdPVwiY29sb3JDbGFzc1wiXHJcbiAgICBbY2xhc3MuaGFzUGljdHVyZV09XCJzaG93UGljdHVyZVwiXHJcbiAgICBbdGl0bGVdPVwic2hvd0hpbnQgPyB0ZXh0IDogJydcIlxyXG4gICAgW3N0eWxlLmJvcmRlci1zdHlsZV09XCJib3JkZXJTdHlsZS50b1N0cmluZygpXCJcclxuICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiYm9yZGVyQ29sb3JcIlxyXG4gICAgW3N0eWxlLmN1cnNvcl09XCJjdXJzb3IgPyBjdXJzb3IgOiAnZGVmYXVsdCdcIlxyXG4gICAgW3N0eWxlLmZvbnQtc2l6ZS5yZW1dPVwic2l6ZVwiXHJcbj5cclxuICAgIDxzcGFuIFxyXG4gICAgICAgICpuZ0lmPVwiIXNob3dQaWN0dXJlXCIgXHJcbiAgICAgICAgY2xhc3M9XCJpbml0aWFsc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPCEtLSBGb3IgYmFzZTY0IGltYWdlcywgdXNlIHJlZ3VsYXIgc3JjIGF0dHJpYnV0ZSAtLT5cclxuICAgIDxpbWcgXHJcbiAgICAgICAgKm5nSWY9XCJzaG93UGljdHVyZSAmJiBpc0Jhc2U2NEltYWdlXCIgXHJcbiAgICAgICAgW3NyY109XCJwaWN0dXJlVXJpXCJcclxuICAgICAgICBbd2lkdGhdPVwiaW1hZ2VTaXplSW5QaXhlbHNcIlxyXG4gICAgICAgIFtoZWlnaHRdPVwiaW1hZ2VTaXplSW5QaXhlbHNcIlxyXG4gICAgICAgIFthbHRdPVwicGljdHVyZUltYWdlQWx0XCJcclxuICAgICAgICBjbGFzcz1cImF2YXRhci1pbWFnZVwiIC8+XHJcblxyXG4gICAgPCEtLSBGb3IgVVJMIGltYWdlcywgdXNlIG5nU3JjIHdpdGggb3B0aW1pemF0aW9uIGZlYXR1cmVzIC0tPlxyXG4gICAgPGltZyBcclxuICAgICAgICAqbmdJZj1cInNob3dQaWN0dXJlICYmICFpc0Jhc2U2NEltYWdlXCIgXHJcbiAgICAgICAgW25nU3JjXT1cInBpY3R1cmVVcmkhXCJcclxuICAgICAgICBbd2lkdGhdPVwiaW1hZ2VTaXplSW5QaXhlbHNcIlxyXG4gICAgICAgIFtoZWlnaHRdPVwiaW1hZ2VTaXplSW5QaXhlbHNcIlxyXG4gICAgICAgIFthbHRdPVwicGljdHVyZUltYWdlQWx0XCJcclxuICAgICAgICBbbG9hZGluZ109XCJwaWN0dXJlTG9hZGluZ1wiXHJcbiAgICAgICAgW3ByaW9yaXR5XT1cInBpY3R1cmVQcmlvcml0eVwiXHJcbiAgICAgICAgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIiAvPlxyXG5cclxuICAgIDxzcGFuIFxyXG4gICAgICAgICpuZ0lmPVwiYmFkZ2VWaXNpYmxlXCJcclxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIG5vdGlmaWNhdGlvbi1iYWRnZSBib3JkZXIgYm9yZGVyLWxpZ2h0IHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbY2xhc3MudG9wLXJpZ2h0XT1cImJhZGdlUG9zaXRpb24gPT09ICd0b3AtcmlnaHQnXCJcclxuICAgICAgICBbY2xhc3MuYm90dG9tLXJpZ2h0XT1cImJhZGdlUG9zaXRpb24gPT09ICdib3R0b20tcmlnaHQnXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYWRnZUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhZGdlVGV4dENvbG9yXCJcclxuICAgICAgICBbdGl0bGVdPVwiYmFkZ2VIaW50ID8gYmFkZ2VIaW50IDogJydcIlxyXG4gICAgICAgID5cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+Il19
|
|
@@ -52,9 +52,19 @@ export class SdsNavigationGroupComponent {
|
|
|
52
52
|
const route = activeRoute.split('/').filter(item => item.length > 0);
|
|
53
53
|
this.currentUrl = route;
|
|
54
54
|
this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink);
|
|
55
|
+
console.debug(`Nav group [${this.text}] active check (NavigationEnd): isGroupActive = ${this.isGroupActive} for route ${this.currentUrl}, navigationGroupNestedRoutes = ${this.navigationGroupNestedRoutes}, defaultRouterLink = ${this.defaultRouterLink}`);
|
|
55
56
|
}
|
|
56
57
|
});
|
|
57
58
|
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
if (changes['navigationGroupNestedRoutes'] || changes['defaultRouterLink']) {
|
|
61
|
+
const activeRoute = this.ignoreQueryParamsInActiveRoute ? removeQueryParams(this._router.url) : this._router.url;
|
|
62
|
+
const route = activeRoute.split('/').filter(item => item.length > 0);
|
|
63
|
+
this.currentUrl = route;
|
|
64
|
+
this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink);
|
|
65
|
+
console.debug(`Nav group [${this.text}] active check (onChanges): isGroupActive = ${this.isGroupActive} for route ${this.currentUrl}, navigationGroupNestedRoutes = ${this.navigationGroupNestedRoutes}, defaultRouterLink = ${this.defaultRouterLink}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
58
68
|
ngOnDestroy() {
|
|
59
69
|
this._unsubscribe.next();
|
|
60
70
|
this._unsubscribe.complete();
|
|
@@ -70,7 +80,7 @@ export class SdsNavigationGroupComponent {
|
|
|
70
80
|
}
|
|
71
81
|
}
|
|
72
82
|
SdsNavigationGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsNavigationGroupComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
SdsNavigationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsNavigationGroupComponent, selector: "sds-navigation-group", inputs: { navigationGroupNestedRoutes: "navigationGroupNestedRoutes", text: "text", icon: "icon", defaultRouterLink: "defaultRouterLink", reverse: "reverse", ignoreQueryParamsInActiveRoute: "ignoreQueryParamsInActiveRoute", disabled: "disabled", showPopover: "showPopover", showPopoverHeader: "showPopoverHeader" }, queries: [{ propertyName: "routerLinkComponents", predicate: SdsNavigationRouteLinkComponent }], ngImport: i0, template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i4.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
|
|
83
|
+
SdsNavigationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsNavigationGroupComponent, selector: "sds-navigation-group", inputs: { navigationGroupNestedRoutes: "navigationGroupNestedRoutes", text: "text", icon: "icon", defaultRouterLink: "defaultRouterLink", reverse: "reverse", ignoreQueryParamsInActiveRoute: "ignoreQueryParamsInActiveRoute", disabled: "disabled", showPopover: "showPopover", showPopoverHeader: "showPopoverHeader" }, queries: [{ propertyName: "routerLinkComponents", predicate: SdsNavigationRouteLinkComponent }], usesOnChanges: true, ngImport: i0, template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i4.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
|
|
74
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsNavigationGroupComponent, decorators: [{
|
|
75
85
|
type: Component,
|
|
76
86
|
args: [{ selector: 'sds-navigation-group', template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"] }]
|
|
@@ -96,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
96
106
|
type: ContentChildren,
|
|
97
107
|
args: [SdsNavigationRouteLinkComponent]
|
|
98
108
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBR0wsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQU8xRixNQUFNLE9BQU8sMkJBQTJCO0lBUXBDLElBQ0ksMkJBQTJCLENBQUMsS0FBZTtRQUMzQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUM3QyxDQUFDO0lBNkJELFlBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBMUNuQzs7Ozs7V0FLRztRQUNLLGlD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QUFLO2dCQUNHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdOLG9CQUFvQjtzQkFEbkIsZUFBZTt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgZmFBbmdsZVVwLCBmYUFuZ2xlRG93biB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCwgcmVtb3ZlUXVlcnlQYXJhbXMgfSBmcm9tICcuLi91dGlscy9uYXZpZ2F0aW9uLnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtbmF2aWdhdGlvbi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNOYXZpZ2F0aW9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKipcclxuICAgICAqIExpc3Qgb2YgcGF0aHMgYWxsb3dlZC9leHBlY3RlZCB3aXRoaW4gdGhpcyBtb2R1bGUuXHJcbiAgICAgKiBUaGVzZSBhcmUgcGF0aHMgdGhhdCBhcmUgbm90IGFjY2Vzc2libGUgdGhyb3VnaCBjaGlsZCBuYXZpZ2F0aW9uXHJcbiAgICAgKiBlbGVtZW50cywgYnV0IHRocm91Z2ggbGlua3MgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGFwcGxpY2F0aW9uIChlLmcuIGxpbmtcclxuICAgICAqIG9uIGZvcm0pXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX25hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZ2V0IG5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBkZWZhdWx0Um91dGVyTGluazogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSByZXZlcnNlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBpZ25vcmVRdWVyeVBhcmFtc0luQWN0aXZlUm91dGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaG93UG9wb3ZlciA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2hvd1BvcG92ZXJIZWFkZXIgPSBmYWxzZTtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQpXHJcbiAgICByb3V0ZXJMaW5rQ29tcG9uZW50czogUXVlcnlMaXN0PFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQ+ID0gbmV3IFF1ZXJ5TGlzdDxTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50PigpO1xyXG5cclxuICAgIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGZhQW5nbGVVcFJlZ3VsYXIgPSBmYUFuZ2xlVXA7XHJcbiAgICBmYUFuZ2xlRG93blJlZ3VsYXIgPSBmYUFuZ2xlRG93bjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1cnJlbnQgYXBwIFVSTCAoZS5nLiBbJ2xheW91dC1zaG93Y2FzZScsICdkZWZhdWx0J10pXHJcbiAgICAgKi9cclxuICAgIGN1cnJlbnRVcmw6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBpc0dyb3VwQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5ldmVudHMucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKChldmVudDogYW55KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5pZ25vcmVRdWVyeVBhcmFtc0luQWN0aXZlUm91dGUgPyByZW1vdmVRdWVyeVBhcmFtcyhldmVudC51cmxBZnRlclJlZGlyZWN0cykgOiBldmVudC51cmxBZnRlclJlZGlyZWN0cztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmdbXSA9IGFjdGl2ZVJvdXRlLnNwbGl0KCcvJykuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sZW5ndGggPiAwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVybCA9IHJvdXRlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3VwQWN0aXZlID0gaXNVcmxQYXJ0T2ZOYXZpZ2F0aW9uR3JvdXAodGhpcy5jdXJyZW50VXJsLCB0aGlzLm5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcywgdGhpcy5kZWZhdWx0Um91dGVyTGluayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGluZyhlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwb3BvdmVyQ29udGVudCA9IGUuY29tcG9uZW50LmNvbnRlbnQoKS5wYXJlbnROb2RlO1xyXG4gICAgICAgIGNvbnN0IGlzTW91c2VJbnNpZGVQb3BvdmVyID0gcG9wb3ZlckNvbnRlbnQubWF0Y2hlcygnOmhvdmVyJyk7XHJcbiAgICAgICAgZS5jYW5jZWwgPSBpc01vdXNlSW5zaWRlUG9wb3ZlcjtcclxuXHJcbiAgICAgICAgcG9wb3ZlckNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcclxuICAgICAgICAgICAgcG9wb3ZlckNvbnRlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHt9KTtcclxuICAgICAgICAgICAgZS5jb21wb25lbnQuaGlkZSgpO1xyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBcclxuICAgICNuYXZpZ2F0aW9uR3JvdXBcclxuICAgIGNsYXNzPVwic2RzLW5hdmlnYXRpb24tZ3JvdXAgc2RzLW5hdmlnYXRpb24taXRlbS1jb250YWluZXIgZC1mbGV4XCJcclxuICAgIFtjbGFzcy5mbGV4LWNvbHVtbi1yZXZlcnNlXT1cInJldmVyc2VcIlxyXG4gICAgW2NsYXNzLmZsZXgtY29sdW1uXT1cIiFyZXZlcnNlXCJcclxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImlzR3JvdXBBY3RpdmVcIlxyXG4gICAgPlxyXG4gICAgPGEgXHJcbiAgICAgICAgY2xhc3M9XCJ3LTEwMCBzZHMtbmF2aWdhdGlvbi1pdGVtLWNvbnRlbnRcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICBbcm91dGVyTGlua109XCJbZGVmYXVsdFJvdXRlckxpbmtdXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLWljb25cIiA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmF2aWdhdGlvbkljb25dXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLXRleHQgdXNlci1zZWxlY3Qtbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgdGV4dCB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiIXJldmVyc2VcIiBbaWNvbl09XCJmYUFuZ2xlRG93blJlZ3VsYXJcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiAqbmdJZj1cInJldmVyc2VcIiBbaWNvbl09XCJmYUFuZ2xlVXBSZWd1bGFyXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNHcm91cEFjdGl2ZVwiIGNsYXNzPVwic2RzLW5hdmlnYXRpb24tZ3JvdXAtaXRlbXNcIj5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1BvcG92ZXIgJiYgIWlzR3JvdXBBY3RpdmVcIj5cclxuICAgIDxkeC1wb3BvdmVyXHJcbiAgICAgICAgW3RhcmdldF09XCJuYXZpZ2F0aW9uR3JvdXBcIlxyXG4gICAgICAgIFtzaG93RXZlbnRdPVwieyBuYW1lOiAnZHhob3ZlcnN0YXJ0JywgZGVsYXk6IDEwMCB9XCJcclxuICAgICAgICBbaGlkZUV2ZW50XT1cInsgbmFtZTogJ2R4aG92ZXJlbmQnLCBkZWxheTogMTAwIH1cIlxyXG4gICAgICAgIChvbkhpZGluZyk9XCJvbkhpZGluZygkZXZlbnQpXCJcclxuICAgICAgICB3aWR0aD1cIjE1cmVtXCJcclxuICAgICAgICBbd3JhcHBlckF0dHJdPVwieyBjbGFzczogJ3Nkcy1uYXZpZ2F0aW9uLWdyb3VwLXBvcG92ZXItd3JhcHBlciBzZHMtZHgtcG9wdXAtY29udGVudC1wYWRkaW5nLTInIH1cIlxyXG4gICAgICAgIFtoaWRlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2hpZGVPblBhcmVudFNjcm9sbF09XCJ0cnVlXCJcclxuICAgICAgICBbYW5pbWF0aW9uXT1cInt9XCJcclxuICAgID5cclxuXHJcbiAgICAgICAgPGR4by1wb3NpdGlvblxyXG4gICAgICAgICAgICBteT1cInRvcCBsZWZ0XCJcclxuICAgICAgICAgICAgYXQ9XCJ0b3AgcmlnaHRcIlxyXG4gICAgICAgICAgICBbb2ZdPVwibmF2aWdhdGlvbkdyb3VwXCJcclxuICAgICAgICAgICAgb2Zmc2V0PVwiLTEyIDBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgPC9keG8tcG9zaXRpb24+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UG9wb3ZlckhlYWRlclwiIGNsYXNzPVwiZ3JvdXAtaGVhZGVyIHVzZXItc2VsZWN0LW5vbmVcIj5cclxuICAgICAgICAgICAge3sgdGV4dCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLW5hdmlnYXRpb24tY29udGFpbmVyIHNkcy1uYXZpZ2F0aW9uLXBvcG92ZXItY29udGFpbmVyIHNkcy1zY3JvbGxiYXIgc2RzLXNjcm9sbGJhci10aGluIHNkcy1zY3JvbGxiYXItbm8taGlkZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLWdyb3VwLWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcG9wb3ZlckNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZHgtcG9wb3Zlcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBSUwsU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQU8xRixNQUFNLE9BQU8sMkJBQTJCO0lBUXBDLElBQ0ksMkJBQTJCLENBQUMsS0FBZTtRQUMzQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUM3QyxDQUFDO0lBNkJELFlBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBMUNuQzs7Ozs7V0FLRztRQUNLLGlD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QXpCLEtBQUs7Z0JBR04sb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgZmFBbmdsZVVwLCBmYUFuZ2xlRG93biB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCwgcmVtb3ZlUXVlcnlQYXJhbXMgfSBmcm9tICcuLi91dGlscy9uYXZpZ2F0aW9uLnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtbmF2aWdhdGlvbi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNOYXZpZ2F0aW9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBwYXRocyBhbGxvd2VkL2V4cGVjdGVkIHdpdGhpbiB0aGlzIG1vZHVsZS5cclxuICAgICAqIFRoZXNlIGFyZSBwYXRocyB0aGF0IGFyZSBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIGNoaWxkIG5hdmlnYXRpb25cclxuICAgICAqIGVsZW1lbnRzLCBidXQgdGhyb3VnaCBsaW5rcyBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb24gKGUuZy4gbGlua1xyXG4gICAgICogb24gZm9ybSlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBuYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXModmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBnZXQgbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIGRlZmF1bHRSb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHJldmVyc2UgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNob3dQb3BvdmVyID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaG93UG9wb3ZlckhlYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oU2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudClcclxuICAgIHJvdXRlckxpbmtDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0PFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQ+KCk7XHJcblxyXG4gICAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZmFBbmdsZVVwUmVndWxhciA9IGZhQW5nbGVVcDtcclxuICAgIGZhQW5nbGVEb3duUmVndWxhciA9IGZhQW5nbGVEb3duO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VycmVudCBhcHAgVVJMIChlLmcuIFsnbGF5b3V0LXNob3djYXNlJywgJ2RlZmF1bHQnXSlcclxuICAgICAqL1xyXG4gICAgY3VycmVudFVybDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGlzR3JvdXBBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSlcclxuICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA/IHJlbW92ZVF1ZXJ5UGFyYW1zKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA6IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZ1tdID0gYWN0aXZlUm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gcm91dGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBBY3RpdmUgPSBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCh0aGlzLmN1cnJlbnRVcmwsIHRoaXMubmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzLCB0aGlzLmRlZmF1bHRSb3V0ZXJMaW5rKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBOYXYgZ3JvdXAgWyR7dGhpcy50ZXh0fV0gYWN0aXZlIGNoZWNrIChOYXZpZ2F0aW9uRW5kKTogaXNHcm91cEFjdGl2ZSA9ICR7dGhpcy5pc0dyb3VwQWN0aXZlfSBmb3Igcm91dGUgJHt0aGlzLmN1cnJlbnRVcmx9LCBuYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXMgPSAke3RoaXMubmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzfSwgZGVmYXVsdFJvdXRlckxpbmsgPSAke3RoaXMuZGVmYXVsdFJvdXRlckxpbmt9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ25hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcyddIHx8IGNoYW5nZXNbJ2RlZmF1bHRSb3V0ZXJMaW5rJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA/IHJlbW92ZVF1ZXJ5UGFyYW1zKHRoaXMuX3JvdXRlci51cmwpIDogdGhpcy5fcm91dGVyLnVybDtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZ1tdID0gYWN0aXZlUm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVcmwgPSByb3V0ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNHcm91cEFjdGl2ZSA9IGlzVXJsUGFydE9mTmF2aWdhdGlvbkdyb3VwKHRoaXMuY3VycmVudFVybCwgdGhpcy5uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXMsIHRoaXMuZGVmYXVsdFJvdXRlckxpbmspO1xyXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBOYXYgZ3JvdXAgWyR7dGhpcy50ZXh0fV0gYWN0aXZlIGNoZWNrIChvbkNoYW5nZXMpOiBpc0dyb3VwQWN0aXZlID0gJHt0aGlzLmlzR3JvdXBBY3RpdmV9IGZvciByb3V0ZSAke3RoaXMuY3VycmVudFVybH0sIG5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcyA9ICR7dGhpcy5uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXN9LCBkZWZhdWx0Um91dGVyTGluayA9ICR7dGhpcy5kZWZhdWx0Um91dGVyTGlua31gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25IaWRpbmcoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgcG9wb3ZlckNvbnRlbnQgPSBlLmNvbXBvbmVudC5jb250ZW50KCkucGFyZW50Tm9kZTtcclxuICAgICAgICBjb25zdCBpc01vdXNlSW5zaWRlUG9wb3ZlciA9IHBvcG92ZXJDb250ZW50Lm1hdGNoZXMoJzpob3ZlcicpO1xyXG4gICAgICAgIGUuY2FuY2VsID0gaXNNb3VzZUluc2lkZVBvcG92ZXI7XHJcblxyXG4gICAgICAgIHBvcG92ZXJDb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHBvcG92ZXJDb250ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgIGUuY29tcG9uZW50LmhpZGUoKTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgXHJcbiAgICAjbmF2aWdhdGlvbkdyb3VwXHJcbiAgICBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLWdyb3VwIHNkcy1uYXZpZ2F0aW9uLWl0ZW0tY29udGFpbmVyIGQtZmxleFwiXHJcbiAgICBbY2xhc3MuZmxleC1jb2x1bW4tcmV2ZXJzZV09XCJyZXZlcnNlXCJcclxuICAgIFtjbGFzcy5mbGV4LWNvbHVtbl09XCIhcmV2ZXJzZVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJpc0dyb3VwQWN0aXZlXCJcclxuICAgID5cclxuICAgIDxhIFxyXG4gICAgICAgIGNsYXNzPVwidy0xMDAgc2RzLW5hdmlnYXRpb24taXRlbS1jb250ZW50XCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiW2RlZmF1bHRSb3V0ZXJMaW5rXVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1pY29uXCIgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25hdmlnYXRpb25JY29uXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi10ZXh0IHVzZXItc2VsZWN0LW5vbmVcIj5cclxuICAgICAgICAgICAgICAgIHt7IHRleHQgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiAqbmdJZj1cIiFyZXZlcnNlXCIgW2ljb25dPVwiZmFBbmdsZURvd25SZWd1bGFyXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gKm5nSWY9XCJyZXZlcnNlXCIgW2ljb25dPVwiZmFBbmdsZVVwUmVndWxhclwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImlzR3JvdXBBY3RpdmVcIiBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLWdyb3VwLWl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQb3BvdmVyICYmICFpc0dyb3VwQWN0aXZlXCI+XHJcbiAgICA8ZHgtcG9wb3ZlclxyXG4gICAgICAgIFt0YXJnZXRdPVwibmF2aWdhdGlvbkdyb3VwXCJcclxuICAgICAgICBbc2hvd0V2ZW50XT1cInsgbmFtZTogJ2R4aG92ZXJzdGFydCcsIGRlbGF5OiAxMDAgfVwiXHJcbiAgICAgICAgW2hpZGVFdmVudF09XCJ7IG5hbWU6ICdkeGhvdmVyZW5kJywgZGVsYXk6IDEwMCB9XCJcclxuICAgICAgICAob25IaWRpbmcpPVwib25IaWRpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgd2lkdGg9XCIxNXJlbVwiXHJcbiAgICAgICAgW3dyYXBwZXJBdHRyXT1cInsgY2xhc3M6ICdzZHMtbmF2aWdhdGlvbi1ncm91cC1wb3BvdmVyLXdyYXBwZXIgc2RzLWR4LXBvcHVwLWNvbnRlbnQtcGFkZGluZy0yJyB9XCJcclxuICAgICAgICBbaGlkZU9uT3V0c2lkZUNsaWNrXT1cInRydWVcIlxyXG4gICAgICAgIFtoaWRlT25QYXJlbnRTY3JvbGxdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2FuaW1hdGlvbl09XCJ7fVwiXHJcbiAgICA+XHJcblxyXG4gICAgICAgIDxkeG8tcG9zaXRpb25cclxuICAgICAgICAgICAgbXk9XCJ0b3AgbGVmdFwiXHJcbiAgICAgICAgICAgIGF0PVwidG9wIHJpZ2h0XCJcclxuICAgICAgICAgICAgW29mXT1cIm5hdmlnYXRpb25Hcm91cFwiXHJcbiAgICAgICAgICAgIG9mZnNldD1cIi0xMiAwXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgIDwvZHhvLXBvc2l0aW9uPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BvcG92ZXJIZWFkZXJcIiBjbGFzcz1cImdyb3VwLWhlYWRlciB1c2VyLXNlbGVjdC1ub25lXCI+XHJcbiAgICAgICAgICAgIHt7IHRleHQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICBjbGFzcz1cInNkcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBzZHMtbmF2aWdhdGlvbi1wb3BvdmVyLWNvbnRhaW5lciBzZHMtc2Nyb2xsYmFyIHNkcy1zY3JvbGxiYXItdGhpbiBzZHMtc2Nyb2xsYmFyLW5vLWhpZGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1ncm91cC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BvcG92ZXJDb250ZW50XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2R4LXBvcG92ZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
@@ -14,10 +14,10 @@ import { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';
|
|
|
14
14
|
* @property {boolean} showHint - show hint with text
|
|
15
15
|
* @property {string} initialsText - override internal extraction of initials and set avatar text directly
|
|
16
16
|
*
|
|
17
|
-
* @property {string} pictureUri - uri of picture to show on avatar
|
|
17
|
+
* @property {string} pictureUri - uri of picture to show on avatar (supports http/https URLs and base64 data URIs)
|
|
18
18
|
* @property {string} pictureImageAlt - alt text for image, for accessibility
|
|
19
|
-
* @property {string} pictureLoading - loading strategy for image, lazy or eager
|
|
20
|
-
* @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images
|
|
19
|
+
* @property {string} pictureLoading - loading strategy for image, lazy or eager (only applies to URLs, not base64)
|
|
20
|
+
* @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images (only applies to URLs, not base64)
|
|
21
21
|
*
|
|
22
22
|
* @property {string} badgeVisible - show badge on avatar
|
|
23
23
|
* @property {string} badgePosition - position of badge
|
|
@@ -37,6 +37,7 @@ class SdsAvatarComponent {
|
|
|
37
37
|
this.badgePosition = 'bottom-right';
|
|
38
38
|
this.badgeBackgroundColor = 'var(--bs-danger)';
|
|
39
39
|
this.badgeTextColor = 'white';
|
|
40
|
+
this.isBase64Image = false;
|
|
40
41
|
this.label = '';
|
|
41
42
|
this.showPicture = false;
|
|
42
43
|
this.colorClass = 'color18';
|
|
@@ -55,6 +56,7 @@ class SdsAvatarComponent {
|
|
|
55
56
|
}
|
|
56
57
|
if (changes['pictureUri']) {
|
|
57
58
|
this.setShowPicture();
|
|
59
|
+
this.checkIfBase64();
|
|
58
60
|
}
|
|
59
61
|
if (changes['colorKey']) {
|
|
60
62
|
this.setColorClass();
|
|
@@ -67,6 +69,15 @@ class SdsAvatarComponent {
|
|
|
67
69
|
var _a;
|
|
68
70
|
this.showPicture = !!this.pictureUri && ((_a = this.pictureUri) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
69
71
|
}
|
|
72
|
+
checkIfBase64() {
|
|
73
|
+
if (this.pictureUri) {
|
|
74
|
+
// Check if the URI is a data URI (base64)
|
|
75
|
+
this.isBase64Image = this.pictureUri.startsWith('data:');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.isBase64Image = false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
70
81
|
setColorClass() {
|
|
71
82
|
if (this.colorKey) {
|
|
72
83
|
this.colorClass = 'color' + this.getColorIndex(this.colorKey);
|
|
@@ -117,10 +128,10 @@ class SdsAvatarComponent {
|
|
|
117
128
|
}
|
|
118
129
|
}
|
|
119
130
|
SdsAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
-
SdsAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAvatarComponent, selector: "sds-avatar", inputs: { text: "text", colorKey: "colorKey", pictureUri: "pictureUri", showHint: "showHint", borderStyle: "borderStyle", borderColor: "borderColor", initialsText: "initialsText", cursor: "cursor", size: "size", pictureImageAlt: "pictureImageAlt", pictureLoading: "pictureLoading", picturePriority: "picturePriority", badgeVisible: "badgeVisible", badgePosition: "badgePosition", badgeBackgroundColor: "badgeBackgroundColor", badgeTextColor: "badgeTextColor", badgeHint: "badgeHint" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <img \r\n *ngIf=\"showPicture\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n
|
|
131
|
+
SdsAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsAvatarComponent, selector: "sds-avatar", inputs: { text: "text", colorKey: "colorKey", pictureUri: "pictureUri", showHint: "showHint", borderStyle: "borderStyle", borderColor: "borderColor", initialsText: "initialsText", cursor: "cursor", size: "size", pictureImageAlt: "pictureImageAlt", pictureLoading: "pictureLoading", picturePriority: "picturePriority", badgeVisible: "badgeVisible", badgePosition: "badgePosition", badgeBackgroundColor: "badgeBackgroundColor", badgeTextColor: "badgeTextColor", badgeHint: "badgeHint" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <!-- For base64 images, use regular src attribute -->\r\n <img \r\n *ngIf=\"showPicture && isBase64Image\" \r\n [src]=\"pictureUri\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n class=\"avatar-image\" />\r\n\r\n <!-- For URL images, use ngSrc with optimization features -->\r\n <img \r\n *ngIf=\"showPicture && !isBase64Image\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>", styles: [".avatar{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.avatar.color0{color:#f44336;background-color:#feeceb;border-width:1px;border-style:solid;border-color:#f4433680}.avatar.color1{color:#e91e63;background-color:#fde9ef;border-width:1px;border-style:solid;border-color:#e91e6380}.avatar.color2{color:#9c27b0;background-color:#f5e9f7;border-width:1px;border-style:solid;border-color:#9c27b080}.avatar.color3{color:#673ab7;background-color:#f0ebf8;border-width:1px;border-style:solid;border-color:#673ab780}.avatar.color4{color:#3f51b5;background-color:#eceef8;border-width:1px;border-style:solid;border-color:#3f51b580}.avatar.color5{color:#2196f3;background-color:#e9f5fe;border-width:1px;border-style:solid;border-color:#2196f380}.avatar.color6{color:#03a9f4;background-color:#e6f6fe;border-width:1px;border-style:solid;border-color:#03a9f480}.avatar.color7{color:#00bcd4;background-color:#e6f8fb;border-width:1px;border-style:solid;border-color:#00bcd480}.avatar.color8{color:#009688;background-color:#e6f5f3;border-width:1px;border-style:solid;border-color:#00968880}.avatar.color9{color:#8bc34a;background-color:#edf7ee;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color10{color:#8bc34a;background-color:#f3f9ed;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color11{color:#aebc21;background-color:#f7f8e9;border-width:1px;border-style:solid;border-color:#aebc2180}.avatar.color12{color:#d1bc04;background-color:#faf8e6;border-width:1px;border-style:solid;border-color:#d1bc0480}.avatar.color13{color:#edb201;background-color:#fdf7e6;border-width:1px;border-style:solid;border-color:#edb20180}.avatar.color14{color:#ff5722;background-color:#ffeee9;border-width:1px;border-style:solid;border-color:#ff572280}.avatar.color15{color:#e48901;background-color:#fcf3e6;border-width:1px;border-style:solid;border-color:#e4890180}.avatar.color16{color:#795548;background-color:#f2eeed;border-width:1px;border-style:solid;border-color:#79554880}.avatar.color17{color:#9e9e9e;background-color:#f5f5f5;border-width:1px;border-style:solid;border-color:#9e9e9e80}.avatar.color18{color:#607d8b;background-color:#eff2f3;border-width:1px;border-style:solid;border-color:#607d8b80}.avatar img{width:100%;height:100%;border-radius:50%}.avatar.circle{border-radius:50%;height:1em;text-align:center;width:1em}.avatar.circle .initials{font-size:.3703703704em;font-weight:500}.avatar.circle.hasPicture{border-width:0}.avatar .notification-badge{width:.4em;height:.4em}.avatar .notification-badge.top-right{top:0;right:0;transform:translate(20%)}.avatar .notification-badge.bottom-right{bottom:0;right:0;transform:translate(20%,10%)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
121
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsAvatarComponent, decorators: [{
|
|
122
133
|
type: Component,
|
|
123
|
-
args: [{ selector: 'sds-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <img \r\n *ngIf=\"showPicture\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n
|
|
134
|
+
args: [{ selector: 'sds-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <!-- For base64 images, use regular src attribute -->\r\n <img \r\n *ngIf=\"showPicture && isBase64Image\" \r\n [src]=\"pictureUri\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n class=\"avatar-image\" />\r\n\r\n <!-- For URL images, use ngSrc with optimization features -->\r\n <img \r\n *ngIf=\"showPicture && !isBase64Image\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>", styles: [".avatar{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.avatar.color0{color:#f44336;background-color:#feeceb;border-width:1px;border-style:solid;border-color:#f4433680}.avatar.color1{color:#e91e63;background-color:#fde9ef;border-width:1px;border-style:solid;border-color:#e91e6380}.avatar.color2{color:#9c27b0;background-color:#f5e9f7;border-width:1px;border-style:solid;border-color:#9c27b080}.avatar.color3{color:#673ab7;background-color:#f0ebf8;border-width:1px;border-style:solid;border-color:#673ab780}.avatar.color4{color:#3f51b5;background-color:#eceef8;border-width:1px;border-style:solid;border-color:#3f51b580}.avatar.color5{color:#2196f3;background-color:#e9f5fe;border-width:1px;border-style:solid;border-color:#2196f380}.avatar.color6{color:#03a9f4;background-color:#e6f6fe;border-width:1px;border-style:solid;border-color:#03a9f480}.avatar.color7{color:#00bcd4;background-color:#e6f8fb;border-width:1px;border-style:solid;border-color:#00bcd480}.avatar.color8{color:#009688;background-color:#e6f5f3;border-width:1px;border-style:solid;border-color:#00968880}.avatar.color9{color:#8bc34a;background-color:#edf7ee;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color10{color:#8bc34a;background-color:#f3f9ed;border-width:1px;border-style:solid;border-color:#8bc34a80}.avatar.color11{color:#aebc21;background-color:#f7f8e9;border-width:1px;border-style:solid;border-color:#aebc2180}.avatar.color12{color:#d1bc04;background-color:#faf8e6;border-width:1px;border-style:solid;border-color:#d1bc0480}.avatar.color13{color:#edb201;background-color:#fdf7e6;border-width:1px;border-style:solid;border-color:#edb20180}.avatar.color14{color:#ff5722;background-color:#ffeee9;border-width:1px;border-style:solid;border-color:#ff572280}.avatar.color15{color:#e48901;background-color:#fcf3e6;border-width:1px;border-style:solid;border-color:#e4890180}.avatar.color16{color:#795548;background-color:#f2eeed;border-width:1px;border-style:solid;border-color:#79554880}.avatar.color17{color:#9e9e9e;background-color:#f5f5f5;border-width:1px;border-style:solid;border-color:#9e9e9e80}.avatar.color18{color:#607d8b;background-color:#eff2f3;border-width:1px;border-style:solid;border-color:#607d8b80}.avatar img{width:100%;height:100%;border-radius:50%}.avatar.circle{border-radius:50%;height:1em;text-align:center;width:1em}.avatar.circle .initials{font-size:.3703703704em;font-weight:500}.avatar.circle.hasPicture{border-width:0}.avatar .notification-badge{width:.4em;height:.4em}.avatar .notification-badge.top-right{top:0;right:0;transform:translate(20%)}.avatar .notification-badge.bottom-right{bottom:0;right:0;transform:translate(20%,10%)}\n"] }]
|
|
124
135
|
}], ctorParameters: function () { return []; }, propDecorators: { text: [{
|
|
125
136
|
type: Input
|
|
126
137
|
}], colorKey: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-avatar.mjs","sources":["../../../projects/ngx-sds-components/src/lib/avatar/avatar.component.ts","../../../projects/ngx-sds-components/src/lib/avatar/avatar.component.html","../../../projects/ngx-sds-components/src/lib/avatar/avatar-group.component.ts","../../../projects/ngx-sds-components/src/lib/avatar/avatar-group.component.html","../../../projects/ngx-sds-components/src/lib/avatar/avatar.module.ts","../../../projects/ngx-sds-components/src/lib/avatar/spicainternational-ngx-sds-components-src-lib-avatar.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Class definition\r\n * @property {string} text - text that is parsed for initials. If showHint is set to true this text will be shown in hint\r\n * @property {string} colorKey - value that is base for calculating color of avatar\r\n * @property {boolean} showHint - show hint with text\r\n * @property {string} initialsText - override internal extraction of initials and set avatar text directly\r\n * \r\n * @property {string} pictureUri - uri of picture to show on avatar\r\n * @property {string} pictureImageAlt - alt text for image, for accessibility\r\n * @property {string} pictureLoading - loading strategy for image, lazy or eager\r\n * @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images\r\n * \r\n * @property {string} badgeVisible - show badge on avatar\r\n * @property {string} badgePosition - position of badge\r\n * @property {string} badgeBackgroundColor - background color of badge\r\n * @property {string} badgeTextColor - text color of badge\r\n * @property {string} badgeHint - hint text for badge\r\n */\r\n@Component({\r\n selector: 'sds-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAvatarComponent implements AfterViewInit, OnChanges {\r\n @Input() text?: string;\r\n @Input() colorKey?: string;\r\n @Input() pictureUri?: string;\r\n @Input() showHint: boolean = false;\r\n @Input() borderStyle: 'solid' | 'dashed' | 'dotted' | 'none' = 'none';\r\n @Input() borderColor?: string;\r\n @Input() initialsText?: string;\r\n @Input() cursor?: string;\r\n @Input() size: number = 2;\r\n\r\n\r\n @Input() pictureImageAlt: string = 'User avatar'; \r\n @Input() pictureLoading: 'lazy' | 'eager' = 'lazy'; \r\n @Input() picturePriority: boolean = false; \r\n\r\n\r\n @Input() badgeVisible: boolean = false;\r\n @Input() badgePosition: 'top-right' | 'bottom-right' = 'bottom-right';\r\n @Input() badgeBackgroundColor = 'var(--bs-danger)';\r\n @Input() badgeTextColor = 'white';\r\n @Input() badgeHint?: string;\r\n\r\n\r\n public label: string;\r\n public showPicture: boolean;\r\n public colorClass: string;\r\n public imageSizeInPixels: number; // Calculated from rem size\r\n\r\n constructor() {\r\n this.label = '';\r\n this.showPicture = false;\r\n this.colorClass = 'color18';\r\n this.imageSizeInPixels = this.calculatePixelSize();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setShowPicture();\r\n this.setColorClass();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['initialsText']) {\r\n this.setLabel();\r\n }\r\n\r\n if (changes['text']) {\r\n this.setLabel();\r\n }\r\n\r\n if (changes['pictureUri']) {\r\n this.setShowPicture();\r\n }\r\n\r\n if (changes['colorKey']){\r\n this.setColorClass();\r\n }\r\n\r\n if (changes['size']) {\r\n this.imageSizeInPixels = this.calculatePixelSize();\r\n }\r\n }\r\n\r\n private setShowPicture(): void {\r\n this.showPicture = !!this.pictureUri && this.pictureUri?.length > 0;\r\n }\r\n\r\n private setColorClass(): void {\r\n if (this.colorKey) {\r\n this.colorClass = 'color' + this.getColorIndex(this.colorKey);\r\n } else {\r\n this.colorClass = 'color18';\r\n }\r\n }\r\n\r\n private setLabel(): void {\r\n if (this.initialsText && this.initialsText?.length > 0) {\r\n this.label = this.initialsText;\r\n } else {\r\n this.label = '';\r\n\r\n if (this.text && this.text?.length > 0){\r\n const initialsFromText = this.text\r\n .trim()\r\n .toUpperCase()\r\n .split(' ')\r\n .map((n) => n[0])\r\n .filter(x => !!x);\r\n\r\n if (initialsFromText.length > 0) {\r\n this.label = initialsFromText[0];\r\n if (initialsFromText.length > 1) {\r\n this.label = `${this.label}${initialsFromText[initialsFromText.length - 1]}`\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private calculatePixelSize(): number {\r\n // Convert rem to pixels (assuming 1rem = 16px, which is the browser default)\r\n // You can adjust this multiplier based on your root font-size\r\n const remToPixelRatio = 15;\r\n return Math.round(this.size * remToPixelRatio);\r\n }\r\n\r\n private getColorIndex(s: string): number {\r\n const length = 10;\r\n if (!s) {\r\n return 0;\r\n }\r\n let sumOfChars = s\r\n .split('')\r\n .map((x) => x.charCodeAt(0))\r\n .reduce((a, b) => a + b, 0);\r\n return sumOfChars % length;\r\n }\r\n\r\n}\r\n","<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <img \r\n *ngIf=\"showPicture\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { AvatarModel } from './avatar-group.model';\r\n\r\n@Component({\r\n selector: 'sds-avatar-group',\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAvatarGroupComponent implements OnInit, OnChanges {\r\n\r\n @Input() public stacked;\r\n @Input() public max?: number;\r\n @Input() public size: number;\r\n @Input() public borderColor?: string;\r\n @Input() public avatars: Array<AvatarModel>;\r\n @Input() public dropdownContents: 'all' | 'overflow' = 'all';\r\n @Input() public dropdownMaxHeight: string = '';\r\n\r\n public overflow: Array<AvatarModel>;\r\n public inflow: Array<AvatarModel>;\r\n\r\n public overflowCountDisplay: string;\r\n public overFlowBorderStyle: 'solid' | 'none';\r\n\r\n public overflowElementUUID: string;\r\n public showDropdown: boolean;\r\n public showOverflow: boolean;\r\n\r\n public dropdownTargetId: string = '';\r\n public dropdownInitiator?: AvatarModel;\r\n\r\n constructor() {\r\n // this.overflowElementUUID = 'sds-ag-' + crypto.randomUUID();\r\n\r\n // init values in constructor so storybook doesn't have issues with initial state\r\n\r\n this.overflowElementUUID = `sds-ag-${Math.ceil(Math.random() * 1000000)}`;\r\n this.overFlowBorderStyle = 'none';\r\n this.showDropdown = false;\r\n this.showOverflow = false;\r\n this.avatars = [];\r\n this.overflow = [];\r\n this.inflow = [];\r\n this.overflowCountDisplay = '';\r\n this.size = 2;\r\n this.stacked = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['avatars'] || changes['max']){\r\n if (this.max && this.avatars) {\r\n let avatars = [...this.avatars];\r\n this.inflow = avatars.splice(0, this.max);\r\n this.overflow = avatars;\r\n this.showOverflow = this.overflow.length > 0;\r\n this.overflowCountDisplay = `+${Math.min(99, this.overflow.length)}`;\r\n this.overFlowBorderStyle = this.avatars.filter(x => x.borderStyle).length > 0 ? 'solid' : 'none';\r\n } else {\r\n this.inflow = [...this.avatars];\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public onOverflowClicked(event: MouseEvent, index: number, avatar?: AvatarModel) {\r\n event.stopPropagation();\r\n\r\n if (this.dropdownContents === 'overflow' && this.overflow.length === 0) {\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n const newDropdownTargetId = this.overflowElementUUID + index;\r\n if (this.showDropdown && this.dropdownTargetId === newDropdownTargetId) {\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n this.dropdownInitiator = avatar;\r\n this.dropdownTargetId = this.overflowElementUUID + index;\r\n this.showDropdown = true;\r\n }\r\n\r\n public stopEventPropagation(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"d-flex avatar-group-container\">\r\n <sds-avatar *ngFor=\"let avatar of inflow; let i = index\"\r\n [id]=\"overflowElementUUID + i\"\r\n [text]=\"avatar.text\"\r\n [colorKey]=\"avatar.colorKey\"\r\n [borderColor]=\"borderColor\"\r\n [borderStyle]=\"avatar.borderStyle ? avatar.borderStyle : 'none'\"\r\n cursor=\"pointer\"\r\n [pictureUri]=\"avatar.pictureUri ?? ''\"\r\n [showHint]=\"true\"\r\n [size]=\"size\"\r\n [style.margin-right.rem]=\"stacked ? size/-3 : size/15\"\r\n (click)=\"onOverflowClicked($event, i, avatar)\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (mouseup)=\"stopEventPropagation($event)\"\r\n >\r\n </sds-avatar>\r\n\r\n <sds-avatar\r\n *ngIf=\"showOverflow\"\r\n [id]=\"overflowElementUUID + '-1'\"\r\n class=\"overflow\"\r\n [initialsText]=\"overflowCountDisplay\"\r\n [borderColor]=\"borderColor\"\r\n [borderStyle]=\"overFlowBorderStyle\"\r\n cursor=\"pointer\"\r\n [size]=\"size\"\r\n (click)=\"onOverflowClicked($event, -1, undefined)\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (mouseup)=\"stopEventPropagation($event)\"\r\n >\r\n </sds-avatar>\r\n\r\n <dx-popover\r\n target=\"#{{dropdownTargetId}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-avatar-group-overflow-popover' }\"\r\n [maxHeight]=\"dropdownMaxHeight\"\r\n [hideOnOutsideClick]=\"true\"\r\n >\r\n <dx-scroll-view\r\n showScrollbar=\"always\">\r\n <div class=\"overflow-avatars-container rounded\">\r\n <div *ngFor=\"let avatar of (dropdownContents === 'all' ? avatars : overflow)\"\r\n class=\"d-flex align-items-center p-1 my-1 mx-1 overflow-avatar-container\" >\r\n <sds-avatar\r\n [text]=\"avatar.text\"\r\n [colorKey]=\"avatar.colorKey\"\r\n [borderStyle]=\"avatar.borderStyle ? avatar.borderStyle : 'none'\"\r\n [pictureUri]=\"avatar.pictureUri ?? ''\"\r\n borderColor=\"transparent\"\r\n [size]=\"1.8\"\r\n >\r\n </sds-avatar>\r\n <div \r\n class=\"ms-2 ps-1\"\r\n [class.sds-fw-600] = \"dropdownInitiator && dropdownInitiator.colorKey === avatar.colorKey\"\r\n >\r\n {{avatar.text}}\r\n </div>\r\n </div>\r\n </div>\r\n </dx-scroll-view>\r\n </dx-popover>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\n\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\r\n\r\nimport { SdsAvatarComponent } from './avatar.component';\r\nimport { SdsAvatarGroupComponent } from './avatar-group.component';\r\n\r\n\r\nconst components = [\r\n SdsAvatarComponent,\r\n SdsAvatarGroupComponent\r\n];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n DxPopoverModule,\r\n DxScrollViewModule,\r\n NgOptimizedImage\r\n\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsAvatarModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.SdsAvatarComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-avatar.mjs","sources":["../../../projects/ngx-sds-components/src/lib/avatar/avatar.component.ts","../../../projects/ngx-sds-components/src/lib/avatar/avatar.component.html","../../../projects/ngx-sds-components/src/lib/avatar/avatar-group.component.ts","../../../projects/ngx-sds-components/src/lib/avatar/avatar-group.component.html","../../../projects/ngx-sds-components/src/lib/avatar/avatar.module.ts","../../../projects/ngx-sds-components/src/lib/avatar/spicainternational-ngx-sds-components-src-lib-avatar.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Class definition\r\n * @property {string} text - text that is parsed for initials. If showHint is set to true this text will be shown in hint\r\n * @property {string} colorKey - value that is base for calculating color of avatar\r\n * @property {boolean} showHint - show hint with text\r\n * @property {string} initialsText - override internal extraction of initials and set avatar text directly\r\n * \r\n * @property {string} pictureUri - uri of picture to show on avatar (supports http/https URLs and base64 data URIs)\r\n * @property {string} pictureImageAlt - alt text for image, for accessibility\r\n * @property {string} pictureLoading - loading strategy for image, lazy or eager (only applies to URLs, not base64)\r\n * @property {boolean} picturePriority - if true image is considered high priority and will be loaded before other images (only applies to URLs, not base64)\r\n * \r\n * @property {string} badgeVisible - show badge on avatar\r\n * @property {string} badgePosition - position of badge\r\n * @property {string} badgeBackgroundColor - background color of badge\r\n * @property {string} badgeTextColor - text color of badge\r\n * @property {string} badgeHint - hint text for badge\r\n */\r\n@Component({\r\n selector: 'sds-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAvatarComponent implements AfterViewInit, OnChanges {\r\n @Input() text?: string;\r\n @Input() colorKey?: string;\r\n @Input() pictureUri?: string;\r\n @Input() showHint: boolean = false;\r\n @Input() borderStyle: 'solid' | 'dashed' | 'dotted' | 'none' = 'none';\r\n @Input() borderColor?: string;\r\n @Input() initialsText?: string;\r\n @Input() cursor?: string;\r\n @Input() size: number = 2;\r\n\r\n\r\n @Input() pictureImageAlt: string = 'User avatar'; \r\n @Input() pictureLoading: 'lazy' | 'eager' = 'lazy'; \r\n @Input() picturePriority: boolean = false; \r\n\r\n\r\n @Input() badgeVisible: boolean = false;\r\n @Input() badgePosition: 'top-right' | 'bottom-right' = 'bottom-right';\r\n @Input() badgeBackgroundColor = 'var(--bs-danger)';\r\n @Input() badgeTextColor = 'white';\r\n @Input() badgeHint?: string;\r\n\r\n\r\n public label: string;\r\n public showPicture: boolean;\r\n public colorClass: string;\r\n public imageSizeInPixels: number;\r\n public isBase64Image: boolean = false;\r\n\r\n constructor() {\r\n this.label = '';\r\n this.showPicture = false;\r\n this.colorClass = 'color18';\r\n this.imageSizeInPixels = this.calculatePixelSize();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setShowPicture();\r\n this.setColorClass();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['initialsText']) {\r\n this.setLabel();\r\n }\r\n\r\n if (changes['text']) {\r\n this.setLabel();\r\n }\r\n\r\n if (changes['pictureUri']) {\r\n this.setShowPicture();\r\n this.checkIfBase64();\r\n }\r\n\r\n if (changes['colorKey']){\r\n this.setColorClass();\r\n }\r\n\r\n if (changes['size']) {\r\n this.imageSizeInPixels = this.calculatePixelSize();\r\n }\r\n }\r\n\r\n private setShowPicture(): void {\r\n this.showPicture = !!this.pictureUri && this.pictureUri?.length > 0;\r\n }\r\n\r\n private checkIfBase64(): void {\r\n if (this.pictureUri) {\r\n // Check if the URI is a data URI (base64)\r\n this.isBase64Image = this.pictureUri.startsWith('data:');\r\n } else {\r\n this.isBase64Image = false;\r\n }\r\n }\r\n\r\n private setColorClass(): void {\r\n if (this.colorKey) {\r\n this.colorClass = 'color' + this.getColorIndex(this.colorKey);\r\n } else {\r\n this.colorClass = 'color18';\r\n }\r\n }\r\n\r\n private setLabel(): void {\r\n if (this.initialsText && this.initialsText?.length > 0) {\r\n this.label = this.initialsText;\r\n } else {\r\n this.label = '';\r\n\r\n if (this.text && this.text?.length > 0){\r\n const initialsFromText = this.text\r\n .trim()\r\n .toUpperCase()\r\n .split(' ')\r\n .map((n) => n[0])\r\n .filter(x => !!x);\r\n\r\n if (initialsFromText.length > 0) {\r\n this.label = initialsFromText[0];\r\n if (initialsFromText.length > 1) {\r\n this.label = `${this.label}${initialsFromText[initialsFromText.length - 1]}`\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private calculatePixelSize(): number {\r\n // Convert rem to pixels (assuming 1rem = 16px, which is the browser default)\r\n // You can adjust this multiplier based on your root font-size\r\n const remToPixelRatio = 15;\r\n return Math.round(this.size * remToPixelRatio);\r\n }\r\n\r\n private getColorIndex(s: string): number {\r\n const length = 10;\r\n if (!s) {\r\n return 0;\r\n }\r\n let sumOfChars = s\r\n .split('')\r\n .map((x) => x.charCodeAt(0))\r\n .reduce((a, b) => a + b, 0);\r\n return sumOfChars % length;\r\n }\r\n\r\n}","<div\r\n class=\"avatar circle d-flex justify-content-center align-items-center position-relative\"\r\n [class]=\"colorClass\"\r\n [class.hasPicture]=\"showPicture\"\r\n [title]=\"showHint ? text : ''\"\r\n [style.border-style]=\"borderStyle.toString()\"\r\n [style.border-color]=\"borderColor\"\r\n [style.cursor]=\"cursor ? cursor : 'default'\"\r\n [style.font-size.rem]=\"size\"\r\n>\r\n <span \r\n *ngIf=\"!showPicture\" \r\n class=\"initials\"\r\n >\r\n {{ label }}\r\n </span>\r\n\r\n <!-- For base64 images, use regular src attribute -->\r\n <img \r\n *ngIf=\"showPicture && isBase64Image\" \r\n [src]=\"pictureUri\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n class=\"avatar-image\" />\r\n\r\n <!-- For URL images, use ngSrc with optimization features -->\r\n <img \r\n *ngIf=\"showPicture && !isBase64Image\" \r\n [ngSrc]=\"pictureUri!\"\r\n [width]=\"imageSizeInPixels\"\r\n [height]=\"imageSizeInPixels\"\r\n [alt]=\"pictureImageAlt\"\r\n [loading]=\"pictureLoading\"\r\n [priority]=\"picturePriority\"\r\n class=\"avatar-image\" />\r\n\r\n <span \r\n *ngIf=\"badgeVisible\"\r\n class=\"position-absolute notification-badge border border-light rounded-circle\"\r\n [class.top-right]=\"badgePosition === 'top-right'\"\r\n [class.bottom-right]=\"badgePosition === 'bottom-right'\"\r\n [style.background-color]=\"badgeBackgroundColor\"\r\n [style.color]=\"badgeTextColor\"\r\n [title]=\"badgeHint ? badgeHint : ''\"\r\n >\r\n </span>\r\n</div>","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { AvatarModel } from './avatar-group.model';\r\n\r\n@Component({\r\n selector: 'sds-avatar-group',\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdsAvatarGroupComponent implements OnInit, OnChanges {\r\n\r\n @Input() public stacked;\r\n @Input() public max?: number;\r\n @Input() public size: number;\r\n @Input() public borderColor?: string;\r\n @Input() public avatars: Array<AvatarModel>;\r\n @Input() public dropdownContents: 'all' | 'overflow' = 'all';\r\n @Input() public dropdownMaxHeight: string = '';\r\n\r\n public overflow: Array<AvatarModel>;\r\n public inflow: Array<AvatarModel>;\r\n\r\n public overflowCountDisplay: string;\r\n public overFlowBorderStyle: 'solid' | 'none';\r\n\r\n public overflowElementUUID: string;\r\n public showDropdown: boolean;\r\n public showOverflow: boolean;\r\n\r\n public dropdownTargetId: string = '';\r\n public dropdownInitiator?: AvatarModel;\r\n\r\n constructor() {\r\n // this.overflowElementUUID = 'sds-ag-' + crypto.randomUUID();\r\n\r\n // init values in constructor so storybook doesn't have issues with initial state\r\n\r\n this.overflowElementUUID = `sds-ag-${Math.ceil(Math.random() * 1000000)}`;\r\n this.overFlowBorderStyle = 'none';\r\n this.showDropdown = false;\r\n this.showOverflow = false;\r\n this.avatars = [];\r\n this.overflow = [];\r\n this.inflow = [];\r\n this.overflowCountDisplay = '';\r\n this.size = 2;\r\n this.stacked = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['avatars'] || changes['max']){\r\n if (this.max && this.avatars) {\r\n let avatars = [...this.avatars];\r\n this.inflow = avatars.splice(0, this.max);\r\n this.overflow = avatars;\r\n this.showOverflow = this.overflow.length > 0;\r\n this.overflowCountDisplay = `+${Math.min(99, this.overflow.length)}`;\r\n this.overFlowBorderStyle = this.avatars.filter(x => x.borderStyle).length > 0 ? 'solid' : 'none';\r\n } else {\r\n this.inflow = [...this.avatars];\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public onOverflowClicked(event: MouseEvent, index: number, avatar?: AvatarModel) {\r\n event.stopPropagation();\r\n\r\n if (this.dropdownContents === 'overflow' && this.overflow.length === 0) {\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n const newDropdownTargetId = this.overflowElementUUID + index;\r\n if (this.showDropdown && this.dropdownTargetId === newDropdownTargetId) {\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n this.dropdownInitiator = avatar;\r\n this.dropdownTargetId = this.overflowElementUUID + index;\r\n this.showDropdown = true;\r\n }\r\n\r\n public stopEventPropagation(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"d-flex avatar-group-container\">\r\n <sds-avatar *ngFor=\"let avatar of inflow; let i = index\"\r\n [id]=\"overflowElementUUID + i\"\r\n [text]=\"avatar.text\"\r\n [colorKey]=\"avatar.colorKey\"\r\n [borderColor]=\"borderColor\"\r\n [borderStyle]=\"avatar.borderStyle ? avatar.borderStyle : 'none'\"\r\n cursor=\"pointer\"\r\n [pictureUri]=\"avatar.pictureUri ?? ''\"\r\n [showHint]=\"true\"\r\n [size]=\"size\"\r\n [style.margin-right.rem]=\"stacked ? size/-3 : size/15\"\r\n (click)=\"onOverflowClicked($event, i, avatar)\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (mouseup)=\"stopEventPropagation($event)\"\r\n >\r\n </sds-avatar>\r\n\r\n <sds-avatar\r\n *ngIf=\"showOverflow\"\r\n [id]=\"overflowElementUUID + '-1'\"\r\n class=\"overflow\"\r\n [initialsText]=\"overflowCountDisplay\"\r\n [borderColor]=\"borderColor\"\r\n [borderStyle]=\"overFlowBorderStyle\"\r\n cursor=\"pointer\"\r\n [size]=\"size\"\r\n (click)=\"onOverflowClicked($event, -1, undefined)\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (mouseup)=\"stopEventPropagation($event)\"\r\n >\r\n </sds-avatar>\r\n\r\n <dx-popover\r\n target=\"#{{dropdownTargetId}}\"\r\n [(visible)]=\"showDropdown\"\r\n [wrapperAttr]=\"{ class: 'sds-avatar-group-overflow-popover' }\"\r\n [maxHeight]=\"dropdownMaxHeight\"\r\n [hideOnOutsideClick]=\"true\"\r\n >\r\n <dx-scroll-view\r\n showScrollbar=\"always\">\r\n <div class=\"overflow-avatars-container rounded\">\r\n <div *ngFor=\"let avatar of (dropdownContents === 'all' ? avatars : overflow)\"\r\n class=\"d-flex align-items-center p-1 my-1 mx-1 overflow-avatar-container\" >\r\n <sds-avatar\r\n [text]=\"avatar.text\"\r\n [colorKey]=\"avatar.colorKey\"\r\n [borderStyle]=\"avatar.borderStyle ? avatar.borderStyle : 'none'\"\r\n [pictureUri]=\"avatar.pictureUri ?? ''\"\r\n borderColor=\"transparent\"\r\n [size]=\"1.8\"\r\n >\r\n </sds-avatar>\r\n <div \r\n class=\"ms-2 ps-1\"\r\n [class.sds-fw-600] = \"dropdownInitiator && dropdownInitiator.colorKey === avatar.colorKey\"\r\n >\r\n {{avatar.text}}\r\n </div>\r\n </div>\r\n </div>\r\n </dx-scroll-view>\r\n </dx-popover>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\n\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\nimport { DxScrollViewModule } from 'devextreme-angular/ui/scroll-view';\r\n\r\nimport { SdsAvatarComponent } from './avatar.component';\r\nimport { SdsAvatarGroupComponent } from './avatar-group.component';\r\n\r\n\r\nconst components = [\r\n SdsAvatarComponent,\r\n SdsAvatarGroupComponent\r\n];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n DxPopoverModule,\r\n DxScrollViewModule,\r\n NgOptimizedImage\r\n\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsAvatarModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.SdsAvatarComponent"],"mappings":"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"}
|