@agorapulse/ui-components 15.1.2 → 15.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/agorapulse-ui-components-15.1.4.tgz +0 -0
  2. package/esm2020/avatar/avatar.component.mjs +3 -2
  3. package/esm2020/index.mjs +2 -1
  4. package/esm2020/paginator/paginator-button/paginator-button.component.mjs +2 -2
  5. package/esm2020/paginator/paginator.component.mjs +92 -29
  6. package/esm2020/radio/agorapulse-ui-components-radio.mjs +5 -0
  7. package/esm2020/radio/public_api.mjs +3 -0
  8. package/esm2020/radio/radio-control.registry.mjs +104 -0
  9. package/esm2020/radio/radio.component.mjs +199 -0
  10. package/fesm2015/agorapulse-ui-components-avatar.mjs +2 -1
  11. package/fesm2015/agorapulse-ui-components-avatar.mjs.map +1 -1
  12. package/fesm2015/agorapulse-ui-components-paginator.mjs +93 -30
  13. package/fesm2015/agorapulse-ui-components-paginator.mjs.map +1 -1
  14. package/fesm2015/agorapulse-ui-components-radio.mjs +306 -0
  15. package/fesm2015/agorapulse-ui-components-radio.mjs.map +1 -0
  16. package/fesm2015/agorapulse-ui-components.mjs +1 -0
  17. package/fesm2015/agorapulse-ui-components.mjs.map +1 -1
  18. package/fesm2020/agorapulse-ui-components-avatar.mjs +2 -1
  19. package/fesm2020/agorapulse-ui-components-avatar.mjs.map +1 -1
  20. package/fesm2020/agorapulse-ui-components-paginator.mjs +93 -30
  21. package/fesm2020/agorapulse-ui-components-paginator.mjs.map +1 -1
  22. package/fesm2020/agorapulse-ui-components-radio.mjs +305 -0
  23. package/fesm2020/agorapulse-ui-components-radio.mjs.map +1 -0
  24. package/fesm2020/agorapulse-ui-components.mjs +1 -0
  25. package/fesm2020/agorapulse-ui-components.mjs.map +1 -1
  26. package/index.d.ts +1 -0
  27. package/package.json +9 -1
  28. package/paginator/paginator.component.d.ts +26 -8
  29. package/radio/index.d.ts +5 -0
  30. package/radio/public_api.d.ts +2 -0
  31. package/radio/radio-control.registry.d.ts +22 -0
  32. package/radio/radio.component.d.ts +57 -0
  33. package/snackbars-thread/component/snackbars-thread.component.d.ts +1 -1
  34. package/agorapulse-ui-components-15.1.2.tgz +0 -0
@@ -0,0 +1,104 @@
1
+ import { forwardRef, Injectable } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { RadioComponent } from './radio.component';
4
+ import * as i0 from "@angular/core";
5
+ export const RADIO_VALUE_ACCESSOR = {
6
+ provide: NG_VALUE_ACCESSOR,
7
+ useExisting: forwardRef(() => RadioComponent),
8
+ multi: true,
9
+ };
10
+ export class RadioControlRegistry {
11
+ constructor() {
12
+ this.accessors = [];
13
+ }
14
+ add(control, accessor) {
15
+ this.accessors.push([control, accessor]);
16
+ }
17
+ remove(accessor) {
18
+ this.accessors = this.accessors.filter(([, radioComponent]) => {
19
+ return radioComponent !== accessor;
20
+ });
21
+ }
22
+ select(accessor) {
23
+ this.accessors.forEach(([ngControl, radioComponent]) => {
24
+ if (this.isSameGroup(ngControl, radioComponent, accessor) && radioComponent !== accessor) {
25
+ radioComponent.writeValue(accessor.value);
26
+ }
27
+ });
28
+ }
29
+ getIndex(accessor) {
30
+ return this.accessors.findIndex(([, radioComponent]) => {
31
+ return radioComponent === accessor;
32
+ });
33
+ }
34
+ getNextRadio(accessor) {
35
+ const index = this.getIndex(accessor);
36
+ const nextIndex = index + 1;
37
+ if (nextIndex >= this.accessors.length) {
38
+ return this.accessors[0][1];
39
+ }
40
+ const nextRadio = this.accessors[nextIndex];
41
+ return nextRadio ? nextRadio[1] : null;
42
+ }
43
+ getPreviousRadio(accessor) {
44
+ const index = this.getIndex(accessor);
45
+ if (index === 0) {
46
+ return this.accessors[this.accessors.length - 1][1];
47
+ }
48
+ const previousIndex = index - 1;
49
+ const previousRadio = this.accessors[previousIndex];
50
+ return previousRadio ? previousRadio[1] : null;
51
+ }
52
+ blurAllGroup(accessor) {
53
+ this.accessors.forEach(([, radioComponent]) => {
54
+ if (this.isSameGroup(accessor.control, radioComponent, accessor)) {
55
+ radioComponent.inputElement.nativeElement.blur();
56
+ }
57
+ });
58
+ }
59
+ setNegativeTabIndexToAllExcept(accessor) {
60
+ this.accessors.forEach(([, radioComponent]) => {
61
+ if (this.isSameGroup(accessor.control, radioComponent, accessor)) {
62
+ if (accessor.radioId !== radioComponent.radioId) {
63
+ radioComponent.inputElement.nativeElement.tabIndex = -1;
64
+ }
65
+ else {
66
+ radioComponent.inputElement.nativeElement.tabIndex = 0;
67
+ }
68
+ }
69
+ });
70
+ }
71
+ focusPrevious(accessor) {
72
+ const previousRadio = this.getPreviousRadio(accessor);
73
+ if (previousRadio) {
74
+ previousRadio.inputElement.nativeElement.focus();
75
+ }
76
+ }
77
+ focusNext(accessor) {
78
+ const nextRadio = this.getNextRadio(accessor);
79
+ if (nextRadio) {
80
+ nextRadio.inputElement.nativeElement.focus();
81
+ }
82
+ }
83
+ getFirstCheckedRadio() {
84
+ const checkedRadio = this.accessors.find(([, radioComponent]) => {
85
+ return radioComponent.checked;
86
+ });
87
+ return checkedRadio ? checkedRadio[1] : null;
88
+ }
89
+ isSameGroup(ngControl, radioComponent, accessor) {
90
+ if (!ngControl.control) {
91
+ return false;
92
+ }
93
+ return radioComponent.name === accessor.name;
94
+ }
95
+ }
96
+ RadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
97
+ RadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: RadioControlRegistry, decorators: [{
99
+ type: Injectable,
100
+ args: [{
101
+ providedIn: 'root',
102
+ }]
103
+ }] });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY29udHJvbC5yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYWRpby9zcmMvcmFkaW8tY29udHJvbC5yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7O0FBRWpELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFhO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFDN0MsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBS0YsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlZLGNBQVMsR0FBa0MsRUFBRSxDQUFDO0tBNkZ6RDtJQTNGRyxHQUFHLENBQUMsT0FBa0IsRUFBRSxRQUF3QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBd0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQzFELE9BQU8sY0FBYyxLQUFLLFFBQVEsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBd0I7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQ25ELElB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QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksYUFBYSxFQUFFO1lBQ2YsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQXdCO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxTQUFTLEVBQUU7WUFDWCxTQUFTLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoRDtJQUNMLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRTtZQUM1RCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUFvQixFQUFFLGNBQThCLEVBQUUsUUFBd0I7UUFDOUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOztpSEE3RlEsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3J3YXJkUmVmLCBJbmplY3RhYmxlLCBQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7UmFkaW9Db21wb25lbnR9IGZyb20gJy4vcmFkaW8uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IFJBRElPX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0NvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xSZWdpc3RyeSB7XG4gICAgcHJpdmF0ZSBhY2Nlc3NvcnM6IFtOZ0NvbnRyb2wsIFJhZGlvQ29tcG9uZW50XVtdID0gW107XG5cbiAgICBhZGQoY29udHJvbDogTmdDb250cm9sLCBhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMucHVzaChbY29udHJvbCwgYWNjZXNzb3JdKTtcbiAgICB9XG5cbiAgICByZW1vdmUoYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzID0gdGhpcy5hY2Nlc3NvcnMuZmlsdGVyKChbLCByYWRpb0NvbXBvbmVudF0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiByYWRpb0NvbXBvbmVudCAhPT0gYWNjZXNzb3I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdChhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZm9yRWFjaCgoW25nQ29udHJvbCwgcmFkaW9Db21wb25lbnRdKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NhbWVHcm91cChuZ0NvbnRyb2wsIHJhZGlvQ29tcG9uZW50LCBhY2Nlc3NvcikgJiYgcmFkaW9Db21wb25lbnQgIT09IGFjY2Vzc29yKSB7XG4gICAgICAgICAgICAgICAgcmFkaW9Db21wb25lbnQud3JpdGVWYWx1ZShhY2Nlc3Nvci52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEluZGV4KGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc29ycy5maW5kSW5kZXgoKFssIHJhZGlvQ29tcG9uZW50XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJhZGlvQ29tcG9uZW50ID09PSBhY2Nlc3NvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TmV4dFJhZGlvKGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IFJhZGlvQ29tcG9uZW50IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KGFjY2Vzc29yKTtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICBpZiAobmV4dEluZGV4ID49IHRoaXMuYWNjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXNzb3JzWzBdWzFdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRSYWRpbyA9IHRoaXMuYWNjZXNzb3JzW25leHRJbmRleF07XG4gICAgICAgIHJldHVybiBuZXh0UmFkaW8gPyBuZXh0UmFkaW9bMV0gOiBudWxsO1xuICAgIH1cblxuICAgIGdldFByZXZpb3VzUmFkaW8oYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KTogUmFkaW9Db21wb25lbnQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoYWNjZXNzb3IpO1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc29yc1t0aGlzLmFjY2Vzc29ycy5sZW5ndGggLSAxXVsxXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gaW5kZXggLSAxO1xuICAgICAgICBjb25zdCBwcmV2aW91c1JhZGlvID0gdGhpcy5hY2Nlc3NvcnNbcHJldmlvdXNJbmRleF07XG4gICAgICAgIHJldHVybiBwcmV2aW91c1JhZGlvID8gcHJldmlvdXNSYWRpb1sxXSA6IG51bGw7XG4gICAgfVxuXG4gICAgYmx1ckFsbEdyb3VwKGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjY2Vzc29ycy5mb3JFYWNoKChbLCByYWRpb0NvbXBvbmVudF0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2FtZUdyb3VwKGFjY2Vzc29yLmNvbnRyb2wsIHJhZGlvQ29tcG9uZW50LCBhY2Nlc3NvcikpIHtcbiAgICAgICAgICAgICAgICByYWRpb0NvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldE5lZ2F0aXZlVGFiSW5kZXhUb0FsbEV4Y2VwdChhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZm9yRWFjaCgoWywgcmFkaW9Db21wb25lbnRdKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NhbWVHcm91cChhY2Nlc3Nvci5jb250cm9sLCByYWRpb0NvbXBvbmVudCwgYWNjZXNzb3IpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjY2Vzc29yLnJhZGlvSWQgIT09IHJhZGlvQ29tcG9uZW50LnJhZGlvSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmFkaW9Db21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByYWRpb0NvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb2N1c1ByZXZpb3VzKGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aW91c1JhZGlvID0gdGhpcy5nZXRQcmV2aW91c1JhZGlvKGFjY2Vzc29yKTtcbiAgICAgICAgaWYgKHByZXZpb3VzUmFkaW8pIHtcbiAgICAgICAgICAgIHByZXZpb3VzUmFkaW8uaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzTmV4dChhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV4dFJhZGlvID0gdGhpcy5nZXROZXh0UmFkaW8oYWNjZXNzb3IpO1xuICAgICAgICBpZiAobmV4dFJhZGlvKSB7XG4gICAgICAgICAgICBuZXh0UmFkaW8uaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpcnN0Q2hlY2tlZFJhZGlvKCk6IFJhZGlvQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNoZWNrZWRSYWRpbyA9IHRoaXMuYWNjZXNzb3JzLmZpbmQoKFssIHJhZGlvQ29tcG9uZW50XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJhZGlvQ29tcG9uZW50LmNoZWNrZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2hlY2tlZFJhZGlvID8gY2hlY2tlZFJhZGlvWzFdIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2FtZUdyb3VwKG5nQ29udHJvbDogTmdDb250cm9sLCByYWRpb0NvbXBvbmVudDogUmFkaW9Db21wb25lbnQsIGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIW5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJhZGlvQ29tcG9uZW50Lm5hbWUgPT09IGFjY2Vzc29yLm5hbWU7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,199 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Injector, Input, NgZone, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { CommonModule, NgIf } from '@angular/common';
3
+ import { SymbolComponent } from '@agorapulse/ui-symbol';
4
+ import { NgControl } from '@angular/forms';
5
+ import { RADIO_VALUE_ACCESSOR, RadioControlRegistry } from './radio-control.registry';
6
+ import { fromEvent, Subject, takeUntil } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ export class RadioComponent {
9
+ set disabled(disabled) {
10
+ this._disabled = disabled;
11
+ }
12
+ get disabled() {
13
+ return this._disabled;
14
+ }
15
+ constructor(elementRef) {
16
+ this.elementRef = elementRef;
17
+ this.injector = inject(Injector);
18
+ this.changeDetectorRef = inject(ChangeDetectorRef);
19
+ this.radioControlRegistry = inject(RadioControlRegistry);
20
+ this.ngZone = inject(NgZone);
21
+ this.ariaLabel = '';
22
+ this.ariaLabelledby = null;
23
+ this.labelPosition = 'right';
24
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
25
+ this.onClick = new EventEmitter();
26
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
27
+ this.onFocus = new EventEmitter();
28
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
29
+ this.onBlur = new EventEmitter();
30
+ this._disabled = false;
31
+ this.hasLabel = false;
32
+ this.focused = false;
33
+ this.radioIndex = 0;
34
+ this.destroy$ = new Subject();
35
+ this.onModelChange = () => {
36
+ // ignore
37
+ };
38
+ this.onModelTouched = () => {
39
+ // ignore
40
+ };
41
+ this.hostDataTest = elementRef.nativeElement.getAttribute('data-test');
42
+ this.ngZone.runOutsideAngular(() => {
43
+ fromEvent(window, 'keydown')
44
+ .pipe(takeUntil(this.destroy$))
45
+ .subscribe((event) => {
46
+ // Handle keydown event
47
+ switch (event.key) {
48
+ case 'ArrowDown':
49
+ case 'ArrowRight':
50
+ this.ngZone.run(() => {
51
+ if (this.focused) {
52
+ event.stopImmediatePropagation();
53
+ this.radioControlRegistry.blurAllGroup(this);
54
+ this.radioControlRegistry.focusNext(this);
55
+ }
56
+ });
57
+ break;
58
+ case 'ArrowUp':
59
+ case 'ArrowLeft':
60
+ this.ngZone.run(() => {
61
+ event.preventDefault();
62
+ if (this.focused) {
63
+ event.stopImmediatePropagation();
64
+ this.radioControlRegistry.blurAllGroup(this);
65
+ this.radioControlRegistry.focusPrevious(this);
66
+ }
67
+ });
68
+ break;
69
+ default:
70
+ return;
71
+ }
72
+ });
73
+ });
74
+ }
75
+ ngOnChanges() {
76
+ if (this.labelElement) {
77
+ this.hasLabel = !!this.labelElement.nativeElement.textContent.trim();
78
+ }
79
+ }
80
+ ngOnInit() {
81
+ this.control = this.injector.get(NgControl);
82
+ this.checkName();
83
+ this.radioControlRegistry.add(this.control, this);
84
+ this.radioIndex = this.radioControlRegistry.getIndex(this);
85
+ this.inputId = `${this.radioId}-${this.radioIndex}`;
86
+ }
87
+ ngAfterContentInit() {
88
+ if (this.labelElement) {
89
+ this.hasLabel = !!this.labelElement.nativeElement.textContent.trim();
90
+ }
91
+ }
92
+ ngOnDestroy() {
93
+ this.radioControlRegistry.remove(this);
94
+ this.destroy$.next();
95
+ this.destroy$.complete();
96
+ }
97
+ handleClick(event, radioButton) {
98
+ event.preventDefault();
99
+ if (this.disabled) {
100
+ return;
101
+ }
102
+ this.select(event);
103
+ radioButton.focus();
104
+ }
105
+ select(event) {
106
+ if (!this.disabled) {
107
+ this.inputElement.nativeElement.checked = true;
108
+ this.checked = true;
109
+ this.onModelChange(this.value);
110
+ this.radioControlRegistry.select(this);
111
+ this.onClick.emit({ originalEvent: event, value: this.value });
112
+ }
113
+ }
114
+ writeValue(value) {
115
+ this.checked = value == this.value;
116
+ if (this.inputElement?.nativeElement) {
117
+ this.inputElement.nativeElement.checked = this.checked;
118
+ }
119
+ this.changeDetectorRef.markForCheck();
120
+ }
121
+ registerOnChange(fn) {
122
+ this.onModelChange = fn;
123
+ }
124
+ registerOnTouched(fn) {
125
+ this.onModelTouched = fn;
126
+ }
127
+ onInputFocus(event) {
128
+ this.radioControlRegistry.setNegativeTabIndexToAllExcept(this);
129
+ this.inputElement.nativeElement.checked = true;
130
+ this.checked = true;
131
+ this.onModelChange(this.value);
132
+ this.focused = true;
133
+ this.onFocus.emit(event);
134
+ }
135
+ onInputBlur(event) {
136
+ this.focused = false;
137
+ this.onModelTouched();
138
+ this.onBlur.emit(event);
139
+ }
140
+ onChange(event) {
141
+ this.select(event);
142
+ }
143
+ checkName() {
144
+ if (this.name && this.formControlName && this.name !== this.formControlName) {
145
+ this.throwNameError();
146
+ }
147
+ if (!this.name && this.formControlName) {
148
+ this.name = this.formControlName;
149
+ }
150
+ }
151
+ throwNameError() {
152
+ throw new Error(`
153
+ If you define both a name and a formControlName attribute on your radio button, their values
154
+ must match. Ex: <p-radioButton formControlName="food" name="food"></p-radioButton>
155
+ `);
156
+ }
157
+ }
158
+ RadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: RadioComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
159
+ RadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: RadioComponent, isStandalone: true, selector: "ap-radio[value][radioId]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], disabled: "disabled", labelPosition: "labelPosition", radioId: "radioId", formControlName: "formControlName", value: "value", required: "required", name: "name" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "labelElement", first: true, predicate: ["label"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"radio-button-container\" [class.label-left]=\"labelPosition === 'left'\">\n <input\n #input\n type=\"radio\"\n tabindex=\"0\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name + '-radio-' + radioIndex\"\n [attr.value]=\"value\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.data-test]=\"hostDataTest ?? name\"\n [checked]=\"checked\"\n [class.disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\" />\n <div class=\"radio-button\" [class.disabled]=\"disabled\" (click)=\"handleClick($event, input)\"></div>\n <label [for]=\"inputId\" (click)=\"select($event)\">\n <ng-content></ng-content>\n </label>\n</div>\n", styles: ["ap-radio .radio-button-container{display:flex;gap:var(--ref-spacing-xxs)}ap-radio .radio-button-container.label-left{flex-direction:row-reverse}ap-radio .radio-button-container input[type=radio]{transform:scale(0);position:absolute}ap-radio .radio-button-container input[type=radio]:checked~.radio-button{border-color:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 3px var(--ref-color-white)}ap-radio .radio-button-container input[type=radio]:checked~.radio-button.disabled{background:var(--ref-color-grey-40);box-shadow:inset 0 0 0 3px var(--ref-color-grey-10)}ap-radio .radio-button-container input[type=radio]:checked:focus~.radio-button{border-color:var(--ref-color-electric-blue-100)}ap-radio .radio-button-container input[type=radio].disabled~.radio-button{pointer-events:none;cursor:default;box-shadow:inset 0 0 0 16px var(--ref-color-grey-10);border-color:var(--ref-color-grey-20)}ap-radio .radio-button-container input[type=radio].disabled~label{pointer-events:none;cursor:default;color:var(--ref-color-grey-60)}ap-radio .radio-button-container input[type=radio]:focus~.radio-button{outline:3px solid var(--ref-color-electric-blue-100);border-color:var(--ref-color-grey-80);outline-offset:1px}ap-radio .radio-button-container .radio-button{width:16px;height:16px;border-radius:100%;border:1px solid var(--ref-color-grey-60);background:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 16px var(--ref-color-white);transition:box-shadow var(--comp-radio-transition-duration)}ap-radio .radio-button-container .radio-button:hover:not(.disabled){cursor:pointer;border-color:var(--ref-color-grey-80)}ap-radio .radio-button-container label{display:flex;align-items:center;font-family:var(--sys-text-style-body-font-family);font-size:var(--sys-text-style-body-size);font-weight:var(--sys-text-style-body-weight);line-height:var(--sys-text-style-body-line-height);color:var(--ref-color-grey-100)}ap-radio .radio-button-container label:empty{display:none}ap-radio .radio-button-container label.disabled{color:var(--ref-color-grey-60)}ap-radio .radio-button-container label:hover:not(.disabled){cursor:pointer}ap-radio.ng-invalid.ng-dirty .radio-button{border-color:var(--ref-color-red-100)}ap-radio.ng-invalid.ng-dirty .radio-button:hover{border-color:var(--ref-color-red-60)}ap-radio.ng-invalid.ng-dirty input[type=radio]:focus~.radio-button{border-color:var(--ref-color-red-60)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: RadioComponent, decorators: [{
161
+ type: Component,
162
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-radio[value][radioId]', standalone: true, imports: [NgIf, SymbolComponent, CommonModule], providers: [RADIO_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<div class=\"radio-button-container\" [class.label-left]=\"labelPosition === 'left'\">\n <input\n #input\n type=\"radio\"\n tabindex=\"0\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name + '-radio-' + radioIndex\"\n [attr.value]=\"value\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.data-test]=\"hostDataTest ?? name\"\n [checked]=\"checked\"\n [class.disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\" />\n <div class=\"radio-button\" [class.disabled]=\"disabled\" (click)=\"handleClick($event, input)\"></div>\n <label [for]=\"inputId\" (click)=\"select($event)\">\n <ng-content></ng-content>\n </label>\n</div>\n", styles: ["ap-radio .radio-button-container{display:flex;gap:var(--ref-spacing-xxs)}ap-radio .radio-button-container.label-left{flex-direction:row-reverse}ap-radio .radio-button-container input[type=radio]{transform:scale(0);position:absolute}ap-radio .radio-button-container input[type=radio]:checked~.radio-button{border-color:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 3px var(--ref-color-white)}ap-radio .radio-button-container input[type=radio]:checked~.radio-button.disabled{background:var(--ref-color-grey-40);box-shadow:inset 0 0 0 3px var(--ref-color-grey-10)}ap-radio .radio-button-container input[type=radio]:checked:focus~.radio-button{border-color:var(--ref-color-electric-blue-100)}ap-radio .radio-button-container input[type=radio].disabled~.radio-button{pointer-events:none;cursor:default;box-shadow:inset 0 0 0 16px var(--ref-color-grey-10);border-color:var(--ref-color-grey-20)}ap-radio .radio-button-container input[type=radio].disabled~label{pointer-events:none;cursor:default;color:var(--ref-color-grey-60)}ap-radio .radio-button-container input[type=radio]:focus~.radio-button{outline:3px solid var(--ref-color-electric-blue-100);border-color:var(--ref-color-grey-80);outline-offset:1px}ap-radio .radio-button-container .radio-button{width:16px;height:16px;border-radius:100%;border:1px solid var(--ref-color-grey-60);background:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 16px var(--ref-color-white);transition:box-shadow var(--comp-radio-transition-duration)}ap-radio .radio-button-container .radio-button:hover:not(.disabled){cursor:pointer;border-color:var(--ref-color-grey-80)}ap-radio .radio-button-container label{display:flex;align-items:center;font-family:var(--sys-text-style-body-font-family);font-size:var(--sys-text-style-body-size);font-weight:var(--sys-text-style-body-weight);line-height:var(--sys-text-style-body-line-height);color:var(--ref-color-grey-100)}ap-radio .radio-button-container label:empty{display:none}ap-radio .radio-button-container label.disabled{color:var(--ref-color-grey-60)}ap-radio .radio-button-container label:hover:not(.disabled){cursor:pointer}ap-radio.ng-invalid.ng-dirty .radio-button{border-color:var(--ref-color-red-100)}ap-radio.ng-invalid.ng-dirty .radio-button:hover{border-color:var(--ref-color-red-60)}ap-radio.ng-invalid.ng-dirty input[type=radio]:focus~.radio-button{border-color:var(--ref-color-red-60)}\n"] }]
163
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { inputElement: [{
164
+ type: ViewChild,
165
+ args: ['input', { static: true }]
166
+ }], labelElement: [{
167
+ type: ViewChild,
168
+ args: ['label', { static: true }]
169
+ }], ariaLabel: [{
170
+ type: Input,
171
+ args: ['aria-label']
172
+ }], ariaLabelledby: [{
173
+ type: Input,
174
+ args: ['aria-labelledby']
175
+ }], ariaDescribedby: [{
176
+ type: Input,
177
+ args: ['aria-describedby']
178
+ }], disabled: [{
179
+ type: Input
180
+ }], labelPosition: [{
181
+ type: Input
182
+ }], radioId: [{
183
+ type: Input
184
+ }], formControlName: [{
185
+ type: Input
186
+ }], value: [{
187
+ type: Input
188
+ }], required: [{
189
+ type: Input
190
+ }], name: [{
191
+ type: Input
192
+ }], onClick: [{
193
+ type: Output
194
+ }], onFocus: [{
195
+ type: Output
196
+ }], onBlur: [{
197
+ type: Output
198
+ }] } });
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL3JhZGlvL3NyYy9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcmFkaW8vc3JjL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBdUIsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLG9CQUFvQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQVluRCxNQUFNLE9BQU8sY0FBYztJQVd2QixJQUFhLFFBQVEsQ0FBQyxRQUFpQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFzQ0QsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXREMUIsYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxzQkFBaUIsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUseUJBQW9CLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFFLFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFJNUIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFTdEQsa0JBQWEsR0FBcUIsT0FBTyxDQUFDO1FBT25ELCtEQUErRDtRQUNyRCxZQUFPLEdBR1osSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4QiwrREFBK0Q7UUFDckQsWUFBTyxHQUE2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpFLCtEQUErRDtRQUNyRCxXQUFNLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBSTFCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUNOLGFBQVEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV4RCxrQkFBYSxHQUE2QixHQUFHLEVBQUU7WUFDbEQsU0FBUztRQUNiLENBQUMsQ0FBQztRQUVLLG1CQUFjLEdBQWUsR0FBRyxFQUFFO1lBQ3JDLFNBQVM7UUFDYixDQUFDLENBQUM7UUFHRSxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO2lCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUNoQyx1QkFBdUI7Z0JBQ3ZCLFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtvQkFDZixLQUFLLFdBQVcsQ0FBQztvQkFDakIsS0FBSyxZQUFZO3dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTs0QkFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNkLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dDQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUM3Qzt3QkFDTCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxNQUFNO29CQUNWLEtBQUssU0FBUyxDQUFDO29CQUNmLEtBQUssV0FBVzt3QkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7NEJBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNkLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dDQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUNqRDt3QkFDTCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxNQUFNO29CQUNWO3dCQUNJLE9BQU87aUJBQ2Q7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3hFO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4RTtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQixFQUFFLFdBQTZCO1FBQ3hELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDMUQ7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFpQjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU8sU0FBUztRQUNiLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUM7OztTQUdmLENBQUMsQ0FBQztJQUNQLENBQUM7OzJHQTdMUSxjQUFjOytGQUFkLGNBQWMscWRBSlosQ0FBQyxvQkFBb0IsQ0FBQywwUUM5QnJDLG03QkF1QkEseTVFRE1xQyxZQUFZOzJGQUtwQyxjQUFjO2tCQVYxQixTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsMEJBQTBCLGNBRXhCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLGFBQ25DLENBQUMsb0JBQW9CLENBQUMsaUJBRWxCLGlCQUFpQixDQUFDLElBQUk7aUdBUUQsWUFBWTtzQkFBL0MsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNFLFlBQVk7c0JBQS9DLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDYixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ1osUUFBUTtzQkFBcEIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHSSxPQUFPO3NCQUFoQixNQUFNO2dCQU1HLE9BQU87c0JBQWhCLE1BQU07Z0JBR0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGUsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1N5bWJvbENvbXBvbmVudH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktc3ltYm9sJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSQURJT19WQUxVRV9BQ0NFU1NPUiwgUmFkaW9Db250cm9sUmVnaXN0cnl9IGZyb20gJy4vcmFkaW8tY29udHJvbC5yZWdpc3RyeSc7XG5pbXBvcnQge2Zyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcC1yYWRpb1t2YWx1ZV1bcmFkaW9JZF0nLFxuICAgIHN0eWxlVXJsczogWycuL3JhZGlvLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgU3ltYm9sQ29tcG9uZW50LCBDb21tb25Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvQ29udHJvbFJlZ2lzdHJ5OiBSYWRpb0NvbnRyb2xSZWdpc3RyeSA9IGluamVjdChSYWRpb0NvbnRyb2xSZWdpc3RyeSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2xhYmVsJywge3N0YXRpYzogdHJ1ZX0pIGxhYmVsRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgnYXJpYS1sYWJlbGxlZGJ5JykgYXJpYUxhYmVsbGVkYnk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgnYXJpYS1kZXNjcmliZWRieScpIGFyaWFEZXNjcmliZWRieTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIH1cblxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcbiAgICBASW5wdXQoKSByYWRpb0lkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdmFsdWU6IHVua25vd247XG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IEV2ZW50O1xuICAgICAgICB2YWx1ZTogdW5rbm93bjtcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBpbnB1dElkOiBzdHJpbmc7XG4gICAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgaGFzTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBob3N0RGF0YVRlc3Q6IHN0cmluZztcbiAgICBjb250cm9sOiBOZ0NvbnRyb2w7XG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcmFkaW9JbmRleDogbnVtYmVyID0gMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgIH07XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5ob3N0RGF0YVRlc3QgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXRlc3QnKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5ZG93bicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBrZXlkb3duIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmJsdXJBbGxHcm91cCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFkaW9Db250cm9sUmVnaXN0cnkuZm9jdXNOZXh0KHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmJsdXJBbGxHcm91cCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmFkaW9Db250cm9sUmVnaXN0cnkuZm9jdXNQcmV2aW91cyh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5oYXNMYWJlbCA9ICEhdGhpcy5sYWJlbEVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcbiAgICAgICAgdGhpcy5jaGVja05hbWUoKTtcbiAgICAgICAgdGhpcy5yYWRpb0NvbnRyb2xSZWdpc3RyeS5hZGQodGhpcy5jb250cm9sLCB0aGlzKTtcbiAgICAgICAgdGhpcy5yYWRpb0luZGV4ID0gdGhpcy5yYWRpb0NvbnRyb2xSZWdpc3RyeS5nZXRJbmRleCh0aGlzKTtcbiAgICAgICAgdGhpcy5pbnB1dElkID0gYCR7dGhpcy5yYWRpb0lkfS0ke3RoaXMucmFkaW9JbmRleH1gO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhhc0xhYmVsID0gISF0aGlzLmxhYmVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LnJlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCwgcmFkaW9CdXR0b246IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0KGV2ZW50KTtcbiAgICAgICAgcmFkaW9CdXR0b24uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LnNlbGVjdCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMub25DbGljay5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWUgPT0gdGhpcy52YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMucmFkaW9Db250cm9sUmVnaXN0cnkuc2V0TmVnYXRpdmVUYWJJbmRleFRvQWxsRXhjZXB0KHRoaXMpO1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3QoZXZlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tOYW1lKCkge1xuICAgICAgICBpZiAodGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMubmFtZSAhPT0gdGhpcy5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dOYW1lRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubmFtZSAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5mb3JtQ29udHJvbE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRocm93TmFtZUVycm9yKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICAgICAgbXVzdCBtYXRjaC4gRXg6IDxwLXJhZGlvQnV0dG9uIGZvcm1Db250cm9sTmFtZT1cImZvb2RcIiBuYW1lPVwiZm9vZFwiPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgYCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBbY2xhc3MubGFiZWwtbGVmdF09XCJsYWJlbFBvc2l0aW9uID09PSAnbGVmdCdcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWUgKyAnLXJhZGlvLScgKyByYWRpb0luZGV4XCJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4gICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCJob3N0RGF0YVRlc3QgPz8gbmFtZVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tYnV0dG9uXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaW5wdXQpXCI+PC9kaXY+XG4gICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZFwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9sYWJlbD5cbjwvZGl2PlxuIl19
@@ -98,7 +98,8 @@ class AvatarComponent {
98
98
  this.username$ = new BehaviorSubject('');
99
99
  this.online$ = new BehaviorSubject(false);
100
100
  this.showInitials$ = new BehaviorSubject(false);
101
- this.rounded$ = new BehaviorSubject(false);
101
+ this.rounded$ = new BehaviorSubject(true);
102
+ this.roundedAvatar = true;
102
103
  this.displayProfilePicture$ = new Observable();
103
104
  this.displaySingleNeutralSvg$ = new Observable();
104
105
  this.displayInitials$ = new Observable();
@@ -1 +1 @@
1
- {"version":3,"file":"agorapulse-ui-components-avatar.mjs","sources":["../../../libs/ui-components/avatar/src/avatar.component.ts","../../../libs/ui-components/avatar/src/avatar.component.html","../../../libs/ui-components/avatar/src/agorapulse-ui-components-avatar.ts"],"sourcesContent":["import {\n apFacebookOfficial,\n apGoogleMyBusinessOfficial,\n apLinkedinOfficial,\n apShowTheaterMaskHappy,\n apSingleNeutral,\n apTiktokOfficial,\n apTwitterOfficial,\n apYoutubeOfficial,\n apPinterestOfficial,\n SymbolComponent,\n SymbolRegistry,\n} from '@agorapulse/ui-symbol';\nimport {NgForOf, NgIf, NgOptimizedImage} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, of} from 'rxjs';\nimport {LetModule} from '@ngrx/component';\n\nexport type AvatarSize = 56 | 48 | 40 | 36 | 32 | 24 | 16;\nexport type AvatarNetwork =\n | 'facebook'\n | 'instagram'\n | 'twitter'\n | 'linkedin'\n | 'tiktok'\n | 'youtube'\n | 'pinterest'\n | 'googleMyBusiness';\n\nconst onlineIconSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 16,\n 48: 12,\n 40: 12,\n 36: 8,\n 32: 8,\n 24: 6,\n 16: 6,\n};\n\nconst symbolSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 28,\n 48: 24,\n 40: 20,\n 36: 18,\n 32: 16,\n 24: 12,\n 16: 8,\n};\n\nconst networkSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 16,\n 48: 16,\n 40: 16,\n 36: 16,\n 32: 12,\n 24: 12,\n 16: 8,\n};\n\nconst initialSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 28,\n 48: 24,\n 40: 22,\n 36: 18,\n 32: 18,\n 24: 14,\n 16: 10,\n};\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-avatar',\n styleUrls: ['./avatar.component.scss'],\n standalone: true,\n imports: [NgIf, NgForOf, NgOptimizedImage, SymbolComponent, LetModule],\n templateUrl: './avatar.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarComponent implements OnInit {\n readonly networkSymbolByNetwork: Record<AvatarNetwork, string> = {\n facebook: 'facebook-official',\n instagram: 'instagram-official',\n twitter: 'twitter-official',\n linkedin: 'linkedin-official',\n tiktok: 'tiktok-official',\n youtube: 'youtube-official',\n pinterest: 'pinterest-official',\n googleMyBusiness: 'google-my-business-official',\n };\n\n size$: BehaviorSubject<AvatarSize> = new BehaviorSubject<AvatarSize>(40);\n profilePicture$: BehaviorSubject<string | undefined> = new BehaviorSubject<string>('');\n network$: BehaviorSubject<AvatarNetwork> = new BehaviorSubject<AvatarNetwork>('facebook');\n\n private alternativeText$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private anonymous$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private username$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private online$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private showInitials$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private rounded$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n @Input() set alternativeText(alternativeText: string) {\n this.alternativeText$.next(alternativeText);\n }\n\n @Input() set anonymous(anonymous: boolean) {\n this.anonymous$.next(anonymous);\n }\n\n @Input() set username(username: string) {\n this.username$.next(username);\n }\n\n @Input() set network(network: AvatarNetwork) {\n this.network$.next(network);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-network-size',\n `${networkSizeByAvatarSize[this.size$.value]}px`\n );\n }\n\n @Input() set online(online: boolean) {\n this.online$.next(online);\n }\n\n @Input() set profilePicture(profilePicture: string | undefined) {\n this.profilePicture$.next(profilePicture);\n this.imageError$.next(false);\n }\n\n @Input() set showInitials(showInitials: boolean) {\n this.showInitials$.next(showInitials);\n }\n @Input() alt: string;\n\n @HostBinding('class.rounded-avatar')\n roundedAvatar: boolean;\n\n @Input()\n set rounded(rounded: boolean) {\n this.roundedAvatar = rounded;\n this.rounded$.next(rounded);\n }\n\n @Input() set size(size: AvatarSize) {\n this.size$.next(size);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `${size}px`);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[size]}px`);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-online-icon-size',\n `${onlineIconSizeByAvatarSize[size]}px`\n );\n }\n\n displayProfilePicture$: Observable<boolean> = new Observable<boolean>();\n displaySingleNeutralSvg$: Observable<boolean> = new Observable<boolean>();\n displayInitials$: Observable<boolean> = new Observable<boolean>();\n displayAnonymous$: Observable<boolean> = new Observable<boolean>();\n displayNetwork$: Observable<boolean> = new Observable<boolean>();\n displayOnline$: Observable<boolean> = new Observable<boolean>();\n imageError$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n initials$: Observable<string> = new Observable<string>();\n initialsAvailable$: Observable<boolean> = of(false);\n\n constructor(private symbolRegistry: SymbolRegistry, private elementRef: ElementRef) {\n this.symbolRegistry.registerSymbols([\n apSingleNeutral,\n apShowTheaterMaskHappy,\n apFacebookOfficial,\n apTwitterOfficial,\n apLinkedinOfficial,\n apYoutubeOfficial,\n apTiktokOfficial,\n apGoogleMyBusinessOfficial,\n apPinterestOfficial,\n ]);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `40px`);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-symbol-size',\n `${symbolSizeByAvatarSize[this.size$.value]}px`\n );\n }\n\n ngOnInit(): void {\n this.initialsAvailable$ = this.username$.pipe(\n map(username => {\n return !!username;\n })\n );\n\n this.displayProfilePicture$ = combineLatest([\n this.profilePicture$,\n this.anonymous$,\n this.imageError$,\n this.showInitials$,\n ]).pipe(\n map(([profilePicture, anonymous, imageError]) => {\n return !!profilePicture && !anonymous && !imageError;\n })\n );\n\n this.displayInitials$ = combineLatest([\n this.showInitials$,\n this.anonymous$,\n this.initialsAvailable$,\n this.displayProfilePicture$,\n ]).pipe(\n map(([showInitials, anonymous, initialsAvailable, displayProfilePicture]) => {\n return showInitials && !anonymous && initialsAvailable && !displayProfilePicture;\n })\n );\n\n this.displaySingleNeutralSvg$ = combineLatest([\n this.profilePicture$,\n this.imageError$,\n this.initialsAvailable$,\n this.showInitials$,\n this.anonymous$,\n this.displayInitials$,\n this.displayProfilePicture$,\n ]).pipe(\n map(\n ([\n profilePicture,\n imageError,\n initialsAvailable,\n showInitials,\n anonymous,\n displayInitials,\n displayProfilePicture,\n ]) => {\n return (\n (!profilePicture || imageError || !initialsAvailable || (initialsAvailable && !showInitials)) &&\n !anonymous &&\n !displayInitials &&\n !displayProfilePicture\n );\n }\n )\n );\n\n this.displayAnonymous$ = combineLatest([this.anonymous$, this.rounded$]).pipe(\n map(([anonymous, rounded]) => {\n return anonymous && rounded;\n })\n );\n\n this.displayOnline$ = combineLatest([this.online$, this.rounded$]).pipe(\n map(([online, rounded]) => {\n return online && rounded;\n })\n );\n\n this.displayNetwork$ = combineLatest([this.network$, this.rounded$]).pipe(\n map(([network, rounded]) => {\n return !!network && rounded;\n })\n );\n\n this.initials$ = combineLatest([this.displayInitials$, this.username$]).pipe(\n map(([displayInitials, username]) => {\n if (displayInitials && !username) {\n return '';\n }\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-initials-size',\n `${initialSizeByAvatarSize[this.size$.value]}px`\n );\n const names = username.split(' ');\n if (names.length === 1) {\n return `${names[0].charAt(0).toUpperCase()}${names[0].charAt(1).toUpperCase()}`;\n }\n return `${names[0].charAt(0).toUpperCase()}${names[names.length - 1].charAt(0).toUpperCase()}`;\n })\n );\n }\n\n onImageError(): void {\n this.imageError$.next(true);\n }\n}\n","<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$\n } as avatarViewModel\">\n <img\n *ngIf=\"avatarViewModel.displayProfilePicture\"\n [ngSrc]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n <div *ngIf=\"avatarViewModel.displaySingleNeutralSvg\" class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayAnonymous\" class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\"></ap-symbol>\n </div>\n <div *ngIf=\"avatarViewModel.displayOnline\" class=\"online\"></div>\n <div\n *ngIf=\"avatarViewModel.displayNetwork\"\n class=\"network\"\n [class.facebook]=\"avatarViewModel.network === 'facebook'\"\n [class.linkedin]=\"avatarViewModel.network === 'linkedin'\"\n [class.twitter]=\"avatarViewModel.network === 'twitter'\"\n [class.youtube]=\"avatarViewModel.network === 'youtube'\"\n [class.googleMyBusiness]=\"avatarViewModel.network === 'googleMyBusiness'\"\n [class.instagram]=\"avatarViewModel.network === 'instagram'\"\n [class.tiktok]=\"avatarViewModel.network === 'tiktok'\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayInitials\" class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agorapulse-ui-components-avatar.mjs","sources":["../../../libs/ui-components/avatar/src/avatar.component.ts","../../../libs/ui-components/avatar/src/avatar.component.html","../../../libs/ui-components/avatar/src/agorapulse-ui-components-avatar.ts"],"sourcesContent":["import {\n apFacebookOfficial,\n apGoogleMyBusinessOfficial,\n apLinkedinOfficial,\n apShowTheaterMaskHappy,\n apSingleNeutral,\n apTiktokOfficial,\n apTwitterOfficial,\n apYoutubeOfficial,\n apPinterestOfficial,\n SymbolComponent,\n SymbolRegistry,\n} from '@agorapulse/ui-symbol';\nimport {NgForOf, NgIf, NgOptimizedImage} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, of} from 'rxjs';\nimport {LetModule} from '@ngrx/component';\n\nexport type AvatarSize = 56 | 48 | 40 | 36 | 32 | 24 | 16;\nexport type AvatarNetwork =\n | 'facebook'\n | 'instagram'\n | 'twitter'\n | 'linkedin'\n | 'tiktok'\n | 'youtube'\n | 'pinterest'\n | 'googleMyBusiness';\n\nconst onlineIconSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 16,\n 48: 12,\n 40: 12,\n 36: 8,\n 32: 8,\n 24: 6,\n 16: 6,\n};\n\nconst symbolSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 28,\n 48: 24,\n 40: 20,\n 36: 18,\n 32: 16,\n 24: 12,\n 16: 8,\n};\n\nconst networkSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 16,\n 48: 16,\n 40: 16,\n 36: 16,\n 32: 12,\n 24: 12,\n 16: 8,\n};\n\nconst initialSizeByAvatarSize: Record<AvatarSize, number> = {\n 56: 28,\n 48: 24,\n 40: 22,\n 36: 18,\n 32: 18,\n 24: 14,\n 16: 10,\n};\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-avatar',\n styleUrls: ['./avatar.component.scss'],\n standalone: true,\n imports: [NgIf, NgForOf, NgOptimizedImage, SymbolComponent, LetModule],\n templateUrl: './avatar.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarComponent implements OnInit {\n readonly networkSymbolByNetwork: Record<AvatarNetwork, string> = {\n facebook: 'facebook-official',\n instagram: 'instagram-official',\n twitter: 'twitter-official',\n linkedin: 'linkedin-official',\n tiktok: 'tiktok-official',\n youtube: 'youtube-official',\n pinterest: 'pinterest-official',\n googleMyBusiness: 'google-my-business-official',\n };\n\n size$: BehaviorSubject<AvatarSize> = new BehaviorSubject<AvatarSize>(40);\n profilePicture$: BehaviorSubject<string | undefined> = new BehaviorSubject<string>('');\n network$: BehaviorSubject<AvatarNetwork> = new BehaviorSubject<AvatarNetwork>('facebook');\n\n private alternativeText$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private anonymous$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private username$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private online$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private showInitials$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private rounded$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n @Input() set alternativeText(alternativeText: string) {\n this.alternativeText$.next(alternativeText);\n }\n\n @Input() set anonymous(anonymous: boolean) {\n this.anonymous$.next(anonymous);\n }\n\n @Input() set username(username: string) {\n this.username$.next(username);\n }\n\n @Input() set network(network: AvatarNetwork) {\n this.network$.next(network);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-network-size',\n `${networkSizeByAvatarSize[this.size$.value]}px`\n );\n }\n\n @Input() set online(online: boolean) {\n this.online$.next(online);\n }\n\n @Input() set profilePicture(profilePicture: string | undefined) {\n this.profilePicture$.next(profilePicture);\n this.imageError$.next(false);\n }\n\n @Input() set showInitials(showInitials: boolean) {\n this.showInitials$.next(showInitials);\n }\n @Input() alt: string;\n\n @HostBinding('class.rounded-avatar')\n roundedAvatar: boolean = true;\n\n @Input()\n set rounded(rounded: boolean) {\n this.roundedAvatar = rounded;\n this.rounded$.next(rounded);\n }\n\n @Input() set size(size: AvatarSize) {\n this.size$.next(size);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `${size}px`);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[size]}px`);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-online-icon-size',\n `${onlineIconSizeByAvatarSize[size]}px`\n );\n }\n\n displayProfilePicture$: Observable<boolean> = new Observable<boolean>();\n displaySingleNeutralSvg$: Observable<boolean> = new Observable<boolean>();\n displayInitials$: Observable<boolean> = new Observable<boolean>();\n displayAnonymous$: Observable<boolean> = new Observable<boolean>();\n displayNetwork$: Observable<boolean> = new Observable<boolean>();\n displayOnline$: Observable<boolean> = new Observable<boolean>();\n imageError$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n initials$: Observable<string> = new Observable<string>();\n initialsAvailable$: Observable<boolean> = of(false);\n\n constructor(private symbolRegistry: SymbolRegistry, private elementRef: ElementRef) {\n this.symbolRegistry.registerSymbols([\n apSingleNeutral,\n apShowTheaterMaskHappy,\n apFacebookOfficial,\n apTwitterOfficial,\n apLinkedinOfficial,\n apYoutubeOfficial,\n apTiktokOfficial,\n apGoogleMyBusinessOfficial,\n apPinterestOfficial,\n ]);\n this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `40px`);\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-symbol-size',\n `${symbolSizeByAvatarSize[this.size$.value]}px`\n );\n }\n\n ngOnInit(): void {\n this.initialsAvailable$ = this.username$.pipe(\n map(username => {\n return !!username;\n })\n );\n\n this.displayProfilePicture$ = combineLatest([\n this.profilePicture$,\n this.anonymous$,\n this.imageError$,\n this.showInitials$,\n ]).pipe(\n map(([profilePicture, anonymous, imageError]) => {\n return !!profilePicture && !anonymous && !imageError;\n })\n );\n\n this.displayInitials$ = combineLatest([\n this.showInitials$,\n this.anonymous$,\n this.initialsAvailable$,\n this.displayProfilePicture$,\n ]).pipe(\n map(([showInitials, anonymous, initialsAvailable, displayProfilePicture]) => {\n return showInitials && !anonymous && initialsAvailable && !displayProfilePicture;\n })\n );\n\n this.displaySingleNeutralSvg$ = combineLatest([\n this.profilePicture$,\n this.imageError$,\n this.initialsAvailable$,\n this.showInitials$,\n this.anonymous$,\n this.displayInitials$,\n this.displayProfilePicture$,\n ]).pipe(\n map(\n ([\n profilePicture,\n imageError,\n initialsAvailable,\n showInitials,\n anonymous,\n displayInitials,\n displayProfilePicture,\n ]) => {\n return (\n (!profilePicture || imageError || !initialsAvailable || (initialsAvailable && !showInitials)) &&\n !anonymous &&\n !displayInitials &&\n !displayProfilePicture\n );\n }\n )\n );\n\n this.displayAnonymous$ = combineLatest([this.anonymous$, this.rounded$]).pipe(\n map(([anonymous, rounded]) => {\n return anonymous && rounded;\n })\n );\n\n this.displayOnline$ = combineLatest([this.online$, this.rounded$]).pipe(\n map(([online, rounded]) => {\n return online && rounded;\n })\n );\n\n this.displayNetwork$ = combineLatest([this.network$, this.rounded$]).pipe(\n map(([network, rounded]) => {\n return !!network && rounded;\n })\n );\n\n this.initials$ = combineLatest([this.displayInitials$, this.username$]).pipe(\n map(([displayInitials, username]) => {\n if (displayInitials && !username) {\n return '';\n }\n this.elementRef.nativeElement.style.setProperty(\n '--ap-avatar-initials-size',\n `${initialSizeByAvatarSize[this.size$.value]}px`\n );\n const names = username.split(' ');\n if (names.length === 1) {\n return `${names[0].charAt(0).toUpperCase()}${names[0].charAt(1).toUpperCase()}`;\n }\n return `${names[0].charAt(0).toUpperCase()}${names[names.length - 1].charAt(0).toUpperCase()}`;\n })\n );\n }\n\n onImageError(): void {\n this.imageError$.next(true);\n }\n}\n","<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$\n } as avatarViewModel\">\n <img\n *ngIf=\"avatarViewModel.displayProfilePicture\"\n [ngSrc]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n <div *ngIf=\"avatarViewModel.displaySingleNeutralSvg\" class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayAnonymous\" class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\"></ap-symbol>\n </div>\n <div *ngIf=\"avatarViewModel.displayOnline\" class=\"online\"></div>\n <div\n *ngIf=\"avatarViewModel.displayNetwork\"\n class=\"network\"\n [class.facebook]=\"avatarViewModel.network === 'facebook'\"\n [class.linkedin]=\"avatarViewModel.network === 'linkedin'\"\n [class.twitter]=\"avatarViewModel.network === 'twitter'\"\n [class.youtube]=\"avatarViewModel.network === 'youtube'\"\n [class.googleMyBusiness]=\"avatarViewModel.network === 'googleMyBusiness'\"\n [class.instagram]=\"avatarViewModel.network === 'instagram'\"\n [class.tiktok]=\"avatarViewModel.network === 'tiktok'\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\"></ap-symbol>\n </div>\n\n <div *ngIf=\"avatarViewModel.displayInitials\" class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}