@ieeesa-npm/dashboard 0.0.0-stage → 0.0.1

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 (63) hide show
  1. package/README.md +75 -3
  2. package/esm2022/ieeesa-npm-dashboard.mjs +5 -0
  3. package/esm2022/lib/assets/constants.json +141 -0
  4. package/esm2022/lib/assets/dashboard-mock.mjs +217 -0
  5. package/esm2022/lib/assets/dashboard-route-paths.mock.mjs +12 -0
  6. package/esm2022/lib/assets/dashboard-user-permissions.mock.mjs +23 -0
  7. package/esm2022/lib/assets/date-formats.mjs +28 -0
  8. package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +277 -0
  9. package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +181 -0
  10. package/esm2022/lib/components/member-level-badge/member-level-badge.component.mjs +79 -0
  11. package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +163 -0
  12. package/esm2022/lib/components/welcome-header/dashboard-welcome-header.component.mjs +151 -0
  13. package/esm2022/lib/components/your-groups/your-groups.component.mjs +206 -0
  14. package/esm2022/lib/dashboard.component.mjs +377 -0
  15. package/esm2022/lib/dashboard.module.mjs +16 -0
  16. package/esm2022/lib/dashboard.routes.mjs +7 -0
  17. package/esm2022/lib/models/attendance-action-permissions.model.mjs +2 -0
  18. package/esm2022/lib/models/attendance-state.model.mjs +7 -0
  19. package/esm2022/lib/models/dashboard-list-response.model.mjs +2 -0
  20. package/esm2022/lib/models/dashboard-route-config.model.mjs +2 -0
  21. package/esm2022/lib/models/dashboard-section-state.model.mjs +9 -0
  22. package/esm2022/lib/models/dashboard-user-info.model.mjs +2 -0
  23. package/esm2022/lib/models/group-row.model.mjs +2 -0
  24. package/esm2022/lib/models/meeting-row.model.mjs +2 -0
  25. package/esm2022/lib/models/page-change.model.mjs +2 -0
  26. package/esm2022/lib/models/upcoming-event.model.mjs +2 -0
  27. package/esm2022/lib/services/attendance-reducers.mjs +54 -0
  28. package/esm2022/lib/services/dashboard.service.mjs +208 -0
  29. package/esm2022/lib/services/user-permissions.service.mjs +50 -0
  30. package/esm2022/lib/utils/attendance-action.util.mjs +53 -0
  31. package/esm2022/public-api.mjs +34 -0
  32. package/fesm2022/ieeesa-npm-dashboard.mjs +2234 -0
  33. package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -0
  34. package/index.d.ts +5 -0
  35. package/lib/assets/dashboard-mock.d.ts +31 -0
  36. package/lib/assets/dashboard-route-paths.mock.d.ts +2 -0
  37. package/lib/assets/dashboard-user-permissions.mock.d.ts +2 -0
  38. package/lib/assets/date-formats.d.ts +27 -0
  39. package/lib/components/event-group-card/event-group-card.component.d.ts +300 -0
  40. package/lib/components/meeting-attendance-row/meeting-attendance-row.component.d.ts +239 -0
  41. package/lib/components/member-level-badge/member-level-badge.component.d.ts +161 -0
  42. package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +238 -0
  43. package/lib/components/welcome-header/dashboard-welcome-header.component.d.ts +98 -0
  44. package/lib/components/your-groups/your-groups.component.d.ts +110 -0
  45. package/lib/dashboard.component.d.ts +376 -0
  46. package/lib/dashboard.module.d.ts +7 -0
  47. package/lib/dashboard.routes.d.ts +2 -0
  48. package/lib/models/attendance-action-permissions.model.d.ts +4 -0
  49. package/lib/models/attendance-state.model.d.ts +4 -0
  50. package/lib/models/dashboard-list-response.model.d.ts +5 -0
  51. package/lib/models/dashboard-route-config.model.d.ts +7 -0
  52. package/lib/models/dashboard-section-state.model.d.ts +6 -0
  53. package/lib/models/dashboard-user-info.model.d.ts +5 -0
  54. package/lib/models/group-row.model.d.ts +8 -0
  55. package/lib/models/meeting-row.model.d.ts +12 -0
  56. package/lib/models/page-change.model.d.ts +4 -0
  57. package/lib/models/upcoming-event.model.d.ts +13 -0
  58. package/lib/services/attendance-reducers.d.ts +43 -0
  59. package/lib/services/dashboard.service.d.ts +119 -0
  60. package/lib/services/user-permissions.service.d.ts +31 -0
  61. package/lib/utils/attendance-action.util.d.ts +38 -0
  62. package/package.json +30 -3
  63. package/public-api.d.ts +24 -0
@@ -0,0 +1,181 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
3
+ import { DateTime } from 'luxon';
4
+ import { AttendanceState } from '../../models/attendance-state.model';
5
+ import { DateFormats } from '../../assets/date-formats';
6
+ import { AttendanceAction, resolveAttendanceAction, } from '../../utils/attendance-action.util';
7
+ import * as constants from '../../assets/constants.json';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ /**
11
+ * Meeting_Attendance_Row renders a single meeting within an event-group card:
12
+ * the meeting-name link, group/committee, room/location, date, and
13
+ * time+timezone (all luxon-formatted), together with the attendance action
14
+ * button that drives the per-meeting attendance state machine.
15
+ *
16
+ * The component is purely presentational — it emits navigation and attendance
17
+ * intents via `@Output()` and never performs navigation or HTTP itself. The
18
+ * action button delegates to the pure `resolveAttendanceAction` handler so the
19
+ * emit/guard logic is shared with the property-tested core (Property 1), and the
20
+ * displayed state only advances when the host updates `attendanceState`.
21
+ * @export
22
+ * @class MeetingAttendanceRowComponent
23
+ */
24
+ export class MeetingAttendanceRowComponent {
25
+ constructor() {
26
+ this.constants = constants;
27
+ /** The current attendance state controlling label/indicator and action. */
28
+ this.attendanceState = AttendanceState.NOT_ATTENDING;
29
+ /** Whether an attendance action for this meeting is awaiting resolution. */
30
+ this.isInFlight = false;
31
+ /** Host permissions gating the log-attendance / leave-meeting buttons. */
32
+ this.permissions = {
33
+ canLogAttendance: false,
34
+ canLeaveMeeting: false,
35
+ };
36
+ /** Emits the meeting id when the meeting-name link is activated (Req 7.4). */
37
+ this.openMeeting = new EventEmitter();
38
+ /** Emits the meeting id to request logging attendance (Req 7.7). */
39
+ this.logAttendance = new EventEmitter();
40
+ /** Emits the meeting id to request leaving the meeting (Req 7.8). */
41
+ this.leaveMeeting = new EventEmitter();
42
+ /** Expose the enum to the template for state comparisons. */
43
+ this.AttendanceState = AttendanceState;
44
+ }
45
+ /**
46
+ * Whether this row is actionable — a non-empty `meetingId` is required for the
47
+ * meeting-name link and action button to emit anything (Req 7.10).
48
+ * @return {boolean} True when the row has a usable meeting id.
49
+ * @memberof MeetingAttendanceRowComponent
50
+ */
51
+ get isActionable() {
52
+ return !!this.meeting?.meetingId;
53
+ }
54
+ /**
55
+ * Whether the row is in the currently-attending state, which shows the
56
+ * currently-attending indicator and the leave-meeting action (Req 7.5).
57
+ * @return {boolean} True when the attendance state is `CURRENTLY_ATTENDING`.
58
+ * @memberof MeetingAttendanceRowComponent
59
+ */
60
+ get isCurrentlyAttending() {
61
+ return this.attendanceState === AttendanceState.CURRENTLY_ATTENDING;
62
+ }
63
+ /**
64
+ * Whether the log-attendance button should be shown: only when the row is in
65
+ * the log state (not currently attending) and the host grants
66
+ * `canLogAttendance` (Req 7.6, 12.1).
67
+ * @return {boolean} True when the log-attendance button is visible.
68
+ * @memberof MeetingAttendanceRowComponent
69
+ */
70
+ get showLogAttendanceButton() {
71
+ return !this.isCurrentlyAttending && !!this.permissions?.canLogAttendance;
72
+ }
73
+ /**
74
+ * Whether the leave-meeting button should be shown: only when the row is in
75
+ * the currently-attending state and the host grants `canLeaveMeeting`
76
+ * (Req 7.5, 12.2).
77
+ * @return {boolean} True when the leave-meeting button is visible.
78
+ * @memberof MeetingAttendanceRowComponent
79
+ */
80
+ get showLeaveMeetingButton() {
81
+ return this.isCurrentlyAttending && !!this.permissions?.canLeaveMeeting;
82
+ }
83
+ /**
84
+ * Resolves a group-or-committee / room-or-location field value, substituting
85
+ * the empty-field placeholder from `constants.json` when the value is empty or
86
+ * undefined (Req 7.2).
87
+ * @param {string | undefined} value - The raw field value from the meeting.
88
+ * @return {string} The value to display, or the empty-field placeholder.
89
+ * @memberof MeetingAttendanceRowComponent
90
+ */
91
+ resolveFieldValue(value) {
92
+ const placeholder = this.constants?.meetingRow?.emptyFieldPlaceholder ?? '—';
93
+ return value && value.trim().length > 0 ? value : placeholder;
94
+ }
95
+ /**
96
+ * Formats the meeting date for display using the shared luxon display format
97
+ * (Req 7.3). Falls back to the raw value when it cannot be parsed.
98
+ * @return {string} The formatted meeting date.
99
+ * @memberof MeetingAttendanceRowComponent
100
+ */
101
+ get formattedDate() {
102
+ return this.formatIso(this.meeting?.meetingDate, DateFormats.displayFormat);
103
+ }
104
+ /**
105
+ * Formats the meeting time + timezone for display using luxon (Req 7.3).
106
+ * The timezone abbreviation from the meeting model is appended to the parsed
107
+ * time. Falls back to the raw value when it cannot be parsed.
108
+ * @return {string} The formatted meeting time with timezone.
109
+ * @memberof MeetingAttendanceRowComponent
110
+ */
111
+ get formattedTime() {
112
+ const time = this.formatIso(this.meeting?.meetingTime, DateFormats.timeMeridiemFormat);
113
+ const timezone = this.meeting?.timezone ?? '';
114
+ return timezone ? `${time} ${timezone}` : time;
115
+ }
116
+ /**
117
+ * Handles activation of the attendance action button. Delegates to the pure
118
+ * `resolveAttendanceAction` handler and emits exactly one event based on the
119
+ * resolved action: `logAttendance` for `LOG_ATTENDANCE`, `leaveMeeting` for
120
+ * `LEAVE_MEETING`, and nothing for `NONE` (empty id or in-flight)
121
+ * (Req 7.7, 7.8, 7.9, 7.10, 13.6).
122
+ * @memberof MeetingAttendanceRowComponent
123
+ */
124
+ onAttendanceAction() {
125
+ const action = resolveAttendanceAction(this.attendanceState, this.isInFlight, this.meeting?.meetingId);
126
+ if (action === AttendanceAction.LOG_ATTENDANCE) {
127
+ this.logAttendance.emit(this.meeting.meetingId);
128
+ return;
129
+ }
130
+ if (action === AttendanceAction.LEAVE_MEETING) {
131
+ this.leaveMeeting.emit(this.meeting.meetingId);
132
+ }
133
+ }
134
+ /**
135
+ * Handles activation of the meeting-name link. Emits the meeting id only when
136
+ * the row is actionable (non-empty meeting id) (Req 7.4, 7.10).
137
+ * @memberof MeetingAttendanceRowComponent
138
+ */
139
+ onOpenMeeting() {
140
+ if (!this.isActionable) {
141
+ return;
142
+ }
143
+ this.openMeeting.emit(this.meeting.meetingId);
144
+ }
145
+ /**
146
+ * Parses an ISO string with luxon and formats it with the supplied token,
147
+ * returning the raw value unchanged when it is missing or unparseable.
148
+ * @param {string | undefined} isoValue - The ISO date/time string.
149
+ * @param {string} format - The luxon format token.
150
+ * @return {string} The formatted value or the raw/empty fallback.
151
+ * @memberof MeetingAttendanceRowComponent
152
+ */
153
+ formatIso(isoValue, format) {
154
+ if (!isoValue) {
155
+ return '';
156
+ }
157
+ const parsed = DateTime.fromISO(isoValue, { setZone: true });
158
+ return parsed.isValid ? parsed.toFormat(format) : isoValue;
159
+ }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MeetingAttendanceRowComponent, isStandalone: true, selector: "ieeesa-meeting-attendance-row", inputs: { meeting: "meeting", attendanceState: "attendanceState", isInFlight: "isInFlight", permissions: "permissions" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting" }, ngImport: i0, template: "<div class=\"ieeesa-meeting-attendance-row\">\r\n <div class=\"ieeesa-meeting-attendance-row__details\">\r\n <!-- Meeting-name link (emits openMeeting; non-actionable when id missing). -->\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.meetingNameLink ?? 'View meeting details'\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting?.meetingName }}\r\n </button>\r\n\r\n <dl class=\"ieeesa-meeting-attendance-row__meta\">\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.group ?? 'Group' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.groupOrCommittee) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.affiliation ?? 'Location' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.roomOrLocation) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Date</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Time</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending indicator shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-indicator\"\r\n >\r\n {{ constants?.meetingRow?.currentlyAttendingIndicator ?? 'Currently Attending' }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.logAttendance ?? 'Log attendance for this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.logAttendanceLabel ?? 'Log Attendance' }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.leaveMeeting ?? 'Leave this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.leaveMeetingLabel ?? 'Leave Meeting' }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #d7d6d6}.ieeesa-meeting-attendance-row__details{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-meeting-attendance-row__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-meeting-attendance-row__meta-term{margin:0;font-size:.75rem;color:#939094}.ieeesa-meeting-attendance-row__meta-value{margin:0;font-size:.875rem;color:#000}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-indicator{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:.8125rem;color:#00629b;background-color:#f0f5f9}.ieeesa-meeting-attendance-row__action-button{padding:8px 16px;border-radius:4px;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, decorators: [{
164
+ type: Component,
165
+ args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-meeting-attendance-row\">\r\n <div class=\"ieeesa-meeting-attendance-row__details\">\r\n <!-- Meeting-name link (emits openMeeting; non-actionable when id missing). -->\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.meetingNameLink ?? 'View meeting details'\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting?.meetingName }}\r\n </button>\r\n\r\n <dl class=\"ieeesa-meeting-attendance-row__meta\">\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.group ?? 'Group' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.groupOrCommittee) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.affiliation ?? 'Location' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.roomOrLocation) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Date</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Time</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending indicator shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-indicator\"\r\n >\r\n {{ constants?.meetingRow?.currentlyAttendingIndicator ?? 'Currently Attending' }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.logAttendance ?? 'Log attendance for this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.logAttendanceLabel ?? 'Log Attendance' }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants?.meetingRow?.ariaLabel?.leaveMeeting ?? 'Leave this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.leaveMeetingLabel ?? 'Leave Meeting' }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #d7d6d6}.ieeesa-meeting-attendance-row__details{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-meeting-attendance-row__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-meeting-attendance-row__meta-term{margin:0;font-size:.75rem;color:#939094}.ieeesa-meeting-attendance-row__meta-value{margin:0;font-size:.875rem;color:#000}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-indicator{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:.8125rem;color:#00629b;background-color:#f0f5f9}.ieeesa-meeting-attendance-row__action-button{padding:8px 16px;border-radius:4px;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}\n"] }]
166
+ }], propDecorators: { meeting: [{
167
+ type: Input
168
+ }], attendanceState: [{
169
+ type: Input
170
+ }], isInFlight: [{
171
+ type: Input
172
+ }], permissions: [{
173
+ type: Input
174
+ }], openMeeting: [{
175
+ type: Output
176
+ }], logAttendance: [{
177
+ type: Output
178
+ }], leaveMeeting: [{
179
+ type: Output
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEdBQ3hCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXpEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFVSCxNQUFNLE9BQU8sNkJBQTZCO0lBVDFDO1FBVUUsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUt0QiwyRUFBMkU7UUFDbEUsb0JBQWUsR0FBb0IsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUUxRSw0RUFBNEU7UUFDbkUsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUU1QiwwRUFBMEU7UUFDakUsZ0JBQVcsR0FBZ0M7WUFDbEQsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDO1FBRUYsOEVBQThFO1FBQ3BFLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRCxvRUFBb0U7UUFDMUQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXJELHFFQUFxRTtRQUMzRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFcEQsNkRBQTZEO1FBQ3BELG9CQUFlLEdBQUcsZUFBZSxDQUFDO0tBd0k1QztJQXRJQzs7Ozs7T0FLRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUFDLEtBQXlCO1FBQ3pDLE1BQU0sV0FBVyxHQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixJQUFJLEdBQUcsQ0FBQztRQUMzRCxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQ3pCLFdBQVcsQ0FBQyxrQkFBa0IsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGtCQUFrQjtRQUNoQixNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FDcEMsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FDeEIsQ0FBQztRQUVGLElBQUksTUFBTSxLQUFLLGdCQUFnQixDQUFDLGNBQWMsRUFBRTtZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELE9BQU87U0FDUjtRQUVELElBQUksTUFBTSxLQUFLLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtZQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFNBQVMsQ0FBQyxRQUE0QixFQUFFLE1BQWM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzdELENBQUM7K0dBbktVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDBUQzFDMUMseStHQWtGQSw0MVVEN0NZLFlBQVk7OzRGQUtYLDZCQUE2QjtrQkFUekMsU0FBUzsrQkFFRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLGlCQUdSLGlCQUFpQixDQUFDLElBQUk7OEJBTTVCLE9BQU87c0JBQWYsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdHLGFBQWE7c0JBQXRCLE1BQU07Z0JBR0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1hY3Rpb24tcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBBdHRlbmRhbmNlU3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kYW5jZS1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdSb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVldGluZy1yb3cubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybWF0cyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9kYXRlLWZvcm1hdHMnO1xyXG5pbXBvcnQge1xyXG4gIEF0dGVuZGFuY2VBY3Rpb24sXHJcbiAgcmVzb2x2ZUF0dGVuZGFuY2VBY3Rpb24sXHJcbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXR0ZW5kYW5jZS1hY3Rpb24udXRpbCc7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5cclxuLyoqXHJcbiAqIE1lZXRpbmdfQXR0ZW5kYW5jZV9Sb3cgcmVuZGVycyBhIHNpbmdsZSBtZWV0aW5nIHdpdGhpbiBhbiBldmVudC1ncm91cCBjYXJkOlxyXG4gKiB0aGUgbWVldGluZy1uYW1lIGxpbmssIGdyb3VwL2NvbW1pdHRlZSwgcm9vbS9sb2NhdGlvbiwgZGF0ZSwgYW5kXHJcbiAqIHRpbWUrdGltZXpvbmUgKGFsbCBsdXhvbi1mb3JtYXR0ZWQpLCB0b2dldGhlciB3aXRoIHRoZSBhdHRlbmRhbmNlIGFjdGlvblxyXG4gKiBidXR0b24gdGhhdCBkcml2ZXMgdGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Ugc3RhdGUgbWFjaGluZS5cclxuICpcclxuICogVGhlIGNvbXBvbmVudCBpcyBwdXJlbHkgcHJlc2VudGF0aW9uYWwg4oCUIGl0IGVtaXRzIG5hdmlnYXRpb24gYW5kIGF0dGVuZGFuY2VcclxuICogaW50ZW50cyB2aWEgYEBPdXRwdXQoKWAgYW5kIG5ldmVyIHBlcmZvcm1zIG5hdmlnYXRpb24gb3IgSFRUUCBpdHNlbGYuIFRoZVxyXG4gKiBhY3Rpb24gYnV0dG9uIGRlbGVnYXRlcyB0byB0aGUgcHVyZSBgcmVzb2x2ZUF0dGVuZGFuY2VBY3Rpb25gIGhhbmRsZXIgc28gdGhlXHJcbiAqIGVtaXQvZ3VhcmQgbG9naWMgaXMgc2hhcmVkIHdpdGggdGhlIHByb3BlcnR5LXRlc3RlZCBjb3JlIChQcm9wZXJ0eSAxKSwgYW5kIHRoZVxyXG4gKiBkaXNwbGF5ZWQgc3RhdGUgb25seSBhZHZhbmNlcyB3aGVuIHRoZSBob3N0IHVwZGF0ZXMgYGF0dGVuZGFuY2VTdGF0ZWAuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnQge1xyXG4gIGNvbnN0YW50cyA9IGNvbnN0YW50cztcclxuXHJcbiAgLyoqIFRoZSBtZWV0aW5nIHJlbmRlcmVkIGJ5IHRoaXMgcm93LiAqL1xyXG4gIEBJbnB1dCgpIG1lZXRpbmchOiBNZWV0aW5nUm93O1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYXR0ZW5kYW5jZSBzdGF0ZSBjb250cm9sbGluZyBsYWJlbC9pbmRpY2F0b3IgYW5kIGFjdGlvbi4gKi9cclxuICBASW5wdXQoKSBhdHRlbmRhbmNlU3RhdGU6IEF0dGVuZGFuY2VTdGF0ZSA9IEF0dGVuZGFuY2VTdGF0ZS5OT1RfQVRURU5ESU5HO1xyXG5cclxuICAvKiogV2hldGhlciBhbiBhdHRlbmRhbmNlIGFjdGlvbiBmb3IgdGhpcyBtZWV0aW5nIGlzIGF3YWl0aW5nIHJlc29sdXRpb24uICovXHJcbiAgQElucHV0KCkgaXNJbkZsaWdodCA9IGZhbHNlO1xyXG5cclxuICAvKiogSG9zdCBwZXJtaXNzaW9ucyBnYXRpbmcgdGhlIGxvZy1hdHRlbmRhbmNlIC8gbGVhdmUtbWVldGluZyBidXR0b25zLiAqL1xyXG4gIEBJbnB1dCgpIHBlcm1pc3Npb25zOiBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgPSB7XHJcbiAgICBjYW5Mb2dBdHRlbmRhbmNlOiBmYWxzZSxcclxuICAgIGNhbkxlYXZlTWVldGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBtZWV0aW5nIGlkIHdoZW4gdGhlIG1lZXRpbmctbmFtZSBsaW5rIGlzIGFjdGl2YXRlZCAoUmVxIDcuNCkuICovXHJcbiAgQE91dHB1dCgpIG9wZW5NZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgbWVldGluZyBpZCB0byByZXF1ZXN0IGxvZ2dpbmcgYXR0ZW5kYW5jZSAoUmVxIDcuNykuICovXHJcbiAgQE91dHB1dCgpIGxvZ0F0dGVuZGFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBtZWV0aW5nIGlkIHRvIHJlcXVlc3QgbGVhdmluZyB0aGUgbWVldGluZyAoUmVxIDcuOCkuICovXHJcbiAgQE91dHB1dCgpIGxlYXZlTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogRXhwb3NlIHRoZSBlbnVtIHRvIHRoZSB0ZW1wbGF0ZSBmb3Igc3RhdGUgY29tcGFyaXNvbnMuICovXHJcbiAgcmVhZG9ubHkgQXR0ZW5kYW5jZVN0YXRlID0gQXR0ZW5kYW5jZVN0YXRlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoaXMgcm93IGlzIGFjdGlvbmFibGUg4oCUIGEgbm9uLWVtcHR5IGBtZWV0aW5nSWRgIGlzIHJlcXVpcmVkIGZvciB0aGVcclxuICAgKiBtZWV0aW5nLW5hbWUgbGluayBhbmQgYWN0aW9uIGJ1dHRvbiB0byBlbWl0IGFueXRoaW5nIChSZXEgNy4xMCkuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSByb3cgaGFzIGEgdXNhYmxlIG1lZXRpbmcgaWQuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzQWN0aW9uYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMubWVldGluZz8ubWVldGluZ0lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgcm93IGlzIGluIHRoZSBjdXJyZW50bHktYXR0ZW5kaW5nIHN0YXRlLCB3aGljaCBzaG93cyB0aGVcclxuICAgKiBjdXJyZW50bHktYXR0ZW5kaW5nIGluZGljYXRvciBhbmQgdGhlIGxlYXZlLW1lZXRpbmcgYWN0aW9uIChSZXEgNy41KS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGF0dGVuZGFuY2Ugc3RhdGUgaXMgYENVUlJFTlRMWV9BVFRFTkRJTkdgLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc0N1cnJlbnRseUF0dGVuZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF0dGVuZGFuY2VTdGF0ZSA9PT0gQXR0ZW5kYW5jZVN0YXRlLkNVUlJFTlRMWV9BVFRFTkRJTkc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsb2ctYXR0ZW5kYW5jZSBidXR0b24gc2hvdWxkIGJlIHNob3duOiBvbmx5IHdoZW4gdGhlIHJvdyBpcyBpblxyXG4gICAqIHRoZSBsb2cgc3RhdGUgKG5vdCBjdXJyZW50bHkgYXR0ZW5kaW5nKSBhbmQgdGhlIGhvc3QgZ3JhbnRzXHJcbiAgICogYGNhbkxvZ0F0dGVuZGFuY2VgIChSZXEgNy42LCAxMi4xKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxvZy1hdHRlbmRhbmNlIGJ1dHRvbiBpcyB2aXNpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzaG93TG9nQXR0ZW5kYW5jZUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZyAmJiAhIXRoaXMucGVybWlzc2lvbnM/LmNhbkxvZ0F0dGVuZGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsZWF2ZS1tZWV0aW5nIGJ1dHRvbiBzaG91bGQgYmUgc2hvd246IG9ubHkgd2hlbiB0aGUgcm93IGlzIGluXHJcbiAgICogdGhlIGN1cnJlbnRseS1hdHRlbmRpbmcgc3RhdGUgYW5kIHRoZSBob3N0IGdyYW50cyBgY2FuTGVhdmVNZWV0aW5nYFxyXG4gICAqIChSZXEgNy41LCAxMi4yKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxlYXZlLW1lZXRpbmcgYnV0dG9uIGlzIHZpc2libGUuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHNob3dMZWF2ZU1lZXRpbmdCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZyAmJiAhIXRoaXMucGVybWlzc2lvbnM/LmNhbkxlYXZlTWVldGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIGEgZ3JvdXAtb3ItY29tbWl0dGVlIC8gcm9vbS1vci1sb2NhdGlvbiBmaWVsZCB2YWx1ZSwgc3Vic3RpdHV0aW5nXHJcbiAgICogdGhlIGVtcHR5LWZpZWxkIHBsYWNlaG9sZGVyIGZyb20gYGNvbnN0YW50cy5qc29uYCB3aGVuIHRoZSB2YWx1ZSBpcyBlbXB0eSBvclxyXG4gICAqIHVuZGVmaW5lZCAoUmVxIDcuMikuXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gVGhlIHJhdyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBtZWV0aW5nLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHZhbHVlIHRvIGRpc3BsYXksIG9yIHRoZSBlbXB0eS1maWVsZCBwbGFjZWhvbGRlci5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICByZXNvbHZlRmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID1cclxuICAgICAgdGhpcy5jb25zdGFudHM/Lm1lZXRpbmdSb3c/LmVtcHR5RmllbGRQbGFjZWhvbGRlciA/PyAn4oCUJztcclxuICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCA/IHZhbHVlIDogcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIHRoZSBtZWV0aW5nIGRhdGUgZm9yIGRpc3BsYXkgdXNpbmcgdGhlIHNoYXJlZCBsdXhvbiBkaXNwbGF5IGZvcm1hdFxyXG4gICAqIChSZXEgNy4zKS4gRmFsbHMgYmFjayB0byB0aGUgcmF3IHZhbHVlIHdoZW4gaXQgY2Fubm90IGJlIHBhcnNlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgbWVldGluZyBkYXRlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBmb3JtYXR0ZWREYXRlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRJc28odGhpcy5tZWV0aW5nPy5tZWV0aW5nRGF0ZSwgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIHRoZSBtZWV0aW5nIHRpbWUgKyB0aW1lem9uZSBmb3IgZGlzcGxheSB1c2luZyBsdXhvbiAoUmVxIDcuMykuXHJcbiAgICogVGhlIHRpbWV6b25lIGFiYnJldmlhdGlvbiBmcm9tIHRoZSBtZWV0aW5nIG1vZGVsIGlzIGFwcGVuZGVkIHRvIHRoZSBwYXJzZWRcclxuICAgKiB0aW1lLiBGYWxscyBiYWNrIHRvIHRoZSByYXcgdmFsdWUgd2hlbiBpdCBjYW5ub3QgYmUgcGFyc2VkLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBtZWV0aW5nIHRpbWUgd2l0aCB0aW1lem9uZS5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgZm9ybWF0dGVkVGltZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGltZSA9IHRoaXMuZm9ybWF0SXNvKFxyXG4gICAgICB0aGlzLm1lZXRpbmc/Lm1lZXRpbmdUaW1lLFxyXG4gICAgICBEYXRlRm9ybWF0cy50aW1lTWVyaWRpZW1Gb3JtYXRcclxuICAgICk7XHJcbiAgICBjb25zdCB0aW1lem9uZSA9IHRoaXMubWVldGluZz8udGltZXpvbmUgPz8gJyc7XHJcbiAgICByZXR1cm4gdGltZXpvbmUgPyBgJHt0aW1lfSAke3RpbWV6b25lfWAgOiB0aW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhY3RpdmF0aW9uIG9mIHRoZSBhdHRlbmRhbmNlIGFjdGlvbiBidXR0b24uIERlbGVnYXRlcyB0byB0aGUgcHVyZVxyXG4gICAqIGByZXNvbHZlQXR0ZW5kYW5jZUFjdGlvbmAgaGFuZGxlciBhbmQgZW1pdHMgZXhhY3RseSBvbmUgZXZlbnQgYmFzZWQgb24gdGhlXHJcbiAgICogcmVzb2x2ZWQgYWN0aW9uOiBgbG9nQXR0ZW5kYW5jZWAgZm9yIGBMT0dfQVRURU5EQU5DRWAsIGBsZWF2ZU1lZXRpbmdgIGZvclxyXG4gICAqIGBMRUFWRV9NRUVUSU5HYCwgYW5kIG5vdGhpbmcgZm9yIGBOT05FYCAoZW1wdHkgaWQgb3IgaW4tZmxpZ2h0KVxyXG4gICAqIChSZXEgNy43LCA3LjgsIDcuOSwgNy4xMCwgMTMuNikuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BdHRlbmRhbmNlQWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWN0aW9uID0gcmVzb2x2ZUF0dGVuZGFuY2VBY3Rpb24oXHJcbiAgICAgIHRoaXMuYXR0ZW5kYW5jZVN0YXRlLFxyXG4gICAgICB0aGlzLmlzSW5GbGlnaHQsXHJcbiAgICAgIHRoaXMubWVldGluZz8ubWVldGluZ0lkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChhY3Rpb24gPT09IEF0dGVuZGFuY2VBY3Rpb24uTE9HX0FUVEVOREFOQ0UpIHtcclxuICAgICAgdGhpcy5sb2dBdHRlbmRhbmNlLmVtaXQodGhpcy5tZWV0aW5nLm1lZXRpbmdJZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aW9uID09PSBBdHRlbmRhbmNlQWN0aW9uLkxFQVZFX01FRVRJTkcpIHtcclxuICAgICAgdGhpcy5sZWF2ZU1lZXRpbmcuZW1pdCh0aGlzLm1lZXRpbmcubWVldGluZ0lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWN0aXZhdGlvbiBvZiB0aGUgbWVldGluZy1uYW1lIGxpbmsuIEVtaXRzIHRoZSBtZWV0aW5nIGlkIG9ubHkgd2hlblxyXG4gICAqIHRoZSByb3cgaXMgYWN0aW9uYWJsZSAobm9uLWVtcHR5IG1lZXRpbmcgaWQpIChSZXEgNy40LCA3LjEwKS5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBvbk9wZW5NZWV0aW5nKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQWN0aW9uYWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5NZWV0aW5nLmVtaXQodGhpcy5tZWV0aW5nLm1lZXRpbmdJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZXMgYW4gSVNPIHN0cmluZyB3aXRoIGx1eG9uIGFuZCBmb3JtYXRzIGl0IHdpdGggdGhlIHN1cHBsaWVkIHRva2VuLFxyXG4gICAqIHJldHVybmluZyB0aGUgcmF3IHZhbHVlIHVuY2hhbmdlZCB3aGVuIGl0IGlzIG1pc3Npbmcgb3IgdW5wYXJzZWFibGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IGlzb1ZhbHVlIC0gVGhlIElTTyBkYXRlL3RpbWUgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBUaGUgbHV4b24gZm9ybWF0IHRva2VuLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB2YWx1ZSBvciB0aGUgcmF3L2VtcHR5IGZhbGxiYWNrLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZm9ybWF0SXNvKGlzb1ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghaXNvVmFsdWUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFyc2VkID0gRGF0ZVRpbWUuZnJvbUlTTyhpc29WYWx1ZSwgeyBzZXRab25lOiB0cnVlIH0pO1xyXG4gICAgcmV0dXJuIHBhcnNlZC5pc1ZhbGlkID8gcGFyc2VkLnRvRm9ybWF0KGZvcm1hdCkgOiBpc29WYWx1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93XCI+XHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19kZXRhaWxzXCI+XHJcbiAgICA8IS0tIE1lZXRpbmctbmFtZSBsaW5rIChlbWl0cyBvcGVuTWVldGluZzsgbm9uLWFjdGlvbmFibGUgd2hlbiBpZCBtaXNzaW5nKS4gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19uYW1lLWxpbmtcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzQWN0aW9uYWJsZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5tZWV0aW5nUm93Py5hcmlhTGFiZWw/Lm1lZXRpbmdOYW1lTGluayA/PyAnVmlldyBtZWV0aW5nIGRldGFpbHMnXCJcclxuICAgICAgKGNsaWNrKT1cIm9uT3Blbk1lZXRpbmcoKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IG1lZXRpbmc/Lm1lZXRpbmdOYW1lIH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8ZGwgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fbWV0YVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtaXRlbVwiPlxyXG4gICAgICAgIDxkdCBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19tZXRhLXRlcm1cIj5cclxuICAgICAgICAgIHt7IGNvbnN0YW50cz8uZ3JvdXBzU2VjdGlvbj8uY29sdW1ucz8uZ3JvdXAgPz8gJ0dyb3VwJyB9fVxyXG4gICAgICAgIDwvZHQ+XHJcbiAgICAgICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtdmFsdWVcIj5cclxuICAgICAgICAgIHt7IHJlc29sdmVGaWVsZFZhbHVlKG1lZXRpbmc/Lmdyb3VwT3JDb21taXR0ZWUpIH19XHJcbiAgICAgICAgPC9kZD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtaXRlbVwiPlxyXG4gICAgICAgIDxkdCBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19tZXRhLXRlcm1cIj5cclxuICAgICAgICAgIHt7IGNvbnN0YW50cz8uZ3JvdXBzU2VjdGlvbj8uY29sdW1ucz8uYWZmaWxpYXRpb24gPz8gJ0xvY2F0aW9uJyB9fVxyXG4gICAgICAgIDwvZHQ+XHJcbiAgICAgICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtdmFsdWVcIj5cclxuICAgICAgICAgIHt7IHJlc29sdmVGaWVsZFZhbHVlKG1lZXRpbmc/LnJvb21PckxvY2F0aW9uKSB9fVxyXG4gICAgICAgIDwvZGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19tZXRhLWl0ZW1cIj5cclxuICAgICAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fbWV0YS10ZXJtXCI+RGF0ZTwvZHQ+XHJcbiAgICAgICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtdmFsdWVcIj5cclxuICAgICAgICAgIHt7IGZvcm1hdHRlZERhdGUgfX1cclxuICAgICAgICA8L2RkPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fbWV0YS1pdGVtXCI+XHJcbiAgICAgICAgPGR0IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX21ldGEtdGVybVwiPlRpbWU8L2R0PlxyXG4gICAgICAgIDxkZCBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19tZXRhLXZhbHVlXCI+XHJcbiAgICAgICAgICB7eyBmb3JtYXR0ZWRUaW1lIH19XHJcbiAgICAgICAgPC9kZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2RsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2FjdGlvbnNcIj5cclxuICAgIDwhLS0gQ3VycmVudGx5LWF0dGVuZGluZyBpbmRpY2F0b3Igc2hvd24gb25seSBpbiB0aGUgYXR0ZW5kaW5nIHN0YXRlLiAtLT5cclxuICAgIDxzcGFuXHJcbiAgICAgICpuZ0lmPVwiaXNDdXJyZW50bHlBdHRlbmRpbmdcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hdHRlbmRpbmctaW5kaWNhdG9yXCJcclxuICAgID5cclxuICAgICAge3sgY29uc3RhbnRzPy5tZWV0aW5nUm93Py5jdXJyZW50bHlBdHRlbmRpbmdJbmRpY2F0b3IgPz8gJ0N1cnJlbnRseSBBdHRlbmRpbmcnIH19XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPCEtLSBMb2ctYXR0ZW5kYW5jZSBidXR0b246IHNob3duIGluIHRoZSBsb2cgc3RhdGUgd2l0aCB0aGUgcGVybWlzc2lvbi4gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwic2hvd0xvZ0F0dGVuZGFuY2VCdXR0b25cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbiBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbi0tbG9nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzSW5GbGlnaHQgfHwgIWlzQWN0aW9uYWJsZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5tZWV0aW5nUm93Py5hcmlhTGFiZWw/LmxvZ0F0dGVuZGFuY2UgPz8gJ0xvZyBhdHRlbmRhbmNlIGZvciB0aGlzIG1lZXRpbmcnXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQXR0ZW5kYW5jZUFjdGlvbigpXCJcclxuICAgID5cclxuICAgICAge3sgY29uc3RhbnRzPy5tZWV0aW5nUm93Py5sb2dBdHRlbmRhbmNlTGFiZWwgPz8gJ0xvZyBBdHRlbmRhbmNlJyB9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBMZWF2ZS1tZWV0aW5nIGJ1dHRvbjogc2hvd24gaW4gdGhlIGF0dGVuZGluZyBzdGF0ZSB3aXRoIHRoZSBwZXJtaXNzaW9uLiAtLT5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJzaG93TGVhdmVNZWV0aW5nQnV0dG9uXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2FjdGlvbi1idXR0b24gaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2FjdGlvbi1idXR0b24tLWxlYXZlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzSW5GbGlnaHQgfHwgIWlzQWN0aW9uYWJsZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5tZWV0aW5nUm93Py5hcmlhTGFiZWw/LmxlYXZlTWVldGluZyA/PyAnTGVhdmUgdGhpcyBtZWV0aW5nJ1wiXHJcbiAgICAgIChjbGljayk9XCJvbkF0dGVuZGFuY2VBY3Rpb24oKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGNvbnN0YW50cz8ubWVldGluZ1Jvdz8ubGVhdmVNZWV0aW5nTGFiZWwgPz8gJ0xlYXZlIE1lZXRpbmcnIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
3
+ import { LegendComponent } from '@ieeesa-npm/presentation';
4
+ import * as constants from '../../assets/constants.json';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ /**
8
+ * Member_Level_Badge renders a single member-level value as a colored pill.
9
+ * It reuses the Presentation_Library Legend component for the pill primitive,
10
+ * sourcing the level-to-color mapping from `constants.json` (`memberLevel.colorMap`)
11
+ * with a nullish-coalescing fallback to the configured default color.
12
+ * @export
13
+ * @class MemberLevelBadgeComponent
14
+ */
15
+ export class MemberLevelBadgeComponent {
16
+ constructor() {
17
+ this.constants = constants;
18
+ this.memberLevelValue = '';
19
+ /** The Legend input consumed by the Presentation_Library Legend component. */
20
+ this.legends = this.buildLegends('');
21
+ }
22
+ set memberLevel(value) {
23
+ this.memberLevelValue = value ?? '';
24
+ this.legends = this.buildLegends(this.memberLevelValue);
25
+ }
26
+ get memberLevel() {
27
+ return this.memberLevelValue;
28
+ }
29
+ /**
30
+ * Builds the single-item Legend list for the supplied member level, resolving
31
+ * the pill color from the `constants.json` color map and falling back to the
32
+ * configured default color when the level has no explicit mapping.
33
+ * @param {string} memberLevel - The member-level label to render.
34
+ * @return {Legend[]} A single-element Legend array for the Legend component.
35
+ * @memberof MemberLevelBadgeComponent
36
+ */
37
+ buildLegends(memberLevel) {
38
+ return [
39
+ {
40
+ label: memberLevel,
41
+ color: this.resolveColorClass(memberLevel),
42
+ hierarchy: 0,
43
+ },
44
+ ];
45
+ }
46
+ /**
47
+ * Resolves the CSS modifier class for a member level from the `constants.json`
48
+ * color map, using the `??` fallback to the `default` entry when the level is
49
+ * missing from the map.
50
+ * @param {string} memberLevel - The member-level label to resolve a color for.
51
+ * @return {string} The CSS modifier class applied to the pill.
52
+ * @memberof MemberLevelBadgeComponent
53
+ */
54
+ resolveColorClass(memberLevel) {
55
+ const colorMap = this.constants?.memberLevel?.colorMap;
56
+ const token = colorMap?.[memberLevel] ?? colorMap?.['default'] ?? '$ieeesa-color-neutral';
57
+ return this.toColorClass(token);
58
+ }
59
+ /**
60
+ * Converts a shared-styles color token (for example `$ieeesa-color-success`)
61
+ * into a valid BEM-style CSS modifier class defined in this component's SCSS.
62
+ * @param {string} token - The color token from the color map.
63
+ * @return {string} A valid CSS class name.
64
+ * @memberof MemberLevelBadgeComponent
65
+ */
66
+ toColorClass(token) {
67
+ const normalized = token.replace(/^\$ieeesa-color-/, '').replace(/^\$/, '');
68
+ return `ieeesa-member-level-badge--${normalized || 'neutral'}`;
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MemberLevelBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MemberLevelBadgeComponent, isStandalone: true, selector: "ieeesa-member-level-badge", inputs: { memberLevel: "memberLevel" }, ngImport: i0, template: "<span\r\n class=\"ieeesa-member-level-badge\"\r\n [attr.aria-label]=\"memberLevel\"\r\n>\r\n <ieeesa-legend\r\n *ngIf=\"memberLevel\"\r\n [legends]=\"legends\"\r\n ></ieeesa-legend>\r\n</span>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-member-level-badge,.ieeesa-member-level-badge .ieeesa-legend{display:inline-flex}.ieeesa-member-level-badge .ieeesa-legend__indicator{align-items:center;gap:4px;padding:4px 12px;border-radius:16px;background-color:#f0f5f9}.ieeesa-member-level-badge .ieeesa-legend__square{width:8px;min-width:8px;height:8px;margin:0;border-radius:50%}.ieeesa-member-level-badge .ieeesa-legend p{margin:0}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--success{background-color:#78d7ef}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--info{background-color:#00b5e2}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--warning{background-color:#ffd92e}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--primary{background-color:#00629b}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--neutral{background-color:#939094}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LegendComponent, selector: "ieeesa-legend", inputs: ["legends", "isSorting"] }], encapsulation: i0.ViewEncapsulation.None }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MemberLevelBadgeComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'ieeesa-member-level-badge', standalone: true, imports: [CommonModule, LegendComponent], encapsulation: ViewEncapsulation.None, template: "<span\r\n class=\"ieeesa-member-level-badge\"\r\n [attr.aria-label]=\"memberLevel\"\r\n>\r\n <ieeesa-legend\r\n *ngIf=\"memberLevel\"\r\n [legends]=\"legends\"\r\n ></ieeesa-legend>\r\n</span>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-member-level-badge,.ieeesa-member-level-badge .ieeesa-legend{display:inline-flex}.ieeesa-member-level-badge .ieeesa-legend__indicator{align-items:center;gap:4px;padding:4px 12px;border-radius:16px;background-color:#f0f5f9}.ieeesa-member-level-badge .ieeesa-legend__square{width:8px;min-width:8px;height:8px;margin:0;border-radius:50%}.ieeesa-member-level-badge .ieeesa-legend p{margin:0}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--success{background-color:#78d7ef}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--info{background-color:#00b5e2}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--warning{background-color:#ffd92e}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--primary{background-color:#00629b}.ieeesa-member-level-badge .ieeesa-legend__square.ieeesa-member-level-badge--neutral{background-color:#939094}\n"] }]
76
+ }], propDecorators: { memberLevel: [{
77
+ type: Input
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWxldmVsLWJhZGdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvbWVtYmVyLWxldmVsLWJhZGdlL21lbWJlci1sZXZlbC1iYWRnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lbWJlci1sZXZlbC1iYWRnZS9tZW1iZXItbGV2ZWwtYmFkZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBVSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDOzs7QUFFekQ7Ozs7Ozs7R0FPRztBQVVILE1BQU0sT0FBTyx5QkFBeUI7SUFUdEM7UUFVRSxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRWQscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBVzlCLDhFQUE4RTtRQUM5RSxZQUFPLEdBQWEsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQWdEM0M7SUExREMsSUFDSSxXQUFXLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFLRDs7Ozs7OztPQU9HO0lBQ0ssWUFBWSxDQUFDLFdBQW1CO1FBQ3RDLE9BQU87WUFDTDtnQkFDRSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7Z0JBQzFDLFNBQVMsRUFBRSxDQUFDO2FBQ2I7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxpQkFBaUIsQ0FBQyxXQUFtQjtRQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUVqQyxDQUFDO1FBQ2QsTUFBTSxLQUFLLEdBQ1QsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksdUJBQXVCLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZLENBQUMsS0FBYTtRQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUUsT0FBTyw4QkFBOEIsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2pFLENBQUM7K0dBOURVLHlCQUF5QjttR0FBekIseUJBQXlCLDZIQ3RCdEMsZ05BU0EsNHRURFFZLFlBQVksbUlBQUUsZUFBZTs7NEZBSzVCLHlCQUF5QjtrQkFUckMsU0FBUzsrQkFFRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxpQkFHekIsaUJBQWlCLENBQUMsSUFBSTs4QkFRakMsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGVnZW5kLCBMZWdlbmRDb21wb25lbnQgfSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuXHJcbi8qKlxyXG4gKiBNZW1iZXJfTGV2ZWxfQmFkZ2UgcmVuZGVycyBhIHNpbmdsZSBtZW1iZXItbGV2ZWwgdmFsdWUgYXMgYSBjb2xvcmVkIHBpbGwuXHJcbiAqIEl0IHJldXNlcyB0aGUgUHJlc2VudGF0aW9uX0xpYnJhcnkgTGVnZW5kIGNvbXBvbmVudCBmb3IgdGhlIHBpbGwgcHJpbWl0aXZlLFxyXG4gKiBzb3VyY2luZyB0aGUgbGV2ZWwtdG8tY29sb3IgbWFwcGluZyBmcm9tIGBjb25zdGFudHMuanNvbmAgKGBtZW1iZXJMZXZlbC5jb2xvck1hcGApXHJcbiAqIHdpdGggYSBudWxsaXNoLWNvYWxlc2NpbmcgZmFsbGJhY2sgdG8gdGhlIGNvbmZpZ3VyZWQgZGVmYXVsdCBjb2xvci5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgTWVtYmVyTGV2ZWxCYWRnZUNvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2llZWVzYS1tZW1iZXItbGV2ZWwtYmFkZ2UnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTGVnZW5kQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVtYmVyLWxldmVsLWJhZGdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW1iZXItbGV2ZWwtYmFkZ2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVtYmVyTGV2ZWxCYWRnZUNvbXBvbmVudCB7XHJcbiAgY29uc3RhbnRzID0gY29uc3RhbnRzO1xyXG5cclxuICBwcml2YXRlIG1lbWJlckxldmVsVmFsdWUgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWVtYmVyTGV2ZWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5tZW1iZXJMZXZlbFZhbHVlID0gdmFsdWUgPz8gJyc7XHJcbiAgICB0aGlzLmxlZ2VuZHMgPSB0aGlzLmJ1aWxkTGVnZW5kcyh0aGlzLm1lbWJlckxldmVsVmFsdWUpO1xyXG4gIH1cclxuICBnZXQgbWVtYmVyTGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1lbWJlckxldmVsVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIExlZ2VuZCBpbnB1dCBjb25zdW1lZCBieSB0aGUgUHJlc2VudGF0aW9uX0xpYnJhcnkgTGVnZW5kIGNvbXBvbmVudC4gKi9cclxuICBsZWdlbmRzOiBMZWdlbmRbXSA9IHRoaXMuYnVpbGRMZWdlbmRzKCcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGRzIHRoZSBzaW5nbGUtaXRlbSBMZWdlbmQgbGlzdCBmb3IgdGhlIHN1cHBsaWVkIG1lbWJlciBsZXZlbCwgcmVzb2x2aW5nXHJcbiAgICogdGhlIHBpbGwgY29sb3IgZnJvbSB0aGUgYGNvbnN0YW50cy5qc29uYCBjb2xvciBtYXAgYW5kIGZhbGxpbmcgYmFjayB0byB0aGVcclxuICAgKiBjb25maWd1cmVkIGRlZmF1bHQgY29sb3Igd2hlbiB0aGUgbGV2ZWwgaGFzIG5vIGV4cGxpY2l0IG1hcHBpbmcuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbWJlckxldmVsIC0gVGhlIG1lbWJlci1sZXZlbCBsYWJlbCB0byByZW5kZXIuXHJcbiAgICogQHJldHVybiB7TGVnZW5kW119IEEgc2luZ2xlLWVsZW1lbnQgTGVnZW5kIGFycmF5IGZvciB0aGUgTGVnZW5kIGNvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgTWVtYmVyTGV2ZWxCYWRnZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRMZWdlbmRzKG1lbWJlckxldmVsOiBzdHJpbmcpOiBMZWdlbmRbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IG1lbWJlckxldmVsLFxyXG4gICAgICAgIGNvbG9yOiB0aGlzLnJlc29sdmVDb2xvckNsYXNzKG1lbWJlckxldmVsKSxcclxuICAgICAgICBoaWVyYXJjaHk6IDAsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgdGhlIENTUyBtb2RpZmllciBjbGFzcyBmb3IgYSBtZW1iZXIgbGV2ZWwgZnJvbSB0aGUgYGNvbnN0YW50cy5qc29uYFxyXG4gICAqIGNvbG9yIG1hcCwgdXNpbmcgdGhlIGA/P2AgZmFsbGJhY2sgdG8gdGhlIGBkZWZhdWx0YCBlbnRyeSB3aGVuIHRoZSBsZXZlbCBpc1xyXG4gICAqIG1pc3NpbmcgZnJvbSB0aGUgbWFwLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1iZXJMZXZlbCAtIFRoZSBtZW1iZXItbGV2ZWwgbGFiZWwgdG8gcmVzb2x2ZSBhIGNvbG9yIGZvci5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBDU1MgbW9kaWZpZXIgY2xhc3MgYXBwbGllZCB0byB0aGUgcGlsbC5cclxuICAgKiBAbWVtYmVyb2YgTWVtYmVyTGV2ZWxCYWRnZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzb2x2ZUNvbG9yQ2xhc3MobWVtYmVyTGV2ZWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb2xvck1hcCA9IHRoaXMuY29uc3RhbnRzPy5tZW1iZXJMZXZlbD8uY29sb3JNYXAgYXNcclxuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgICAgIHwgdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgdG9rZW4gPVxyXG4gICAgICBjb2xvck1hcD8uW21lbWJlckxldmVsXSA/PyBjb2xvck1hcD8uWydkZWZhdWx0J10gPz8gJyRpZWVlc2EtY29sb3ItbmV1dHJhbCc7XHJcbiAgICByZXR1cm4gdGhpcy50b0NvbG9yQ2xhc3ModG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBzaGFyZWQtc3R5bGVzIGNvbG9yIHRva2VuIChmb3IgZXhhbXBsZSBgJGllZWVzYS1jb2xvci1zdWNjZXNzYClcclxuICAgKiBpbnRvIGEgdmFsaWQgQkVNLXN0eWxlIENTUyBtb2RpZmllciBjbGFzcyBkZWZpbmVkIGluIHRoaXMgY29tcG9uZW50J3MgU0NTUy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSBUaGUgY29sb3IgdG9rZW4gZnJvbSB0aGUgY29sb3IgbWFwLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQSB2YWxpZCBDU1MgY2xhc3MgbmFtZS5cclxuICAgKiBAbWVtYmVyb2YgTWVtYmVyTGV2ZWxCYWRnZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9Db2xvckNsYXNzKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRva2VuLnJlcGxhY2UoL15cXCRpZWVlc2EtY29sb3ItLywgJycpLnJlcGxhY2UoL15cXCQvLCAnJyk7XHJcbiAgICByZXR1cm4gYGllZWVzYS1tZW1iZXItbGV2ZWwtYmFkZ2UtLSR7bm9ybWFsaXplZCB8fCAnbmV1dHJhbCd9YDtcclxuICB9XHJcbn1cclxuIiwiPHNwYW5cclxuICBjbGFzcz1cImllZWVzYS1tZW1iZXItbGV2ZWwtYmFkZ2VcIlxyXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwibWVtYmVyTGV2ZWxcIlxyXG4+XHJcbiAgPGllZWVzYS1sZWdlbmRcclxuICAgICpuZ0lmPVwibWVtYmVyTGV2ZWxcIlxyXG4gICAgW2xlZ2VuZHNdPVwibGVnZW5kc1wiXHJcbiAgPjwvaWVlZXNhLWxlZ2VuZD5cclxuPC9zcGFuPlxyXG4iXX0=