@idea-ionic/agenda 6.3.0 → 6.3.3

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.
@@ -10,10 +10,6 @@ import * as i1 from "@ionic/angular";
10
10
  import * as i2 from "@idea-ionic/common";
11
11
  import * as i3 from "angular-calendar";
12
12
  import * as i4 from "@angular/common";
13
- /**
14
- * A local fallback URL for the avatars.
15
- */
16
- const AVATAR_FALLBACK_URL = './assets/imgs/no-avatar.jpg';
17
13
  export class IDEAAgendaComponent {
18
14
  constructor(platform, tc, t) {
19
15
  this.platform = platform;
@@ -194,20 +190,12 @@ export class IDEAAgendaComponent {
194
190
  getPreviewDescription(description) {
195
191
  return description && description.length > 100 ? description.slice(0, 100).concat('...') : description;
196
192
  }
197
- /**
198
- * Load a fallback url when the avatar is missing.
199
- */
200
- loadFallbackAvatar(targetImg) {
201
- const fallback = this.fallbackAvatar || AVATAR_FALLBACK_URL;
202
- if (targetImg && targetImg.src !== fallback)
203
- targetImg.src = fallback;
204
- }
205
193
  }
206
194
  IDEAAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token: i1.Platform }, { token: i2.IDEATinCanService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
207
- IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture", fallbackAvatar: "fallbackAvatar" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], components: [{ type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i3.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { type: i3.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { type: i1.IonAvatar, selector: "ion-avatar" }, { type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { type: i3.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { type: i3.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { type: i3.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i3.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { type: i3.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { type: i3.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i2.IDEATranslatePipe, "calendarDate": i3.ɵCalendarDatePipe, "calendarA11y": i3.ɵCalendarA11yPipe, "calendarEventTitle": i3.ɵCalendarEventTitlePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
195
+ IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], components: [{ type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i3.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { type: i3.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { type: i2.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { type: i3.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { type: i3.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { type: i3.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i3.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { type: i3.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { type: i3.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { type: i3.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i2.IDEATranslatePipe, "calendarDate": i3.ɵCalendarDatePipe, "calendarA11y": i3.ɵCalendarA11yPipe, "calendarEventTitle": i3.ɵCalendarEventTitlePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
208
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
209
197
  type: Component,
210
- args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"] }]
198
+ args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"] }]
211
199
  }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i2.IDEATinCanService }, { type: i2.IDEATranslationsService }]; }, propDecorators: { events: [{
212
200
  type: Input
213
201
  }], excludeDays: [{
@@ -224,8 +212,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
224
212
  type: Input
225
213
  }], onlyFuture: [{
226
214
  type: Input
227
- }], fallbackAvatar: [{
228
- type: Input
229
215
  }], selectEvent: [{
230
216
  type: Output
231
217
  }], selectDay: [{
@@ -247,4 +233,4 @@ export var EventAttendance;
247
233
  EventAttendance[EventAttendance["TENTATIVE"] = 1] = "TENTATIVE";
248
234
  EventAttendance[EventAttendance["ACCEPTED"] = 2] = "ACCEPTED";
249
235
  })(EventAttendance || (EventAttendance = {}));
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxhQUFhO0FBQ2IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELGFBQWE7QUFDYixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUdyQzs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsNkJBQTZCLENBQUM7QUFRMUQsTUFBTSxPQUFPLG1CQUFtQjtJQXNGOUIsWUFBbUIsUUFBa0IsRUFBUyxFQUFxQixFQUFTLENBQTBCO1FBQW5GLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBckZ0Rzs7V0FFRztRQUNhLFdBQU0sR0FBa0IsRUFBRSxDQUFDO1FBQzNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDYSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQzs7V0FFRztRQUNhLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hDOztXQUVHO1FBQ2EsU0FBSSxHQUFpQixZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ3ZEOztXQUVHO1FBQ2EsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUtuQzs7V0FFRztRQUNjLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUMvRDs7V0FFRztRQUNjLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3REOztXQUVHO1FBQ2MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkQ7O1dBRUc7UUFDYyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDL0Q7O1dBRUc7UUFDYyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2RDs7V0FFRztRQUNJLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ25DOztXQUVHO1FBQ0ksYUFBUSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkM7O1dBRUc7UUFDSSxZQUFPLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFXN0M7O1dBRUc7UUFDSSxlQUFVLEdBQUcsZUFBZSxDQUFDO1FBRXBDLGFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDO0lBRW9DLENBQUM7SUFDbkcsUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0Qyw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0kscUJBQXFCLENBQUMsRUFBRSxJQUFJLEVBQW9DO1FBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7Z0JBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxFQUFFLE1BQU0sRUFBbUI7UUFDMUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLElBQVUsRUFBRSxjQUF3QjtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsSUFBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLE9BQWE7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBeUM7UUFDdEUsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQzFDLGdIQUFnSDtRQUNoSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDckcsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7O1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFrQztRQUNsRixtQkFBbUI7UUFDbkIsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdkIsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbkIsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxPQUFnQjtRQUN0RSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxLQUFrQjtRQUN6QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELElBQUksS0FBSyxDQUFDLFdBQVc7WUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLElBQUksS0FBSyxDQUFDLEtBQUs7WUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RixJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDekMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUIsQ0FBQyxXQUFtQjtRQUM5QyxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDekcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQWtCLENBQUMsU0FBYztRQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLG1CQUFtQixDQUFDO1FBQzVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEtBQUssUUFBUTtZQUFFLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0lBQ3hFLENBQUM7O2dIQXZNVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixrY0NyQmhDLHE0T0F5TEE7MkZEcEthLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxhQUFhLG1CQUNOLHVCQUF1QixDQUFDLE1BQU07cUtBUS9CLE1BQU07c0JBQXJCLEtBQUs7Z0JBSVUsV0FBVztzQkFBMUIsS0FBSztnQkFJVSxZQUFZO3NCQUEzQixLQUFLO2dCQUlVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBSVUsWUFBWTtzQkFBM0IsS0FBSztnQkFJVSxlQUFlO3NCQUE5QixLQUFLO2dCQUlVLElBQUk7c0JBQW5CLEtBQUs7Z0JBSVUsVUFBVTtzQkFBekIsS0FBSztnQkFJVSxjQUFjO3NCQUE3QixLQUFLO2dCQUlXLFdBQVc7c0JBQTNCLE1BQU07Z0JBSVUsU0FBUztzQkFBekIsTUFBTTtnQkFJVSxVQUFVO3NCQUExQixNQUFNO2dCQUlVLFdBQVc7c0JBQTNCLE1BQU07Z0JBSVUsVUFBVTtzQkFBMUIsTUFBTTs7QUFvTFQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3pCLDhEQUFhLENBQUE7SUFDYixxRUFBZ0IsQ0FBQTtJQUNoQiwrREFBUyxDQUFBO0lBQ1QsNkRBQVEsQ0FBQTtBQUNWLENBQUMsRUFMVyxlQUFlLEtBQWYsZUFBZSxRQUsxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCwgQ2FsZW5kYXJNb250aFZpZXdEYXksIENhbGVuZGFyVmlldyB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSB9IGZyb20gJ2RhdGUtZm5zJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCBDb2xvclBhcnNlIGZyb20gJ2NvbG9yLXBhcnNlJztcbmltcG9ydCB7IElERUFUaW5DYW5TZXJ2aWNlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbi8qKlxuICogQSBsb2NhbCBmYWxsYmFjayBVUkwgZm9yIHRoZSBhdmF0YXJzLlxuICovXG5jb25zdCBBVkFUQVJfRkFMTEJBQ0tfVVJMID0gJy4vYXNzZXRzL2ltZ3Mvbm8tYXZhdGFyLmpwZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtYWdlbmRhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnYWdlbmRhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2FnZW5kYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFBZ2VuZGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudHM6IEFnZW5kYUV2ZW50W10gPSBbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGRheSBpbmRleGVzICgwID0gc3VuZGF5LCAxID0gbW9uZGF5LCBldGMuKSB0aGF0IHdpbGwgYmUgaGlkZGVuIG9uIHRoZSB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV4Y2x1ZGVEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRheVN0YXJ0SG91ciA9IDA7XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5RW5kSG91ciA9IDIzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiBhbiBob3VyLiBNdXN0IGRpdmlkZSBlcXVhbGx5IGludG8gNjAuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaG91clNlZ21lbnRzID0gMjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb3BlbiB0aGUgY3VycmVudCBkYXkncyBkZXRhaWxzIHJpZ2h0IGF3YXkgaW4gbW9udGggdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWs7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGJsb2NrIGFueSBkYXkvc2xvdCBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmx5RnV0dXJlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBVUkwgdG8gdGhlIGZhbGxiYWNrIGF2YXRhciB0byBzaG93IGluIGNhc2UgdGhlIGF2YXRhciBvZiBhbiBldmVudCBpc24ndCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmYWxsYmFja0F2YXRhcjogc3RyaW5nO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSBkYXkgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdERheSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIHRpbWUgc2xvdCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0U2xvdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBjaGFuZ2VkIGRhdGUgKGRyYWcmZHJvcCBvciByZXNpemUpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHZpZXcgZGF0ZSBvZiByZWZlcmVuY2UgY2hhbmdlZCAoYmVjYXVzZSB3ZSBtb3ZlZCBpbnNpZGUgdGhlIGNhbGVuZGFyKS5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVYLlxuICAgKi9cbiAgcHVibGljIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyB2aWV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIC8qKlxuICAgKiBBIGNvbnRyb2xsZXIgdG8gcmVmcmVzaCB0aGUgY3VycmVudCB2aWV3LlxuICAgKi9cbiAgcHVibGljIHJlZnJlc2g6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKlxuICAgKiBUaGUgbG9jYWxlIHVzZWQgdG8gZm9ybWF0IGRhdGVzLlxuICAgKiBAaGlkZVxuICAgKi9cbiAgcHVibGljIGxvY2FsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXJ0aW5nIGRheSBmb3IgdGhlIHdlZWssIGFjY29yZGluZyB0byB0aGUgbG9jYWxlICgwID0gc3VuZGF5KS5cbiAgICogQGhpZGVcbiAgICovXG4gIHB1YmxpYyB3ZWVrU3RhcnRzT246IG51bWJlcjtcbiAgLyoqXG4gICAqIEhlbHBlciB0byB1c2UgdGhlIGVudW0gaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIEF0dGVuZGFuY2UgPSBFdmVudEF0dGVuZGFuY2U7XG5cbiAgZGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSwgcHVibGljIHRjOiBJREVBVGluQ2FuU2VydmljZSwgcHVibGljIHQ6IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKSB7fVxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLnQuZ2V0Q3VycmVudExhbmcoKTtcbiAgICAvLyBpbiBjYXNlIG9mIEl0YWxpYW4gbG9jYWxlIHRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrIGlzIG1vbmRheSAoMSksIG90aGVyd2lzZSBzdW5kYXkgKDApXG4gICAgdGhpcy53ZWVrU3RhcnRzT24gPSB0aGlzLmxvY2FsZSA9PT0gJ2l0JyA/IDEgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIG1vbnRoIHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgcHVibGljIGJlZm9yZU1vbnRoVmlld1JlbmRlcih7IGJvZHkgfTogeyBib2R5OiBDYWxlbmRhck1vbnRoVmlld0RheVtdIH0pIHtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSwgdHJ1ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVsL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIHB1YmxpYyBiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKHsgaGVhZGVyIH06IHsgaGVhZGVyOiBhbnkgfSkge1xuICAgIGhlYWRlci5mb3JFYWNoKChkYXk6IGFueSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlLCB0cnVlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRhdGUgaXMgdmFsaWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBkYXRlSXNWYWxpZChkYXRlOiBEYXRlLCBzYW1lRGF5SXNWYWxpZD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMub25seUZ1dHVyZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGlzRnV0dXJlKGRhdGUpIHx8IChzYW1lRGF5SXNWYWxpZCA/IGlzVG9kYXkoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IHZpZXcgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBwdWJsaWMgc2V0Vmlldyh2aWV3OiBDYWxlbmRhclZpZXcpIHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNoYW5nZSBvZiB0aGUgdmlldyBkYXRlIGFuZCBjbG9zZSB0aGUgZGV0YWlsIGNvbXBvbmVudCBvZiB0aGUgbW9udGggdmlldywgaWYgbmVlZGVkLlxuICAgKi9cbiAgcHVibGljIHZpZXdEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGF0ZS5lbWl0KG5ld0RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF5IHdhcyBzZWxlY3RlZDogbWFuYWdlIHRoZSBkZXRhaWxlZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIGNoYW5nZURheSh7IGRhdGUsIGV2ZW50cyB9OiB7IGRhdGU6IERhdGU7IGV2ZW50czogQWdlbmRhRXZlbnRbXSB9KSB7XG4gICAgLy8gc2tpcCBpZiB0aGUgZGF0ZSBpc24ndCB2YWxpZFxuICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXRlLCB0cnVlKSkgcmV0dXJuO1xuICAgIC8vIGlmIHRoZSBzZWxlY3RlZCBkYXkgY2hhbmdlZCwgaWYgdGhlIG5ldyBkYXkgaGFzIGV2ZW50cywgb3BlbiB0aGUgZGV0YWlscyBpbiBtb250aCB2aWV3IChvdGhlcndpc2UgY2xvc2UgdGhlbSlcbiAgICBpZiAoKGlzU2FtZURheSh0aGlzLnZpZXdEYXRlLCBkYXRlKSAmJiB0aGlzLmFjdGl2ZURheUlzT3BlbiA9PT0gdHJ1ZSkgfHwgIWV2ZW50cyB8fCBldmVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICBlbHNlIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gdHJ1ZTtcbiAgICAvLyB1cGRhdGUgdGhlIGN1cnJlbnQgZGF0ZSBpbiB0aGUgYWdlbmRhXG4gICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRpbWUgb2YgYW4gZXZlbnQgd2FzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgZXZlbnRUaW1lc0NoYW5nZWQoeyBldmVudCwgbmV3U3RhcnQsIG5ld0VuZCB9OiBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQpIHtcbiAgICAvLyB1cGRhdGUgdGhlIGV2ZW50XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgLy8gcmUtbWFwIHRoZSBhcnJheSB0byB0cmlnZ2VyIHRoZSBVSSByZWZyZXNoXG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIC8vIHRyaWdnZXIgdGhlIGV2ZW50IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbG9yLCBpdCByZXR1cm5zIGFuIG9wYXF1ZSB2ZXJzaW9uIG9mIGl0LlxuICAgKi9cbiAgcHVibGljIGdldEFsdGVybmF0ZUNvbG9yKGNvbG9yOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBvcGFjaXR5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yKTtcbiAgICBjb25zdCByID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1swXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1sxXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBiID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1syXSkgKyBhbW91bnQpLCAwKTtcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IHx8IDF9KWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb250ZW50IG9mIHRoZSB0b29sdGlwIGJhc2VkIG9uIHRoZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LmRlc2NyaXB0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQuZGVzY3JpcHRpb24pO1xuICAgIGlmIChldmVudC5pY29ucykgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2hvcnRlbmVkIHZlcnNpb24gb2YgdGhlIGRlc2NyaXB0aW9uIGFzIHByZXZpZXcuXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi5sZW5ndGggPiAxMDAgPyBkZXNjcmlwdGlvbi5zbGljZSgwLCAxMDApLmNvbmNhdCgnLi4uJykgOiBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgZmFsbGJhY2sgdXJsIHdoZW4gdGhlIGF2YXRhciBpcyBtaXNzaW5nLlxuICAgKi9cbiAgcHVibGljIGxvYWRGYWxsYmFja0F2YXRhcih0YXJnZXRJbWc6IGFueSkge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gdGhpcy5mYWxsYmFja0F2YXRhciB8fCBBVkFUQVJfRkFMTEJBQ0tfVVJMO1xuICAgIGlmICh0YXJnZXRJbWcgJiYgdGFyZ2V0SW1nLnNyYyAhPT0gZmFsbGJhY2spIHRhcmdldEltZy5zcmMgPSBmYWxsYmFjaztcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50IChlLmcuIGN1c3RvbWVyLCBhZGRyZXNzLCBldGMuKS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBldmVudC5cbiAgICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBsaXN0IG9mIFVSTHMgb2YgaW1hZ2VzIHRvIHNob3cgYXMgc21hbGwgYXZhdGFycy5cbiAgICovXG4gIGF2YXRhcnM/OiB7IGlkOiBzdHJpbmc7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpb24taWNvbnMgdG8gc2hvdy5cbiAgICovXG4gIGljb25zPzogeyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZXZlbnQgaXMgZXh0ZXJuYWw7IGV4dGVybmFsIGV2ZW50cyBhcmUgbGVzcyBpbXBvcnRhbnQgVUktd2lzZS5cbiAgICovXG4gIGV4dGVybmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhdHRlbmRhbmNlIHN0YXR1cyB0byB0aGlzIGV2ZW50LCBpZiBhbnkuXG4gICAqL1xuICBhdHRlbmRhbmNlPzogRXZlbnRBdHRlbmRhbmNlO1xuICAvKipcbiAgICogQSBzdGFuZGFyZCBhbmQgdW5pcXVlIGlkIGZvciB0aGUgZXZlbnQsIHZhbGlkIGFjcm9zcyBtdWx0aXBsZSBzb3VyY2VzLlxuICAgKi9cbiAgaUNhbFVJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBhdHRlbmRhbmNlIHN0YXR1c2VzIGZvciB0aGUgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIEV2ZW50QXR0ZW5kYW5jZSB7XG4gIERFQ0xJTkVEID0gLTEsXG4gIE5FRURTX0FDVElPTiA9IDAsXG4gIFRFTlRBVElWRSxcbiAgQUNDRVBURURcbn1cbiIsIjxkaXYgY2xhc3M9XCJhZ2VuZGFcIj5cbiAgPCEtLSBUT09MQkFSIC0tPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiNVwiXG4gICAgICBbc2l6ZVNtXT1cIjNcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cImNhbGVuZGFyVmlld1NlbGVjdG9yXCI+XG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZpZXdcIlxuICAgICAgICAgIChpb25DaGFuZ2UpPVwiJGV2ZW50Py5kZXRhaWwgPyBzZXRWaWV3KCRldmVudC5kZXRhaWwudmFsdWUpIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIkNhbGVuZGFyVmlldy5Nb250aFwiPnt7ICdJREVBX0FHRU5EQS5NT05USCcgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LldlZWtcIj57eyAnSURFQV9BR0VOREEuV0VFSycgfCB0cmFuc2xhdGUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiQ2FsZW5kYXJWaWV3LkRheVwiPnt7ICdJREVBX0FHRU5EQS5EQVknIHwgdHJhbnNsYXRlIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXJcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlOiB2aWV3ICsgJ1ZpZXdUaXRsZSc6dC5nZXRDdXJyZW50TGFuZygpIH19PC9oMj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPCEtLSBURU1QTEFURVMgKHRvdWNoIG9ubHkgd2hhdCdzIG5lY2Vzc2FyeSBhbmQgbGVhdmUgZXZlcnl0aGluZyBlbHNlIGFzIGl0IGlzKSAtLT5cbiAgPG5nLXRlbXBsYXRlICNldmVudFRpdGxlVGVtcGxhdGUgbGV0LWV2ZW50PVwiZXZlbnRcIiBsZXQtdmlldz1cInZpZXdcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnQtdGl0bGVcIlxuICAgICAgW2NsYXNzLm5vV3JhcF09XCJldmVudC5hbGxEYXlcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwie30gfCBjYWxlbmRhckExMXk6ICdoaWRlRXZlbnRUaXRsZSdcIlxuICAgID5cbiAgICAgIHt7IGV2ZW50LnRpdGxlIHwgY2FsZW5kYXJFdmVudFRpdGxlOiB2aWV3OmV2ZW50IH19XG4gICAgICA8cCAqbmdJZj1cIiFldmVudC5hbGxEYXlcIj57eyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZXZlbnQuZGVzY3JpcHRpb24pIH19PC9wPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2V2ZW50VGVtcGxhdGVcbiAgICBsZXQtd2Vla0V2ZW50PVwid2Vla0V2ZW50XCJcbiAgICBsZXQtdG9vbHRpcFBsYWNlbWVudD1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgIGxldC1ldmVudENsaWNrZWQ9XCJldmVudENsaWNrZWRcIlxuICAgIGxldC10b29sdGlwVGVtcGxhdGU9XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgIGxldC10b29sdGlwQXBwZW5kVG9Cb2R5PVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgbGV0LXRvb2x0aXBEaXNhYmxlZD1cInRvb2x0aXBEaXNhYmxlZFwiXG4gICAgbGV0LXRvb2x0aXBEZWxheT1cInRvb2x0aXBEZWxheVwiXG4gICAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gICAgbGV0LWRheXNJbldlZWs9XCJkYXlzSW5XZWVrXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50XCJcbiAgICAgIFtjbGFzcy5leHRlcm5hbF09XCJ3ZWVrRXZlbnQuZXZlbnQuZXh0ZXJuYWxcIlxuICAgICAgW2NsYXNzLm5lZWRzQWN0aW9uXT1cIkF0dGVuZGFuY2UuTkVFRFNfQUNUSU9OID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MuZGVjbGluZWRdPVwiQXR0ZW5kYW5jZS5ERUNMSU5FRCA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW2NsYXNzLnRlbnRhdGl2ZV09XCJBdHRlbmRhbmNlLlRFTlRBVElWRSA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIndlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3IucHJpbWFyeSwgZGFya01vZGUgPyA4MCA6IC00MClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWx0ZXJuYXRlQ29sb3Iod2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnksIGRhcmtNb2RlID8gNjAgOiA4MCwgMC4yKVwiXG4gICAgICBbbXdsQ2FsZW5kYXJUb29sdGlwXT1cIiF0b29sdGlwRGlzYWJsZWQgJiYgIXBsYXRmb3JtLmlzKCdtb2JpbGUnKSA/IGdldFRvb2x0aXBDb250ZW50KHdlZWtFdmVudC5ldmVudCkgOiAnJ1wiXG4gICAgICBbdG9vbHRpcFBsYWNlbWVudF09XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICAgIFt0b29sdGlwRXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgW3Rvb2x0aXBUZW1wbGF0ZV09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgW3Rvb2x0aXBBcHBlbmRUb0JvZHldPVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgICBbdG9vbHRpcERlbGF5XT1cInRvb2x0aXBEZWxheVwiXG4gICAgICAobXdsQ2xpY2spPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIChtd2xLZXlkb3duRW50ZXIpPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgeyBldmVudDogd2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnQsIGxvY2FsZTogbG9jYWxlIH0gfCBjYWxlbmRhckExMXk6ICdldmVudERlc2NyaXB0aW9uJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LWFjdGlvbnMgW2V2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCI+IDwvbXdsLWNhbGVuZGFyLWV2ZW50LWFjdGlvbnM+XG4gICAgICAmbmdzcDtcbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtdGl0bGVcbiAgICAgICAgW2V2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgICAgW2N1c3RvbVRlbXBsYXRlXT1cImV2ZW50VGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgIFt2aWV3XT1cImRheXNJbldlZWsgPT09IDEgPyAnZGF5JyA6ICd3ZWVrJ1wiXG4gICAgICA+XG4gICAgICA8L213bC1jYWxlbmRhci1ldmVudC10aXRsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJldmVudEdhZGdldHNcIiAqbmdJZj1cIiF3ZWVrRXZlbnQuZXZlbnQuYWxsRGF5XCI+XG4gICAgICAgIDxpb24taWNvbiAqbmdGb3I9XCJsZXQgaWNvbiBvZiB3ZWVrRXZlbnQuZXZlbnQuaWNvbnNcIiBbbmFtZV09XCJpY29uLm5hbWVcIiBbdGl0bGVdPVwiaWNvbi50aXRsZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDxpb24tYXZhdGFyICpuZ0Zvcj1cImxldCBhdmF0YXIgb2Ygd2Vla0V2ZW50LmV2ZW50LmF2YXRhcnNcIiBbdGl0bGVdPVwiYXZhdGFyLnRpdGxlXCI+XG4gICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJhdmF0YXIudXJsXCIgKGlvbkVycm9yKT1cImxvYWRGYWxsYmFja0F2YXRhcigkZXZlbnQ/LnRhcmdldClcIj48L2lvbi1pbWc+XG4gICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8IS0tIFZJRVdTIC0tPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gICAgPG13bC1jYWxlbmRhci1tb250aC12aWV3XG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQ2FsZW5kYXJWaWV3Lk1vbnRoXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFthY3RpdmVEYXlJc09wZW5dPVwiYWN0aXZlRGF5SXNPcGVuXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZXZlbnRUaXRsZVRlbXBsYXRlXT1cImV2ZW50VGl0bGVUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoZGF5Q2xpY2tlZCk9XCJjaGFuZ2VEYXkoJGV2ZW50LmRheSlcIlxuICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlTW9udGhWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci1tb250aC12aWV3PlxuICAgIDxtd2wtY2FsZW5kYXItd2Vlay12aWV3XG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQ2FsZW5kYXJWaWV3LldlZWtcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2V4Y2x1ZGVEYXlzXT1cImV4Y2x1ZGVEYXlzXCJcbiAgICAgIFt3ZWVrU3RhcnRzT25dPVwid2Vla1N0YXJ0c09uXCJcbiAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgIFtkYXlFbmRIb3VyXT1cImRheUVuZEhvdXJcIlxuICAgICAgW2hvdXJTZWdtZW50c109XCJob3VyU2VnbWVudHNcIlxuICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoZGF5SGVhZGVyQ2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF5LmRhdGUpID8gc2VsZWN0RGF5LmVtaXQoJGV2ZW50LmRheS5kYXRlKSA6IG51bGxcIlxuICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgID5cbiAgICA8L213bC1jYWxlbmRhci13ZWVrLXZpZXc+XG4gICAgPG13bC1jYWxlbmRhci1kYXktdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5EYXlcIlxuICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIChob3VyU2VnbWVudENsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRhdGUpID8gc2VsZWN0U2xvdC5lbWl0KCRldmVudC5kYXRlKSA6IG51bGxcIlxuICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItZGF5LXZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUF1RSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNySCxhQUFhO0FBQ2IsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELGFBQWE7QUFDYixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVNyQyxNQUFNLE9BQU8sbUJBQW1CO0lBa0Y5QixZQUFtQixRQUFrQixFQUFTLEVBQXFCLEVBQVMsQ0FBMEI7UUFBbkYsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBeUI7UUFqRnRHOztXQUVHO1FBQ2EsV0FBTSxHQUFrQixFQUFFLENBQUM7UUFDM0M7O1dBRUc7UUFDYSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2EsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNhLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDOztXQUVHO1FBQ2Esb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEM7O1dBRUc7UUFDYSxTQUFJLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENB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Q29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFdmVudCwgQ2FsZW5kYXJFdmVudFRpbWVzQ2hhbmdlZEV2ZW50LCBDYWxlbmRhck1vbnRoVmlld0RheSwgQ2FsZW5kYXJWaWV3IH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBpc0Z1dHVyZSwgaXNUb2RheSwgaXNTYW1lRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRpbkNhblNlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1hZ2VuZGEnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICdhZ2VuZGEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYWdlbmRhLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUFnZW5kYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGV2ZW50czogQWdlbmRhRXZlbnRbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZGF5IGluZGV4ZXMgKDAgPSBzdW5kYXksIDEgPSBtb25kYXksIGV0Yy4pIHRoYXQgd2lsbCBiZSBoaWRkZW4gb24gdGhlIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZXhjbHVkZURheXM6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGF5U3RhcnRIb3VyID0gMDtcbiAgLyoqXG4gICAqIFRoZSBkYXkgc3RhcnQgaG91cnMgaW4gMjQgaG91ciB0aW1lLiBNdXN0IGJlIDAtMjNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXlFbmRIb3VyID0gMjM7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIGFuIGhvdXIuIE11c3QgZGl2aWRlIGVxdWFsbHkgaW50byA2MC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBob3VyU2VnbWVudHMgPSAyO1xuICAvKipcbiAgICogV2hldGhlciB0byBvcGVuIHRoZSBjdXJyZW50IGRheSdzIGRldGFpbHMgcmlnaHQgYXdheSBpbiBtb250aCB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIHZpZXcgbW9kZSBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXcuV2VlaztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYmxvY2sgYW55IGRheS9zbG90IGluIHRoZSBwYXN0LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG9ubHlGdXR1cmUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFnZW5kYUV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgZGF5IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3REYXkgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSB0aW1lIHNsb3QgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdFNsb3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYW4gZXZlbnQgY2hhbmdlZCBkYXRlIChkcmFnJmRyb3Agb3IgcmVzaXplKS5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFnZW5kYUV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIHRoZSB2aWV3IGRhdGUgb2YgcmVmZXJlbmNlIGNoYW5nZWQgKGJlY2F1c2Ugd2UgbW92ZWQgaW5zaWRlIHRoZSBjYWxlbmRhcikuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZURhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gdXNlIHRoZSBlbnVtIGluIHRoZSBVWC5cbiAgICovXG4gIHB1YmxpYyBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgdmlld0RhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvKipcbiAgICogQSBjb250cm9sbGVyIHRvIHJlZnJlc2ggdGhlIGN1cnJlbnQgdmlldy5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKipcbiAgICogVGhlIGxvY2FsZSB1c2VkIHRvIGZvcm1hdCBkYXRlcy5cbiAgICogQGhpZGVcbiAgICovXG4gIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrLCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSAoMCA9IHN1bmRheSkuXG4gICAqIEBoaWRlXG4gICAqL1xuICBwdWJsaWMgd2Vla1N0YXJ0c09uOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gdXNlIHRoZSBlbnVtIGluIHRoZSBVSS5cbiAgICovXG4gIHB1YmxpYyBBdHRlbmRhbmNlID0gRXZlbnRBdHRlbmRhbmNlO1xuXG4gIGRhcmtNb2RlID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm0sIHB1YmxpYyB0YzogSURFQVRpbkNhblNlcnZpY2UsIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZSkge31cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy50LmdldEN1cnJlbnRMYW5nKCk7XG4gICAgLy8gaW4gY2FzZSBvZiBJdGFsaWFuIGxvY2FsZSB0aGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlayBpcyBtb25kYXkgKDEpLCBvdGhlcndpc2Ugc3VuZGF5ICgwKVxuICAgIHRoaXMud2Vla1N0YXJ0c09uID0gdGhpcy5sb2NhbGUgPT09ICdpdCcgPyAxIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSBtb250aCB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIHB1YmxpYyBiZWZvcmVNb250aFZpZXdSZW5kZXIoeyBib2R5IH06IHsgYm9keTogQ2FsZW5kYXJNb250aFZpZXdEYXlbXSB9KSB7XG4gICAgYm9keS5mb3JFYWNoKGRheSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF5LmRhdGUsIHRydWUpKSBkYXkuY3NzQ2xhc3MgPSAnY2FsLWRpc2FibGVkJztcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgd2VlbC9kYXkgdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBwdWJsaWMgYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcih7IGhlYWRlciB9OiB7IGhlYWRlcjogYW55IH0pIHtcbiAgICBoZWFkZXIuZm9yRWFjaCgoZGF5OiBhbnkpID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSwgdHJ1ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBkYXRlIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBjb25maWd1cmVkIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgZGF0ZUlzVmFsaWQoZGF0ZTogRGF0ZSwgc2FtZURheUlzVmFsaWQ/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm9ubHlGdXR1cmUpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBpc0Z1dHVyZShkYXRlKSB8fCAoc2FtZURheUlzVmFsaWQgPyBpc1RvZGF5KGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgY3VycmVudCB2aWV3IGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgcHVibGljIHNldFZpZXcodmlldzogQ2FsZW5kYXJWaWV3KSB7XG4gICAgdGhpcy52aWV3ID0gdmlldztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSBjaGFuZ2Ugb2YgdGhlIHZpZXcgZGF0ZSBhbmQgY2xvc2UgdGhlIGRldGFpbCBjb21wb25lbnQgb2YgdGhlIG1vbnRoIHZpZXcsIGlmIG5lZWRlZC5cbiAgICovXG4gIHB1YmxpYyB2aWV3RGF0ZUNoYW5nZWQobmV3RGF0ZTogRGF0ZSkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IENhbGVuZGFyVmlldy5Nb250aCkgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURhdGUuZW1pdChuZXdEYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGRheSB3YXMgc2VsZWN0ZWQ6IG1hbmFnZSB0aGUgZGV0YWlsZWQgdmlldy5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VEYXkoeyBkYXRlLCBldmVudHMgfTogeyBkYXRlOiBEYXRlOyBldmVudHM6IEFnZW5kYUV2ZW50W10gfSkge1xuICAgIC8vIHNraXAgaWYgdGhlIGRhdGUgaXNuJ3QgdmFsaWRcbiAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF0ZSwgdHJ1ZSkpIHJldHVybjtcbiAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgZGF5IGNoYW5nZWQsIGlmIHRoZSBuZXcgZGF5IGhhcyBldmVudHMsIG9wZW4gdGhlIGRldGFpbHMgaW4gbW9udGggdmlldyAob3RoZXJ3aXNlIGNsb3NlIHRoZW0pXG4gICAgaWYgKChpc1NhbWVEYXkodGhpcy52aWV3RGF0ZSwgZGF0ZSkgJiYgdGhpcy5hY3RpdmVEYXlJc09wZW4gPT09IHRydWUpIHx8ICFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IHRydWU7XG4gICAgLy8gdXBkYXRlIHRoZSBjdXJyZW50IGRhdGUgaW4gdGhlIGFnZW5kYVxuICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIG9mIGFuIGV2ZW50IHdhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHVibGljIGV2ZW50VGltZXNDaGFuZ2VkKHsgZXZlbnQsIG5ld1N0YXJ0LCBuZXdFbmQgfTogQ2FsZW5kYXJFdmVudFRpbWVzQ2hhbmdlZEV2ZW50KSB7XG4gICAgLy8gdXBkYXRlIHRoZSBldmVudFxuICAgIGV2ZW50LnN0YXJ0ID0gbmV3U3RhcnQ7XG4gICAgZXZlbnQuZW5kID0gbmV3RW5kO1xuICAgIC8vIHJlLW1hcCB0aGUgYXJyYXkgdG8gdHJpZ2dlciB0aGUgVUkgcmVmcmVzaFxuICAgIHRoaXMuZXZlbnRzID0gdGhpcy5ldmVudHMuc2xpY2UoKTtcbiAgICAvLyB0cmlnZ2VyIHRoZSBldmVudCB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBjb2xvciwgaXQgcmV0dXJucyBhbiBvcGFxdWUgdmVyc2lvbiBvZiBpdC5cbiAgICovXG4gIHB1YmxpYyBnZXRBbHRlcm5hdGVDb2xvcihjb2xvcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgb3BhY2l0eT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgYWx0ID0gQ29sb3JQYXJzZShjb2xvcik7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMF0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgZyA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMV0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgYiA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMl0pICsgYW1vdW50KSwgMCk7XG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSB8fCAxfSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcCBiYXNlZCBvbiB0aGUgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9vbHRpcENvbnRlbnQoZXZlbnQ6IEFnZW5kYUV2ZW50KTogc3RyaW5nIHtcbiAgICBpZiAoIWV2ZW50KSByZXR1cm4gJyc7XG4gICAgbGV0IHN0ciA9IGV2ZW50LnRpdGxlID8gJzxiPicgKyBldmVudC50aXRsZSArICc8L2I+JyA6ICcnO1xuICAgIGlmIChldmVudC5kZXNjcmlwdGlvbikgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIGV2ZW50LmRlc2NyaXB0aW9uKTtcbiAgICBpZiAoZXZlbnQuaWNvbnMpIGV2ZW50Lmljb25zLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsICc8aT4nLCB4LnRpdGxlLCAnPC9pPicpKSk7XG4gICAgaWYgKGV2ZW50LmF2YXRhcnMgJiYgZXZlbnQuYXZhdGFycy5sZW5ndGgpIHtcbiAgICAgIHN0ciA9IHN0ci5jb25jYXQoJzxicj48YnI+ficpO1xuICAgICAgZXZlbnQuYXZhdGFycy5mb3JFYWNoKHggPT4gKHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCB4LnRpdGxlKSkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNob3J0ZW5lZCB2ZXJzaW9uIG9mIHRoZSBkZXNjcmlwdGlvbiBhcyBwcmV2aWV3LlxuICAgKi9cbiAgcHVibGljIGdldFByZXZpZXdEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGVzY3JpcHRpb24gJiYgZGVzY3JpcHRpb24ubGVuZ3RoID4gMTAwID8gZGVzY3JpcHRpb24uc2xpY2UoMCwgMTAwKS5jb25jYXQoJy4uLicpIDogZGVzY3JpcHRpb247XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJpY2hlciB2ZXJzaW9uIG9mIHRoZSBjbGFzc2ljIENhbGVuZGFyRXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbmRhRXZlbnQgZXh0ZW5kcyBDYWxlbmRhckV2ZW50IHtcbiAgLyoqXG4gICAqIEEgYnJpZWYgZGVzY3JpcHRpb24gZm9yIHRoZSBldmVudCAoZS5nLiBjdXN0b21lciwgYWRkcmVzcywgZXRjLikuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICBsb2NhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVUkxzIG9mIGltYWdlcyB0byBzaG93IGFzIHNtYWxsIGF2YXRhcnMuXG4gICAqL1xuICBhdmF0YXJzPzogeyBpZDogc3RyaW5nOyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W107XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaW9uLWljb25zIHRvIHNob3cuXG4gICAqL1xuICBpY29ucz86IHsgbmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGV2ZW50IGlzIGV4dGVybmFsOyBleHRlcm5hbCBldmVudHMgYXJlIGxlc3MgaW1wb3J0YW50IFVJLXdpc2UuXG4gICAqL1xuICBleHRlcm5hbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYXR0ZW5kYW5jZSBzdGF0dXMgdG8gdGhpcyBldmVudCwgaWYgYW55LlxuICAgKi9cbiAgYXR0ZW5kYW5jZT86IEV2ZW50QXR0ZW5kYW5jZTtcbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgYW5kIHVuaXF1ZSBpZCBmb3IgdGhlIGV2ZW50LCB2YWxpZCBhY3Jvc3MgbXVsdGlwbGUgc291cmNlcy5cbiAgICovXG4gIGlDYWxVSUQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUG9zc2libGUgYXR0ZW5kYW5jZSBzdGF0dXNlcyBmb3IgdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZW51bSBFdmVudEF0dGVuZGFuY2Uge1xuICBERUNMSU5FRCA9IC0xLFxuICBORUVEU19BQ1RJT04gPSAwLFxuICBURU5UQVRJVkUsXG4gIEFDQ0VQVEVEXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWdlbmRhXCI+XG4gIDwhLS0gVE9PTEJBUiAtLT5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjVcIlxuICAgICAgW3NpemVTbV09XCIzXCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY2xhc3M9XCJjYWxlbmRhclZpZXdTZWxlY3RvclwiPlxuICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2aWV3XCJcbiAgICAgICAgICAoaW9uQ2hhbmdlKT1cIiRldmVudD8uZGV0YWlsID8gc2V0VmlldygkZXZlbnQuZGV0YWlsLnZhbHVlKSA6IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJDYWxlbmRhclZpZXcuTW9udGhcIj57eyAnSURFQV9BR0VOREEuTU9OVEgnIHwgdHJhbnNsYXRlIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIkNhbGVuZGFyVmlldy5XZWVrXCI+e3sgJ0lERUFfQUdFTkRBLldFRUsnIHwgdHJhbnNsYXRlIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIkNhbGVuZGFyVmlldy5EYXlcIj57eyAnSURFQV9BR0VOREEuREFZJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sXG4gICAgICBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlciBpb24tdGV4dC1yaWdodFwiXG4gICAgICBbc2l6ZV09XCI3XCJcbiAgICAgIFtzaXplU21dPVwiNFwiXG4gICAgICBbcHVzaFNtXT1cIjVcIlxuICAgICAgW3NpemVMZ109XCIyXCJcbiAgICAgIFtwdXNoTGddPVwiOFwiXG4gICAgPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgbXdsQ2FsZW5kYXJQcmV2aW91c1ZpZXdcbiAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgbXdsQ2FsZW5kYXJUb2RheVxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwidG9kYXktb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgbXdsQ2FsZW5kYXJOZXh0Vmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyXCIgW3NpemVdPVwiMTJcIiBbc2l6ZVNtXT1cIjVcIiBbcHVsbFNtXT1cIjdcIiBbc2l6ZUxnXT1cIjhcIiBbcHVsbExnXT1cIjRcIj5cbiAgICAgIDxoMj57eyB2aWV3RGF0ZSB8IGNhbGVuZGFyRGF0ZTogdmlldyArICdWaWV3VGl0bGUnOnQuZ2V0Q3VycmVudExhbmcoKSB9fTwvaDI+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDwhLS0gVEVNUExBVEVTICh0b3VjaCBvbmx5IHdoYXQncyBuZWNlc3NhcnkgYW5kIGxlYXZlIGV2ZXJ5dGhpbmcgZWxzZSBhcyBpdCBpcykgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjZXZlbnRUaXRsZVRlbXBsYXRlIGxldC1ldmVudD1cImV2ZW50XCIgbGV0LXZpZXc9XCJ2aWV3XCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50LXRpdGxlXCJcbiAgICAgIFtjbGFzcy5ub1dyYXBdPVwiZXZlbnQuYWxsRGF5XCJcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInt9IHwgY2FsZW5kYXJBMTF5OiAnaGlkZUV2ZW50VGl0bGUnXCJcbiAgICA+XG4gICAgICB7eyBldmVudC50aXRsZSB8IGNhbGVuZGFyRXZlbnRUaXRsZTogdmlldzpldmVudCB9fVxuICAgICAgPHAgKm5nSWY9XCIhZXZlbnQuYWxsRGF5XCI+e3sgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGV2ZW50LmRlc2NyaXB0aW9uKSB9fTwvcD5cbiAgICA8L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNldmVudFRlbXBsYXRlXG4gICAgbGV0LXdlZWtFdmVudD1cIndlZWtFdmVudFwiXG4gICAgbGV0LXRvb2x0aXBQbGFjZW1lbnQ9XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICBsZXQtZXZlbnRDbGlja2VkPVwiZXZlbnRDbGlja2VkXCJcbiAgICBsZXQtdG9vbHRpcFRlbXBsYXRlPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICBsZXQtdG9vbHRpcEFwcGVuZFRvQm9keT1cInRvb2x0aXBBcHBlbmRUb0JvZHlcIlxuICAgIGxldC10b29sdGlwRGlzYWJsZWQ9XCJ0b29sdGlwRGlzYWJsZWRcIlxuICAgIGxldC10b29sdGlwRGVsYXk9XCJ0b29sdGlwRGVsYXlcIlxuICAgIGxldC1jb2x1bW49XCJjb2x1bW5cIlxuICAgIGxldC1kYXlzSW5XZWVrPVwiZGF5c0luV2Vla1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhbC1ldmVudFwiXG4gICAgICBbY2xhc3MuZXh0ZXJuYWxdPVwid2Vla0V2ZW50LmV2ZW50LmV4dGVybmFsXCJcbiAgICAgIFtjbGFzcy5uZWVkc0FjdGlvbl09XCJBdHRlbmRhbmNlLk5FRURTX0FDVElPTiA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW2NsYXNzLmRlY2xpbmVkXT1cIkF0dGVuZGFuY2UuREVDTElORUQgPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy50ZW50YXRpdmVdPVwiQXR0ZW5kYW5jZS5URU5UQVRJVkUgPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJ3ZWVrRXZlbnQuZXZlbnQuY29sb3IucHJpbWFyeVwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0QWx0ZXJuYXRlQ29sb3Iod2Vla0V2ZW50LmV2ZW50LmNvbG9yLnByaW1hcnksIGRhcmtNb2RlID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvci5wcmltYXJ5LCBkYXJrTW9kZSA/IDYwIDogODAsIDAuMilcIlxuICAgICAgW213bENhbGVuZGFyVG9vbHRpcF09XCIhdG9vbHRpcERpc2FibGVkICYmICFwbGF0Zm9ybS5pcygnbW9iaWxlJykgPyBnZXRUb29sdGlwQ29udGVudCh3ZWVrRXZlbnQuZXZlbnQpIDogJydcIlxuICAgICAgW3Rvb2x0aXBQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgICBbdG9vbHRpcEV2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCJcbiAgICAgIFt0b29sdGlwVGVtcGxhdGVdPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICAgIFt0b29sdGlwQXBwZW5kVG9Cb2R5XT1cInRvb2x0aXBBcHBlbmRUb0JvZHlcIlxuICAgICAgW3Rvb2x0aXBEZWxheV09XCJ0b29sdGlwRGVsYXlcIlxuICAgICAgKG13bENsaWNrKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICAobXdsS2V5ZG93bkVudGVyKT1cImV2ZW50Q2xpY2tlZC5lbWl0KHsgc291cmNlRXZlbnQ6ICRldmVudCB9KVwiXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgIHsgZXZlbnQ6IHdlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50LCBsb2NhbGU6IGxvY2FsZSB9IHwgY2FsZW5kYXJBMTF5OiAnZXZlbnREZXNjcmlwdGlvbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiPiA8L213bC1jYWxlbmRhci1ldmVudC1hY3Rpb25zPlxuICAgICAgJm5nc3A7XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlXG4gICAgICAgIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICAgIFtjdXN0b21UZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbdmlld109XCJkYXlzSW5XZWVrID09PSAxID8gJ2RheScgOiAnd2VlaydcIlxuICAgICAgPlxuICAgICAgPC9td2wtY2FsZW5kYXItZXZlbnQtdGl0bGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRHYWRnZXRzXCIgKm5nSWY9XCIhd2Vla0V2ZW50LmV2ZW50LmFsbERheVwiPlxuICAgICAgICA8aW9uLWljb24gKm5nRm9yPVwibGV0IGljb24gb2Ygd2Vla0V2ZW50LmV2ZW50Lmljb25zXCIgW25hbWVdPVwiaWNvbi5uYW1lXCIgW3RpdGxlXT1cImljb24udGl0bGVcIj48L2lvbi1pY29uPlxuICAgICAgICA8aWRlYS11c2VyLWF2YXRhclxuICAgICAgICAgIHNpemU9XCJtaW5pXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhdGFyIG9mIHdlZWtFdmVudC5ldmVudC5hdmF0YXJzXCJcbiAgICAgICAgICBbc3JjXT1cImF2YXRhci51cmxcIlxuICAgICAgICAgIFtuYW1lXT1cImF2YXRhci50aXRsZVwiXG4gICAgICAgID48L2lkZWEtdXNlci1hdmF0YXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBWSUVXUyAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgIDxtd2wtY2FsZW5kYXItbW9udGgtdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5Nb250aFwiXG4gICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgW2V2ZW50VGl0bGVUZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUNsaWNrZWQpPVwiY2hhbmdlRGF5KCRldmVudC5kYXkpXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItbW9udGgtdmlldz5cbiAgICA8bXdsLWNhbGVuZGFyLXdlZWstdmlld1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkNhbGVuZGFyVmlldy5XZWVrXCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKGRheUhlYWRlckNsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRheS5kYXRlKSA/IHNlbGVjdERheS5lbWl0KCRldmVudC5kYXkuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChob3VyU2VnbWVudENsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRhdGUpID8gc2VsZWN0U2xvdC5lbWl0KCRldmVudC5kYXRlKSA6IG51bGxcIlxuICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9td2wtY2FsZW5kYXItd2Vlay12aWV3PlxuICAgIDxtd2wtY2FsZW5kYXItZGF5LXZpZXdcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJDYWxlbmRhclZpZXcuRGF5XCJcbiAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgIFtkYXlFbmRIb3VyXT1cImRheUVuZEhvdXJcIlxuICAgICAgW2hvdXJTZWdtZW50c109XCJob3VyU2VnbWVudHNcIlxuICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbXdsLWNhbGVuZGFyLWRheS12aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -5,7 +5,7 @@ import { IonicModule } from '@ionic/angular';
5
5
  import { CalendarDateFormatter, CalendarModule, DateAdapter } from 'angular-calendar';
6
6
  import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
7
7
  import { CustomDateFormatter } from './dateFormatter.provider';
8
- import { IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule } from '@idea-ionic/common';
8
+ import { IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule, IDEAUserAvatarModule } from '@idea-ionic/common';
9
9
  import { IDEAAgendaComponent } from './agenda.component';
10
10
  import { IDEACalendarComponent } from './calendar.component';
11
11
  import { IDEACalendarItemComponent } from './calendarItem.component';
@@ -21,7 +21,8 @@ IDEAAgendaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
21
21
  IonicModule,
22
22
  IDEATranslationsModule,
23
23
  IDEAColorPickerModule,
24
- IDEACheckerModule, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] });
24
+ IDEACheckerModule,
25
+ IDEAUserAvatarModule, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] });
25
26
  IDEAAgendaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [[
26
27
  CommonModule,
27
28
  FormsModule,
@@ -29,6 +30,7 @@ IDEAAgendaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
29
30
  IDEATranslationsModule,
30
31
  IDEAColorPickerModule,
31
32
  IDEACheckerModule,
33
+ IDEAUserAvatarModule,
32
34
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
33
35
  ]] });
34
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, decorators: [{
@@ -41,6 +43,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
41
43
  IDEATranslationsModule,
42
44
  IDEAColorPickerModule,
43
45
  IDEACheckerModule,
46
+ IDEAUserAvatarModule,
44
47
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
45
48
  ],
46
49
  declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent],
@@ -54,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
54
57
  providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService]
55
58
  }]
56
59
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCM0QsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQVZaLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixhQVJqSCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxzQkFBc0I7UUFDdEIscUJBQXFCO1FBQ3JCLGlCQUFpQixnQ0FVVCxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkI7OEdBR25HLGdCQUFnQixhQUZoQixDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLG9CQUFvQixDQUFDLFlBakIzRjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsV0FBVztZQUNYLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIsaUJBQWlCO1lBQ2pCLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUM3RTsyRkFXVSxnQkFBZ0I7a0JBcEI1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7cUJBQzdFO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixDQUFDO29CQUNwSCxlQUFlLEVBQUU7d0JBQ2YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDL0csU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3JHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQgeyBDYWxlbmRhckRhdGVGb3JtYXR0ZXIsIENhbGVuZGFyTW9kdWxlLCBEYXRlQWRhcHRlciB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgYWRhcHRlckZhY3RvcnkgfSBmcm9tICdhbmd1bGFyLWNhbGVuZGFyL2RhdGUtYWRhcHRlcnMvZGF0ZS1mbnMnO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUZvcm1hdHRlciB9IGZyb20gJy4vZGF0ZUZvcm1hdHRlci5wcm92aWRlcic7XG5cbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNNb2R1bGUsIElERUFDb2xvclBpY2tlck1vZHVsZSwgSURFQUNoZWNrZXJNb2R1bGUgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQWdlbmRhQ29tcG9uZW50IH0gZnJvbSAnLi9hZ2VuZGEuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFySXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyQ3JlYXRpb24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBJREVBVHJhbnNsYXRpb25zTW9kdWxlLFxuICAgIElERUFDb2xvclBpY2tlck1vZHVsZSxcbiAgICBJREVBQ2hlY2tlck1vZHVsZSxcbiAgICBDYWxlbmRhck1vZHVsZS5mb3JSb290KHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUZhY3Rvcnk6IGFkYXB0ZXJGYWN0b3J5IH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0lERUFBZ2VuZGFDb21wb25lbnQsIElERUFDYWxlbmRhckNvbXBvbmVudCwgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtcbiAgICBJREVBQWdlbmRhQ29tcG9uZW50LFxuICAgIElERUFDYWxlbmRhckNvbXBvbmVudCxcbiAgICBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50LFxuICAgIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtJREVBQWdlbmRhQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDb21wb25lbnQsIElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQsIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDYWxlbmRhckRhdGVGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0dGVyIH0sIElERUFDYWxlbmRhcnNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQWdlbmRhTW9kdWxlIHt9XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUF1QjNELE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkFWWixtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsYUFUakgsWUFBWTtRQUNaLFdBQVc7UUFDWCxXQUFXO1FBQ1gsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsb0JBQW9CLGdDQVVaLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2Qjs4R0FHbkcsZ0JBQWdCLGFBRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsb0JBQW9CLENBQUMsWUFsQjNGO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxXQUFXO1lBQ1gsc0JBQXNCO1lBQ3RCLHFCQUFxQjtZQUNyQixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ3BCLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUM3RTsyRkFXVSxnQkFBZ0I7a0JBckI1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztxQkFDN0U7b0JBQ0QsWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3BILGVBQWUsRUFBRTt3QkFDZixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIseUJBQXlCO3dCQUN6Qiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixDQUFDO29CQUMvRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztpQkFDckciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IENhbGVuZGFyRGF0ZUZvcm1hdHRlciwgQ2FsZW5kYXJNb2R1bGUsIERhdGVBZGFwdGVyIH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG5pbXBvcnQgeyBhZGFwdGVyRmFjdG9yeSB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXIvZGF0ZS1hZGFwdGVycy9kYXRlLWZucyc7XG5pbXBvcnQgeyBDdXN0b21EYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlRm9ybWF0dGVyLnByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgSURFQVRyYW5zbGF0aW9uc01vZHVsZSxcbiAgSURFQUNvbG9yUGlja2VyTW9kdWxlLFxuICBJREVBQ2hlY2tlck1vZHVsZSxcbiAgSURFQVVzZXJBdmF0YXJNb2R1bGVcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUFnZW5kYUNvbXBvbmVudCB9IGZyb20gJy4vYWdlbmRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhckl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhckNyZWF0aW9uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IElERUFDYWxlbmRhcnNTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhcnMuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0aW9uc01vZHVsZSxcbiAgICBJREVBQ29sb3JQaWNrZXJNb2R1bGUsXG4gICAgSURFQUNoZWNrZXJNb2R1bGUsXG4gICAgSURFQVVzZXJBdmF0YXJNb2R1bGUsXG4gICAgQ2FsZW5kYXJNb2R1bGUuZm9yUm9vdCh7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VGYWN0b3J5OiBhZGFwdGVyRmFjdG9yeSB9KVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtJREVBQWdlbmRhQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDb21wb25lbnQsIElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQsIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XSxcbiAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgSURFQUFnZW5kYUNvbXBvbmVudCxcbiAgICBJREVBQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCxcbiAgICBJREVBQ2FsZW5kYXJDcmVhdGlvbkNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSURFQUFnZW5kYUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDcmVhdGlvbkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2FsZW5kYXJEYXRlRm9ybWF0dGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUZvcm1hdHRlciB9LCBJREVBQ2FsZW5kYXJzU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgSURFQUFnZW5kYU1vZHVsZSB7fVxuIl19
@@ -10,7 +10,7 @@ import * as i3$1 from 'angular-calendar';
10
10
  import { CalendarDateFormatter, CalendarView, CalendarModule, DateAdapter } from 'angular-calendar';
11
11
  import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
12
12
  import * as i3 from '@idea-ionic/common';
13
- import { IDEASuggestionsComponent, IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule } from '@idea-ionic/common';
13
+ import { IDEASuggestionsComponent, IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule, IDEAUserAvatarModule } from '@idea-ionic/common';
14
14
  import { Subject } from 'rxjs';
15
15
  import { isFuture, isToday, isSameDay } from 'date-fns';
16
16
  import ColorParse from 'color-parse';
@@ -53,10 +53,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
53
53
  type: Injectable
54
54
  }] });
55
55
 
56
- /**
57
- * A local fallback URL for the avatars.
58
- */
59
- const AVATAR_FALLBACK_URL = './assets/imgs/no-avatar.jpg';
60
56
  class IDEAAgendaComponent {
61
57
  constructor(platform, tc, t) {
62
58
  this.platform = platform;
@@ -237,20 +233,12 @@ class IDEAAgendaComponent {
237
233
  getPreviewDescription(description) {
238
234
  return description && description.length > 100 ? description.slice(0, 100).concat('...') : description;
239
235
  }
240
- /**
241
- * Load a fallback url when the avatar is missing.
242
- */
243
- loadFallbackAvatar(targetImg) {
244
- const fallback = this.fallbackAvatar || AVATAR_FALLBACK_URL;
245
- if (targetImg && targetImg.src !== fallback)
246
- targetImg.src = fallback;
247
- }
248
236
  }
249
237
  IDEAAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, deps: [{ token: i2.Platform }, { token: i3.IDEATinCanService }, { token: i3.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
250
- IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture", fallbackAvatar: "fallbackAvatar" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], components: [{ type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i3$1.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { type: i3$1.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { type: i2.IonAvatar, selector: "ion-avatar" }, { type: i2.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { type: i3$1.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { type: i3$1.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { type: i3$1.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }], directives: [{ type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i3$1.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i3$1.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { type: i3$1.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { type: i3$1.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { type: i3$1.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i3.IDEATranslatePipe, "calendarDate": i3$1.ɵCalendarDatePipe, "calendarA11y": i3$1.ɵCalendarA11yPipe, "calendarEventTitle": i3$1.ɵCalendarEventTitlePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
238
+ IDEAAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", onlyFuture: "onlyFuture" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", changeEvent: "changeEvent", changeDate: "changeDate" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"], components: [{ type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "compareWith", "disabled", "interface", "interfaceOptions", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "value"] }, { type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i3$1.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { type: i3$1.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { type: i3.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { type: i3$1.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { type: i3$1.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { type: i3$1.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }], directives: [{ type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i3$1.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i3$1.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { type: i3$1.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { type: i3$1.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { type: i3$1.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i3.IDEATranslatePipe, "calendarDate": i3$1.ɵCalendarDatePipe, "calendarA11y": i3$1.ɵCalendarA11yPipe, "calendarEventTitle": i3$1.ɵCalendarEventTitlePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
251
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
252
240
  type: Component,
253
- args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <ion-avatar *ngFor=\"let avatar of weekEvent.event.avatars\" [title]=\"avatar.title\">\n <ion-img [src]=\"avatar.url\" (ionError)=\"loadFallbackAvatar($event?.target)\"></ion-img>\n </ion-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets ion-avatar{display:block;float:left;margin:2px 1px;width:14px;height:14px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"] }]
241
+ args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n <ion-select-option [value]=\"CalendarView.Month\">{{ 'IDEA_AGENDA.MONTH' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Week\">{{ 'IDEA_AGENDA.WEEK' | translate }}</ion-select-option>\n <ion-select-option [value]=\"CalendarView.Day\">{{ 'IDEA_AGENDA.DAY' | translate }}</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle':t.getCurrentLang() }}</h2>\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view:event }}\n <p *ngIf=\"!event.allDay\">{{ getPreviewDescription(event.description) }}</p>\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !platform.is('mobile') ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\"> </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n <div class=\"eventGadgets\" *ngIf=\"!weekEvent.event.allDay\">\n <ion-icon *ngFor=\"let icon of weekEvent.event.icons\" [name]=\"icon.name\" [title]=\"icon.title\"></ion-icon>\n <idea-user-avatar\n size=\"mini\"\n *ngFor=\"let avatar of weekEvent.event.avatars\"\n [src]=\"avatar.url\"\n [name]=\"avatar.title\"\n ></idea-user-avatar>\n </div>\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div [ngSwitch]=\"view\">\n <mwl-calendar-month-view\n *ngSwitchCase=\"CalendarView.Month\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n <mwl-calendar-week-view\n *ngSwitchCase=\"CalendarView.Week\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n <mwl-calendar-day-view\n *ngSwitchCase=\"CalendarView.Day\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda h2{margin:6px 10px;font-size:1.2em}.agenda .calendarViewSelector{--ion-item-background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda h2{margin:0 8px 12px;text-align:center}}\n"] }]
254
242
  }], ctorParameters: function () { return [{ type: i2.Platform }, { type: i3.IDEATinCanService }, { type: i3.IDEATranslationsService }]; }, propDecorators: { events: [{
255
243
  type: Input
256
244
  }], excludeDays: [{
@@ -267,8 +255,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
267
255
  type: Input
268
256
  }], onlyFuture: [{
269
257
  type: Input
270
- }], fallbackAvatar: [{
271
- type: Input
272
258
  }], selectEvent: [{
273
259
  type: Output
274
260
  }], selectDay: [{
@@ -932,7 +918,8 @@ IDEAAgendaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
932
918
  IonicModule,
933
919
  IDEATranslationsModule,
934
920
  IDEAColorPickerModule,
935
- IDEACheckerModule, i3$1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] });
921
+ IDEACheckerModule,
922
+ IDEAUserAvatarModule, i3$1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] });
936
923
  IDEAAgendaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [[
937
924
  CommonModule,
938
925
  FormsModule,
@@ -940,6 +927,7 @@ IDEAAgendaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
940
927
  IDEATranslationsModule,
941
928
  IDEAColorPickerModule,
942
929
  IDEACheckerModule,
930
+ IDEAUserAvatarModule,
943
931
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
944
932
  ]] });
945
933
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAAgendaModule, decorators: [{
@@ -952,6 +940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
952
940
  IDEATranslationsModule,
953
941
  IDEAColorPickerModule,
954
942
  IDEACheckerModule,
943
+ IDEAUserAvatarModule,
955
944
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
956
945
  ],
957
946
  declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent],