{"version":3,"file":"novo-elements-elements-agenda.mjs","sources":["../../../projects/novo-elements/src/elements/agenda/pipe/Weekday.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/DayOfMonth.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Month.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/MonthDay.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Year.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/EndOfWeekDisplayPipe.pipe.ts","../../../projects/novo-elements/src/elements/agenda/common/AgendaDateChange.ts","../../../projects/novo-elements/src/elements/agenda/common/EventTypeLegend.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaAllDayEvent.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaDayEvent.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Hours.pipe.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaHourSegment.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaDayView.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthDay.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthHeader.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthView.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekEvent.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekHeader.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekView.ts","../../../projects/novo-elements/src/elements/agenda/Agenda.module.ts","../../../projects/novo-elements/src/elements/agenda/novo-elements-elements-agenda.ts"],"sourcesContent":["import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'weekday',\n    standalone: false,\n})\nexport class WeekdayPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'long' | 'short' | 'narrow' = 'short'): string {\n    return new Intl.DateTimeFormat(locale, { weekday: method }).format(date);\n  }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'dayofmonth',\n    standalone: false,\n})\nexport class DayOfMonthPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n    return new Intl.DateTimeFormat(locale, { day: method }).format(date);\n  }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'month',\n    standalone: false,\n})\nexport class MonthPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'long'): string {\n    return new Intl.DateTimeFormat(locale, { month: method }).format(date);\n  }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'monthday',\n    standalone: false,\n})\nexport class MonthDayPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'short'): string {\n    return new Intl.DateTimeFormat(locale, { month: method, day: 'numeric' }).format(date);\n  }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'year',\n    standalone: false,\n})\nexport class YearPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n    return new Intl.DateTimeFormat(locale, { year: method }).format(date);\n  }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'endofweekdisplay',\n    standalone: false,\n})\nexport class EndOfWeekDisplayPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n\n  transform(\n    endOfWeek: Date,\n    startOfWeek: Date,\n    locale: string = this.locale,\n    method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'short',\n  ): String {\n    if (endOfWeek.getMonth() === startOfWeek.getMonth()) {\n      return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(endOfWeek);\n    }\n\n    return new Intl.DateTimeFormat(locale, { month: method, day: 'numeric' }).format(endOfWeek);\n  }\n}\n","import { Component, EventEmitter, Inject, Input, LOCALE_ID, Output } from '@angular/core';\nimport { DateUtil } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-date-change',\n    template: `\n    <div class=\"cal-date-change\">\n      <i class=\"bhi-arrow-left\" (click)=\"subtractDate()\"></i>\n      <span [ngSwitch]=\"view\">\n        <span *ngSwitchCase=\"'month'\">{{ (viewDate | month: locale) + ' ' + (viewDate | year: locale) }}</span>\n        <span *ngSwitchCase=\"'week'\">{{\n          (startOfWeek | monthday: locale:'long') + ' - ' + (endOfWeek | endofweekdisplay: startOfWeek:locale:'long')\n        }}</span>\n        <span *ngSwitchCase=\"'day'\">{{\n          (viewDate | weekday: locale:'long') + ', ' + (viewDate | month: locale) + ' ' + (viewDate | dayofmonth: locale)\n        }}</span>\n      </span>\n      <i class=\"bhi-arrow-right\" (click)=\"addDate()\"></i>\n    </div>\n  `,\n    styleUrls: ['./AgendaDateChange.scss'],\n    standalone: false,\n})\nexport class NovoAgendaDateChangeElement {\n  /**\n   * The current view\n   */\n  @Input()\n  view: string;\n\n  /**\n   * The current view date\n   */\n  @Input()\n  viewDate: Date;\n\n  @Input()\n  locale: string;\n\n  /**\n   * Called when the view date is changed\n   */\n  @Output()\n  viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n  constructor(@Inject(LOCALE_ID) locale: string) {\n    this.locale = locale;\n  }\n\n  /**\n   * @hidden\n   */\n  subtractDate(): void {\n    this.changeDate(-1);\n  }\n\n  addDate(): void {\n    this.changeDate(1);\n  }\n\n  changeDate(unit: number): void {\n    const addFn: any = {\n      day: DateUtil.addDays,\n      week: DateUtil.addWeeks,\n      month: DateUtil.addMonths,\n    }[this.view];\n\n    this.viewDateChange.emit(addFn(this.viewDate, unit));\n  }\n\n  get startOfWeek() {\n    return DateUtil.startOfWeek(this.viewDate);\n  }\n\n  get endOfWeek() {\n    return DateUtil.endOfWeek(this.viewDate);\n  }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-event-type-legend',\n    template: `\n    <ng-template #defaultTemplate>\n      <div class=\"cal-event-legend\">\n        <div\n          class=\"cal-event-type\"\n          *ngFor=\"let type of events | groupBy: 'type'\"\n          (click)=\"$event.stopPropagation(); eventTypeClicked.emit({ event: type?.key })\"\n        >\n          <div class=\"cal-event-type-swatch\"></div>\n          <div>{{ type?.key }}</div>\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{ events: events, eventTypeClicked: eventTypeClicked }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoEventTypeLegendElement {\n  @Input()\n  events: CalendarEvent[];\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  eventTypeClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-all-day-event',\n    template: `\n    <ng-template #defaultTemplate>\n      <div class=\"cal-all-day-event\" [style.backgroundColor]=\"event.color.secondary\" [style.borderColor]=\"event.color.primary\">\n        {{ event.title }}\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{\n        event: event,\n        eventClicked: eventClicked\n      }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaAllDayEventElement {\n  @Input()\n  event: CalendarEvent;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { DayViewEvent } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-day-event',\n    template: `\n    <ng-template #defaultTemplate>\n      <div\n        class=\"cal-event\"\n        [style.borderColor]=\"dayEvent.event.color.secondary\"\n        [class.cal-starts-within-day]=\"!dayEvent.startsBeforeDay\"\n        [class.cal-ends-within-day]=\"!dayEvent.endsAfterDay\"\n        [ngClass]=\"dayEvent.event.cssClass\"\n        [tooltip]=\"dayEvent.event.description\"\n        [tooltipPosition]=\"tooltipPosition\"\n        (click)=\"eventClicked.emit({ event: dayEvent.event })\"\n      >\n        <div class=\"cal-event-ribbon\" [style.backgroundColor]=\"dayEvent.event.color.primary\"></div>\n        <div class=\"cal-event-group\">\n          <div class=\"cal-event-title\">{{ dayEvent.event.title }}</div>\n          <div class=\"cal-event-description\">{{ dayEvent.event?.description }}</div>\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{ dayEvent: dayEvent, tooltipPosition: tooltipPosition, eventClicked: eventClicked }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaDayEventElement {\n  @Input()\n  dayEvent: DayViewEvent;\n\n  @Input()\n  tooltipPosition: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'hours',\n    standalone: false,\n})\nexport class HoursPipe implements PipeTransform {\n  constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n  transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n    return new Intl.DateTimeFormat(locale, { hour: method }).format(date);\n  }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\nimport { DayViewHourSegment } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-day-hour-segment',\n    template: `\n    <ng-template #defaultTemplate>\n      <div\n        class=\"cal-hour-segment\"\n        [class.cal-hour-start]=\"segment.isStart\"\n        [class.cal-after-hour-start]=\"!segment.isStart\"\n        [ngClass]=\"segment.cssClass\"\n      >\n        <div class=\"cal-time\">\n          {{ segment.date | hours: locale }}\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{\n        segment: segment,\n        locale: locale\n      }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaHourSegmentElement {\n  @Input()\n  segment: DayViewHourSegment;\n\n  @Input()\n  locale: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n  CalendarEvent,\n  CalendarEventTimesChangedEvent,\n  DayView,\n  DayViewHour,\n  getDayView,\n  getDayViewHourGrid,\n} from 'novo-elements/utils';\n\n/**\n * @hidden\n */\nconst SEGMENT_HEIGHT: number = 30;\n\n/**\n * @hidden\n */\nconst MINUTES_IN_HOUR: number = 60;\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * &lt;novo-agenda-day\n *  [viewDate]=\"viewDate\"\n *  [events]=\"events\"&gt;\n * &lt;/novo-agenda-day&gt;\n * ```\n */\n@Component({\n    selector: 'novo-agenda-day',\n    template: `\n    <div class=\"cal-day-view\" #dayViewContainer>\n      <novo-agenda-all-day-event\n        *ngFor=\"let event of view.allDayEvents\"\n        [event]=\"event\"\n        [customTemplate]=\"allDayEventTemplate\"\n        (eventClicked)=\"eventClicked.emit({ event: event })\"\n      >\n      </novo-agenda-all-day-event>\n      <div class=\"cal-hour-rows\">\n        <div class=\"cal-events\">\n          <div\n            #event\n            *ngFor=\"let dayEvent of view?.events\"\n            class=\"cal-event-container\"\n            [style.marginTop.px]=\"dayEvent.top\"\n            [style.height.px]=\"dayEvent.height\"\n            [style.marginLeft.px]=\"dayEvent.left + 70\"\n            [style.width.px]=\"dayEvent.width - 1\"\n          >\n            <novo-agenda-day-event\n              [dayEvent]=\"dayEvent\"\n              [tooltipPosition]=\"tooltipPosition\"\n              [customTemplate]=\"eventTemplate\"\n              (eventClicked)=\"eventClicked.emit($event)\"\n            >\n            </novo-agenda-day-event>\n          </div>\n        </div>\n        <div class=\"cal-hour\" *ngFor=\"let hour of hours\" [style.minWidth.px]=\"view?.width + 70\">\n          <novo-agenda-day-hour-segment\n            *ngFor=\"let segment of hour.segments\"\n            [segment]=\"segment\"\n            [locale]=\"locale\"\n            [customTemplate]=\"hourSegmentTemplate\"\n            (click)=\"hourSegmentClicked.emit({ date: segment.date })\"\n          >\n          </novo-agenda-day-hour-segment>\n        </div>\n      </div>\n    </div>\n  `,\n    styleUrls: ['./AgendaDayView.scss', '../common/AgendaHoursLayout.scss'],\n    standalone: false,\n})\nexport class NovoAgendaDayViewElement implements OnChanges, OnInit, OnDestroy {\n  /**\n   * The current view date\n   */\n  @Input()\n  viewDate: Date;\n\n  /**\n   * An array of events to display on view\n   */\n  @Input()\n  events: CalendarEvent[] = [];\n\n  /**\n   * The number of segments in an hour. Must be <= 6\n   */\n  @Input()\n  hourSegments: number = 2;\n\n  /**\n   * The day start hours in 24 hour time. Must be 0-23\n   */\n  @Input()\n  dayStartHour: number = 0;\n\n  /**\n   * The day start minutes. Must be 0-59\n   */\n  @Input()\n  dayStartMinute: number = 0;\n\n  /**\n   * The day end hours in 24 hour time. Must be 0-23\n   */\n  @Input()\n  dayEndHour: number = 23;\n\n  /**\n   * The day end minutes. Must be 0-59\n   */\n  @Input()\n  dayEndMinute: number = 59;\n\n  /**\n   * The width in pixels of each event on the view\n   */\n  @Input()\n  eventWidth: number = 150;\n\n  /**\n   * An observable that when emitted on will re-render the current view\n   */\n  @Input()\n  refresh: Subject<any>;\n\n  /**\n   * The locale used to format dates\n   */\n  @Input()\n  locale: string;\n\n  /**\n   * A function that will be called before each hour segment is called. The first argument will contain the hour segment.\n   * If you add the `cssClass` property to the segment it will add that class to the hour segment in the template\n   */\n  @Input()\n  hourSegmentModifier: Function;\n\n  /**\n   * The grid size to snap resizing and dragging of events to\n   */\n  @Input()\n  eventSnapSize: number = 30;\n\n  /**\n   * The placement of the event tooltip\n   */\n  @Input()\n  tooltipPosition: string = 'top';\n\n  /**\n   * A custom template to use to replace the hour segment\n   */\n  @Input()\n  hourSegmentTemplate: TemplateRef<any>;\n\n  /**\n   * A custom template to use for all day events\n   */\n  @Input()\n  allDayEventTemplate: TemplateRef<any>;\n\n  /**\n   * A custom template to use for day view events\n   */\n  @Input()\n  eventTemplate: TemplateRef<any>;\n\n  /**\n   * Called when an event title is clicked\n   */\n  @Output()\n  eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n  /**\n   * Called when an hour segment is clicked\n   */\n  @Output()\n  hourSegmentClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n  /**\n   * Called when an event is resized or dragged and dropped\n   */\n  @Output()\n  eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n  /**\n   * @hidden\n   */\n  hours: DayViewHour[] = [];\n\n  /**\n   * @hidden\n   */\n  view: DayView;\n\n  /**\n   * @hidden\n   */\n  width: number = 0;\n\n  /**\n   * @hidden\n   */\n  refreshSubscription: Subscription;\n\n  /**\n   * @hidden\n   */\n  currentResize: {\n    originalTop: number;\n    originalHeight: number;\n    edge: string;\n  };\n\n  /**\n   * @hidden\n   */\n  validateDrag: Function;\n\n  /**\n   * @hidden\n   */\n  validateResize: Function;\n\n  /**\n   * @hidden\n   */\n  constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n    this.locale = locale;\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnInit(): void {\n    if (this.refresh) {\n      this.refreshSubscription = this.refresh.subscribe(() => {\n        this.refreshAll();\n        this.cdr.detectChanges();\n      });\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnDestroy(): void {\n    if (this.refreshSubscription) {\n      this.refreshSubscription.unsubscribe();\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnChanges(changes: any): void {\n    if (changes.viewDate || changes.dayStartHour || changes.dayStartMinute || changes.dayEndHour || changes.dayEndMinute) {\n      this.refreshHourGrid();\n    }\n\n    if (\n      changes.viewDate ||\n      changes.events ||\n      changes.dayStartHour ||\n      changes.dayStartMinute ||\n      changes.dayEndHour ||\n      changes.dayEndMinute ||\n      changes.eventWidth\n    ) {\n      this.refreshView();\n    }\n  }\n\n  /*\n    eventDropped(dropEvent: {dropData?: {event?: CalendarEvent}}, segment: DayViewHourSegment): void {\n      if (dropEvent.dropData && dropEvent.dropData.event) {\n        this.eventTimesChanged.emit({event: dropEvent.dropData.event, newStart: segment.date});\n      }\n    }\n\n    resizeStarted(event: DayViewEvent, resizeEvent: ResizeEvent, dayViewContainer: HTMLElement): void {\n      this.currentResize = {\n        originalTop: event.top,\n        originalHeight: event.height,\n        edge: typeof resizeEvent.edges.top !== 'undefined' ? 'top' : 'bottom'\n      };\n      const resizeHelper: CalendarResizeHelper = new CalendarResizeHelper(dayViewContainer);\n      this.validateResize = ({rectangle}) => resizeHelper.validateResize({rectangle});\n      this.cdr.detectChanges();\n    }\n\n    resizing(event: DayViewEvent, resizeEvent: ResizeEvent): void {\n      if (resizeEvent.edges.top) {\n        event.top = this.currentResize.originalTop + +resizeEvent.edges.top;\n        event.height = this.currentResize.originalHeight - +resizeEvent.edges.top;\n      } else if (resizeEvent.edges.bottom) {\n        event.height = this.currentResize.originalHeight + +resizeEvent.edges.bottom;\n      }\n    }\n\n    resizeEnded(dayEvent: DayViewEvent): void {\n\n      let pixelsMoved: number;\n      if (this.currentResize.edge === 'top') {\n        pixelsMoved = (dayEvent.top - this.currentResize.originalTop);\n      } else {\n        pixelsMoved = (dayEvent.height - this.currentResize.originalHeight);\n      }\n\n      dayEvent.top = this.currentResize.originalTop;\n      dayEvent.height = this.currentResize.originalHeight;\n\n      const pixelAmountInMinutes: number = MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);\n      const minutesMoved: number = pixelsMoved * pixelAmountInMinutes;\n      let newStart: Date = dayEvent.event.start;\n      let newEnd: Date = dayEvent.event.end;\n      if (this.currentResize.edge === 'top') {\n        newStart = addMinutes(newStart, minutesMoved);\n      } else if (newEnd) {\n        newEnd = addMinutes(newEnd, minutesMoved);\n      }\n\n      this.eventTimesChanged.emit({newStart, newEnd, event: dayEvent.event});\n      this.currentResize = null;\n\n    }\n\n    dragStart(event: HTMLElement, dayViewContainer: HTMLElement): void {\n      const dragHelper: CalendarDragHelper = new CalendarDragHelper(dayViewContainer, event);\n      this.validateDrag = ({x, y}) => !this.currentResize && dragHelper.validateDrag({x, y});\n      this.cdr.detectChanges();\n    }\n\n    eventDragged(dayEvent: DayViewEvent, draggedInPixels: number): void {\n      const pixelAmountInMinutes: number = MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);\n      const minutesMoved: number = draggedInPixels * pixelAmountInMinutes;\n      const newStart: Date = addMinutes(dayEvent.event.start, minutesMoved);\n      let newEnd: Date;\n      if (dayEvent.event.end) {\n        newEnd = addMinutes(dayEvent.event.end, minutesMoved);\n      }\n      this.eventTimesChanged.emit({newStart, newEnd, event: dayEvent.event});\n    }\n    */\n\n  private refreshHourGrid(): void {\n    this.hours = getDayViewHourGrid({\n      viewDate: this.viewDate,\n      hourSegments: this.hourSegments,\n      dayStart: {\n        hour: this.dayStartHour,\n        minute: this.dayStartMinute,\n      },\n      dayEnd: {\n        hour: this.dayEndHour,\n        minute: this.dayEndMinute,\n      },\n    });\n    if (this.hourSegmentModifier) {\n      this.hours.forEach((hour) => {\n        hour.segments.forEach((segment) => this.hourSegmentModifier(segment));\n      });\n    }\n  }\n\n  private refreshView(): void {\n    this.view = getDayView({\n      events: this.events,\n      viewDate: this.viewDate,\n      hourSegments: this.hourSegments,\n      dayStart: {\n        hour: this.dayStartHour,\n        minute: this.dayStartMinute,\n      },\n      dayEnd: {\n        hour: this.dayEndHour,\n        minute: this.dayEndMinute,\n      },\n      eventWidth: this.eventWidth,\n      segmentHeight: SEGMENT_HEIGHT,\n    });\n  }\n\n  private refreshAll(): void {\n    this.refreshHourGrid();\n    this.refreshView();\n  }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent, CalendarEventResponse, MonthViewDay } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-month-day',\n    template: `\n    <ng-template #defaultTemplate>\n      <div class=\"agenda-day-top\">\n        <span class=\"agenda-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{ day.badgeTotal }}</span>\n        <span class=\"agenda-day-number\">{{ day.date | dayofmonth: locale }}</span>\n      </div>\n      <div class=\"agenda-events\">\n        <div\n          class=\"agenda-event\"\n          *ngFor=\"let type of day.events | groupBy: 'type'\"\n          [style.backgroundColor]=\"type?.value[0]?.color.primary\"\n          [ngClass]=\"type?.value[0]?.cssClass\"\n          (click)=\"$event.stopPropagation(); eventClicked.emit({ event: type?.value[0] })\"\n        >\n          {{ type?.value.length }}\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{\n        day: day,\n        locale: locale,\n        tooltipPosition: tooltipPosition,\n        eventClicked: eventClicked,\n        accepted: accepted,\n        rejected: rejected,\n        maybes: maybes\n      }\"\n    >\n    </ng-template>\n  `,\n    host: {\n        '[class]': '\"agenda-cell agenda-day-cell \" + day?.cssClass',\n        '[class.agenda-day-accepted]': 'accepted.length',\n        '[class.agenda-day-rejected]': 'rejected.length',\n        '[class.agenda-past]': 'day.isPast',\n        '[class.agenda-today]': 'day.isToday',\n        '[class.agenda-future]': 'day.isFuture',\n        '[class.agenda-weekend]': 'day.isWeekend',\n        '[class.agenda-in-month]': 'day.inMonth',\n        '[class.agenda-out-month]': '!day.inMonth',\n        '[class.agenda-has-events]': 'day.events.length > 0',\n        '[style.backgroundColor]': 'day.backgroundColor',\n    },\n    standalone: false,\n})\nexport class NovoAgendaMonthDayElement {\n  @Input()\n  day: MonthViewDay;\n\n  @Input()\n  locale: string;\n\n  @Input()\n  tooltipPosition: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n  get accepted(): Array<CalendarEvent> {\n    if (!this.day) {\n      return [];\n    }\n    return this.day.events.filter((evt) => {\n      return evt.response === CalendarEventResponse.Accepted;\n    });\n  }\n\n  get rejected(): Array<CalendarEvent> {\n    if (!this.day) {\n      return [];\n    }\n    return this.day.events.filter((evt) => {\n      return evt.response === CalendarEventResponse.Rejected;\n    });\n  }\n\n  get maybes(): Array<CalendarEvent> {\n    if (!this.day) {\n      return [];\n    }\n    return this.day.events.filter((evt) => {\n      return evt.response === CalendarEventResponse.Maybe;\n    });\n  }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { addMonths, subMonths } from 'date-fns';\nimport { WeekDay } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-month-header',\n    template: `\n    <ng-template #defaultTemplate>\n      <div class=\"agenda-header\">\n        <div class=\"agenda-header-top\">\n          <novo-button theme=\"icon\" icon=\"previous\" (click)=\"prevMonth($event)\"></novo-button>\n          <div class=\"agenda-month\">{{ viewDate | month: locale }}</div>\n          <novo-button theme=\"icon\" icon=\"next\" (click)=\"nextMonth($event)\"></novo-button>\n        </div>\n        <div class=\"agenda-weekdays\">\n          <div\n            class=\"agenda-weekday\"\n            *ngFor=\"let day of days\"\n            [class.agenda-past]=\"day.isPast\"\n            [class.agenda-today]=\"day.isToday\"\n            [class.agenda-future]=\"day.isFuture\"\n            [class.agenda-weekend]=\"day.isWeekend\"\n          >\n            {{ day.date | weekday: locale }}\n          </div>\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{ days: days, locale: locale, viewDate: viewDate }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaMonthHeaderElement {\n  @Input()\n  viewDate: Date;\n\n  @Input()\n  days: WeekDay[];\n\n  @Input()\n  locale: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  /**\n   * Called when the view date is changed\n   */\n  @Output()\n  viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n  prevMonth(event: Event) {\n    this.viewDateChange.emit(subMonths(this.viewDate, 1));\n  }\n\n  nextMonth(event: Event) {\n    this.viewDateChange.emit(addMonths(this.viewDate, 1));\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { addSeconds, Day, differenceInSeconds, getDate, getMonth, getYear, setDate, setMonth, setYear } from 'date-fns';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n  CalendarEvent,\n  CalendarEventTimesChangedEvent,\n  getMonthView,\n  getWeekViewHeader,\n  MonthView,\n  MonthViewDay,\n  WeekDay,\n} from 'novo-elements/utils';\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```\n * &lt;novo-agenda-month-view\n *  [viewDate]=\"viewDate\"\n *  [events]=\"events\"&gt;\n * &lt;/novo-agenda-month-view&gt;\n * ```\n */\n@Component({\n    selector: 'novo-agenda-month',\n    template: `\n    <div class=\"agenda-month-view\">\n      <novo-agenda-month-header\n        [(viewDate)]=\"viewDate\"\n        [days]=\"columnHeaders\"\n        [locale]=\"locale\"\n        [customTemplate]=\"headerTemplate\"\n        (viewDateChange)=\"refreshAll()\"\n      >\n      </novo-agenda-month-header>\n      <div class=\"agenda-days\">\n        <div *ngFor=\"let rowIndex of view.rowOffsets\">\n          <div class=\"agenda-cell-row\">\n            <novo-agenda-month-day\n              *ngFor=\"let day of view.days | slice: rowIndex:rowIndex + view.totalDaysVisibleInWeek\"\n              [day]=\"day\"\n              [locale]=\"locale\"\n              [customTemplate]=\"cellTemplate\"\n              (click)=\"dayClicked.emit({ day: day })\"\n              (eventClicked)=\"eventClicked.emit({ day: day, event: $event.event })\"\n            >\n            </novo-agenda-month-day>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n    styleUrls: ['./AgendaMonthView.scss'],\n    standalone: false,\n})\nexport class NovoAgendaMonthViewElement implements OnChanges, OnInit, OnDestroy {\n  /**\n   * The current view date\n   */\n  @Input()\n  viewDate: Date;\n\n  /**\n   * An array of events to display on view\n   */\n  @Input()\n  events: CalendarEvent[] = [];\n\n  /**\n   * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n   */\n  @Input()\n  excludeDays: number[] = [];\n\n  /**\n   * A function that will be called before each cell is rendered. The first argument will contain the calendar cell.\n   * If you add the `cssClass` property to the cell it will add that class to the cell in the template\n   */\n  @Input()\n  dayModifier: Function;\n\n  /**\n   * An observable that when emitted on will re-render the current view\n   */\n  @Input()\n  refresh: Subject<any>;\n\n  /**\n   * The locale used to format dates\n   */\n  @Input()\n  locale: string = 'en-US';\n\n  /**\n   * The placement of the event tooltip\n   */\n  @Input()\n  tooltipPosition: string = 'top';\n\n  /**\n   * The start number of the week\n   */\n  @Input()\n  weekStartsOn: Day;\n\n  /**\n   * A custom template to use to replace the header\n   */\n  @Input()\n  headerTemplate: TemplateRef<any>;\n\n  /**\n   * A custom template to use to replace the day cell\n   */\n  @Input()\n  cellTemplate: TemplateRef<any>;\n\n  /**\n   * Called when the day cell is clicked\n   */\n  @Output()\n  dayClicked: EventEmitter<{ day: MonthViewDay }> = new EventEmitter<{ day: MonthViewDay }>();\n\n  /**\n   * Called when the event title is clicked\n   */\n  @Output()\n  eventClicked: EventEmitter<{ day: any; event: CalendarEvent }> = new EventEmitter<{ day: any; event: CalendarEvent }>();\n\n  /**\n   * Called when an event is dragged and dropped\n   */\n  @Output()\n  eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n  @Output()\n  viewDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n  /**\n   * @hidden\n   */\n  columnHeaders: WeekDay[];\n\n  /**\n   * @hidden\n   */\n  view: MonthView;\n\n  /**\n   * @hidden\n   */\n  refreshSubscription: Subscription;\n\n  /**\n   * @hidden\n   */\n  constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n    this.locale = locale;\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnInit(): void {\n    if (this.refresh) {\n      this.refreshSubscription = this.refresh.subscribe(() => {\n        this.refreshAll();\n        this.cdr.markForCheck();\n      });\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnChanges(changes: any): void {\n    if (changes.viewDate || changes.excludeDays) {\n      this.refreshHeader();\n    }\n    if (changes.viewDate || changes.events || changes.excludeDays) {\n      this.refreshBody();\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnDestroy(): void {\n    if (this.refreshSubscription) {\n      this.refreshSubscription.unsubscribe();\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  eventDropped(day: MonthViewDay, event: CalendarEvent): void {\n    const year: number = getYear(day.date);\n    const month: number = getMonth(day.date);\n    const date: number = getDate(day.date);\n    const newStart: Date = setYear(setMonth(setDate(event.start, date), month), year);\n    let newEnd: Date;\n    if (event.end) {\n      const secondsDiff: number = differenceInSeconds(newStart, event.start);\n      newEnd = addSeconds(event.end, secondsDiff);\n    }\n    this.eventTimesChanged.emit({ event, newStart, newEnd });\n  }\n\n  private refreshHeader(): void {\n    this.columnHeaders = getWeekViewHeader({\n      viewDate: this.viewDate,\n      weekStartsOn: this.weekStartsOn,\n      excluded: this.excludeDays,\n    });\n  }\n\n  private refreshBody(): void {\n    this.view = getMonthView({\n      events: this.events,\n      viewDate: this.viewDate,\n      weekStartsOn: this.weekStartsOn,\n      excluded: this.excludeDays,\n    });\n    if (this.dayModifier) {\n      this.view.days.forEach((day) => this.dayModifier(day));\n    }\n  }\n\n  public refreshAll(): void {\n    this.refreshHeader();\n    this.refreshBody();\n    this.viewDateChange.emit(this.viewDate);\n  }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { WeekViewEvent } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-week-event',\n    template: `\n    <ng-template #defaultTemplate>\n      <div\n        class=\"cal-event\"\n        [class.cal-starts-within-week]=\"!weekEvent.startsBeforeWeek\"\n        [class.cal-ends-within-week]=\"!weekEvent.endsAfterWeek\"\n        [ngClass]=\"weekEvent.event?.cssClass\"\n        [tooltip]=\"weekEvent.event.description\"\n        [tooltipPosition]=\"tooltipPosition\"\n        (click)=\"eventClicked.emit({ event: weekEvent.event })\"\n      >\n        <div class=\"cal-event-ribbon\" [style.backgroundColor]=\"weekEvent.event.color.primary\"></div>\n        <div class=\"cal-event-title\">{{ weekEvent.event?.title }}</div>\n        <div class=\"cal-event-description\">{{ weekEvent.event?.description }}</div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{ weekEvent: weekEvent, tooltipPosition: tooltipPosition, eventClicked: eventClicked }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaWeekEventElement {\n  @Input()\n  weekEvent: WeekViewEvent;\n\n  @Input()\n  tooltipPosition: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent, WeekDay } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-agenda-week-header',\n    template: `\n    <ng-template #defaultTemplate>\n      <div class=\"cal-day-headers\">\n        <div\n          class=\"cal-header\"\n          *ngFor=\"let day of days\"\n          [class.cal-past]=\"day.isPast\"\n          [class.cal-today]=\"day.isToday\"\n          [class.cal-future]=\"day.isFuture\"\n          [class.cal-weekend]=\"day.isWeekend\"\n          [class.cal-drag-over]=\"day.dragOver\"\n          (click)=\"dayClicked.emit({ date: day.date })\"\n          mwlDroppable\n          (dragEnter)=\"day.dragOver = true\"\n          (dragLeave)=\"day.dragOver = false\"\n          (drop)=\"day.dragOver = false; eventDropped.emit({ event: $event.dropData.event, newStart: day.date })\"\n        >\n          <b>{{ day.date | weekday: locale:'long' }}</b\n          ><br />\n          <span>{{ day.date | monthday: locale }}</span>\n        </div>\n      </div>\n    </ng-template>\n    <ng-template\n      [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n      [ngTemplateOutletContext]=\"{ days: days, locale: locale, dayClicked: dayClicked, eventDropped: eventDropped }\"\n    >\n    </ng-template>\n  `,\n    standalone: false,\n})\nexport class NovoAgendaWeekHeaderElement {\n  @Input()\n  days: WeekDay[];\n\n  @Input()\n  locale: string;\n\n  @Input()\n  customTemplate: TemplateRef<any>;\n\n  @Output()\n  dayClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n  @Output()\n  eventDropped: EventEmitter<{ event: CalendarEvent; newStart: Date }> = new EventEmitter<{ event: CalendarEvent; newStart: Date }>();\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { Day } from 'date-fns';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n  CalendarEvent,\n  CalendarEventTimesChangedEvent,\n  DayViewHour,\n  getDayViewHourGrid,\n  getWeekView,\n  getWeekViewHeader,\n  WeekDay,\n  WeekViewEventRow,\n} from 'novo-elements/utils';\n\n/**\n * @hidden\n */\nconst SEGMENT_HEIGHT: number = 30;\n\n/**\n * @hidden\n */\nconst MINUTES_IN_HOUR: number = 60;\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * &lt;novo-agenda-week\n *  [viewDate]=\"viewDate\"\n *  [events]=\"events\"&gt;\n * &lt;/novo-agenda-week&gt;\n * ```\n */\n@Component({\n    selector: 'novo-agenda-week',\n    template: `\n    <div class=\"cal-week-view\" #weekViewContainer>\n      <novo-agenda-week-header [days]=\"days\" [locale]=\"locale\" [customTemplate]=\"headerTemplate\" (dayClicked)=\"dayClicked.emit($event)\">\n      </novo-agenda-week-header>\n      <div *ngFor=\"let eventRow of eventRows\" #eventRowContainer>\n        <div\n          class=\"cal-event-container\"\n          #event\n          *ngFor=\"let weekEvent of eventRow.row\"\n          [style.width]=\"(100 / days.length) * weekEvent.span + '%'\"\n          [style.marginTop.px]=\"weekEvent.top\"\n          [style.height.px]=\"weekEvent.height\"\n          [style.marginLeft]=\"(100 / days.length) * weekEvent.offset + '%'\"\n        >\n          <novo-agenda-week-event\n            [weekEvent]=\"weekEvent\"\n            [tooltipPosition]=\"tooltipPosition\"\n            [customTemplate]=\"eventTemplate\"\n            (eventClicked)=\"eventClicked.emit($event)\"\n          >\n          </novo-agenda-week-event>\n        </div>\n      </div>\n      <div class=\"cal-hour\" *ngFor=\"let hour of hours\" [style.minWidth.px]=\"70\">\n        <novo-agenda-day-hour-segment\n          *ngFor=\"let segment of hour.segments\"\n          [segment]=\"segment\"\n          [locale]=\"locale\"\n          [customTemplate]=\"hourSegmentTemplate\"\n          (click)=\"hourSegmentClicked.emit({ date: segment.date })\"\n        >\n        </novo-agenda-day-hour-segment>\n      </div>\n    </div>\n  `,\n    styleUrls: ['./AgendaWeekView.scss', '../common/AgendaHoursLayout.scss'],\n    standalone: false,\n})\nexport class NovoAgendaWeekViewElement implements OnChanges, OnInit, OnDestroy {\n  /**\n   * The current view date\n   */\n  @Input()\n  viewDate: Date;\n\n  /**\n   * An array of events to display on view\n   */\n  @Input()\n  events: CalendarEvent[] = [];\n\n  /**\n   * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n   */\n  @Input()\n  excludeDays: number[] = [];\n\n  /**\n   * An observable that when emitted on will re-render the current view\n   */\n  @Input()\n  refresh: Subject<any>;\n\n  /**\n   * The locale used to format dates\n   */\n  @Input()\n  locale: string;\n\n  /**\n   * The placement of the event tooltip\n   */\n  @Input()\n  tooltipPosition: string = 'bottom';\n\n  /**\n   * The start number of the week\n   */\n  @Input()\n  weekStartsOn: Day;\n\n  /**\n   * A custom template to use to replace the header\n   */\n  @Input()\n  headerTemplate: TemplateRef<any>;\n\n  /**\n   * A custom template to use for week view events\n   */\n  @Input()\n  eventTemplate: TemplateRef<any>;\n\n  /**\n   * The precision to display events.\n   * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n   */\n  @Input()\n  precision: 'days' | 'minutes' = 'days';\n  /**\n   * The number of segments in an hour. Must be <= 6\n   */\n  @Input()\n  hourSegments: number = 2;\n\n  /**\n   * The day start hours in 24 hour time. Must be 0-23\n   */\n  @Input()\n  dayStartHour: number = 0;\n\n  /**\n   * The day start minutes. Must be 0-59\n   */\n  @Input()\n  dayStartMinute: number = 0;\n\n  /**\n   * The day end hours in 24 hour time. Must be 0-23\n   */\n  @Input()\n  dayEndHour: number = 23;\n\n  /**\n   * The day end minutes. Must be 0-59\n   */\n  @Input()\n  dayEndMinute: number = 59;\n  /**\n   * A custom template to use to replace the hour segment\n   */\n  @Input()\n  hourSegmentTemplate: TemplateRef<any>;\n  /**\n   * Called when an hour segment is clicked\n   */\n  @Output()\n  hourSegmentClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n  /**\n   * Called when a header week day is clicked\n   */\n  @Output()\n  dayClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n  /**\n   * Called when the event title is clicked\n   */\n  @Output()\n  eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n  /**\n   * Called when an event is resized or dragged and dropped\n   */\n  @Output()\n  eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n  /**\n   * @hidden\n   */\n  days: WeekDay[];\n  /**\n   * @hidden\n   */\n  hours: DayViewHour[] = [];\n\n  /**\n   * @hidden\n   */\n  eventRows: WeekViewEventRow[] = [];\n\n  /**\n   * @hidden\n   */\n  refreshSubscription: Subscription;\n\n  /**\n   * @hidden\n   */\n  currentResize: {\n    originalOffset: number;\n    originalSpan: number;\n    edge: string;\n  };\n\n  /**\n   * @hidden\n   */\n  validateDrag: Function;\n\n  /**\n   * @hidden\n   */\n  validateResize: Function;\n\n  /**\n   * @hidden\n   */\n  constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n    this.locale = locale;\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnInit(): void {\n    if (this.refresh) {\n      this.refreshSubscription = this.refresh.subscribe(() => {\n        this.refreshAll();\n        this.cdr.detectChanges();\n      });\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnChanges(changes: any): void {\n    if (changes.viewDate || changes.excludeDays) {\n      this.refreshHeader();\n    }\n\n    if (changes.events || changes.viewDate || changes.excludeDays) {\n      this.refreshBody();\n    }\n\n    if (changes.viewDate || changes.dayStartHour || changes.dayStartMinute || changes.dayEndHour || changes.dayEndMinute) {\n      this.refreshHourGrid();\n    }\n  }\n\n  /**\n   * @hidden\n   */\n  ngOnDestroy(): void {\n    if (this.refreshSubscription) {\n      this.refreshSubscription.unsubscribe();\n    }\n  }\n\n  getDayColumnWidth(eventRowContainer: HTMLElement): number {\n    return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n  }\n\n  private refreshHeader(): void {\n    this.days = getWeekViewHeader({\n      viewDate: this.viewDate,\n      weekStartsOn: this.weekStartsOn,\n      excluded: this.excludeDays,\n    });\n  }\n\n  private refreshBody(): void {\n    this.eventRows = getWeekView({\n      events: this.events,\n      viewDate: this.viewDate,\n      weekStartsOn: this.weekStartsOn,\n      excluded: this.excludeDays,\n      hourSegments: this.hourSegments,\n      segmentHeight: SEGMENT_HEIGHT,\n      dayStart: {\n        hour: this.dayStartHour,\n        minute: this.dayStartMinute,\n      },\n      dayEnd: {\n        hour: this.dayEndHour,\n        minute: this.dayEndMinute,\n      },\n    });\n  }\n\n  private refreshHourGrid(): void {\n    this.hours = getDayViewHourGrid({\n      viewDate: this.viewDate,\n      hourSegments: this.hourSegments,\n      dayStart: {\n        hour: this.dayStartHour,\n        minute: this.dayStartMinute,\n      },\n      dayEnd: {\n        hour: this.dayEndHour,\n        minute: this.dayEndMinute,\n      },\n    });\n  }\n\n  private refreshAll(): void {\n    this.refreshHeader();\n    this.refreshHourGrid();\n    this.refreshBody();\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\n// Common Elements\nimport { NovoAgendaDateChangeElement } from './common/AgendaDateChange';\nimport { NovoEventTypeLegendElement } from './common/EventTypeLegend';\n// Day View\nimport { NovoAgendaAllDayEventElement } from './day/AgendaAllDayEvent';\nimport { NovoAgendaDayEventElement } from './day/AgendaDayEvent';\nimport { NovoAgendaDayViewElement } from './day/AgendaDayView';\nimport { NovoAgendaHourSegmentElement } from './day/AgendaHourSegment';\n// Month View\nimport { NovoAgendaMonthDayElement } from './month/AgendaMonthDay';\nimport { NovoAgendaMonthHeaderElement } from './month/AgendaMonthHeader';\nimport { NovoAgendaMonthViewElement } from './month/AgendaMonthView';\n// Week View\nimport { NovoAgendaWeekEventElement } from './week/AgendaWeekEvent';\nimport { NovoAgendaWeekHeaderElement } from './week/AgendaWeekHeader';\nimport { NovoAgendaWeekViewElement } from './week/AgendaWeekView';\n// Pipes\nimport { DayOfMonthPipe } from './pipe/DayOfMonth.pipe';\nimport { EndOfWeekDisplayPipe } from './pipe/EndOfWeekDisplayPipe.pipe';\nimport { HoursPipe } from './pipe/Hours.pipe';\nimport { MonthPipe } from './pipe/Month.pipe';\nimport { MonthDayPipe } from './pipe/MonthDay.pipe';\nimport { WeekdayPipe } from './pipe/Weekday.pipe';\nimport { YearPipe } from './pipe/Year.pipe';\n\n@NgModule({\n  imports: [CommonModule, NovoButtonModule, NovoTooltipModule, NovoPipesModule],\n  declarations: [\n    NovoEventTypeLegendElement,\n    NovoAgendaMonthViewElement,\n    NovoAgendaMonthHeaderElement,\n    NovoAgendaMonthDayElement,\n    NovoAgendaWeekViewElement,\n    NovoAgendaWeekHeaderElement,\n    NovoAgendaWeekEventElement,\n    NovoAgendaDayViewElement,\n    NovoAgendaDayEventElement,\n    NovoAgendaHourSegmentElement,\n    NovoAgendaAllDayEventElement,\n    NovoAgendaDateChangeElement,\n    WeekdayPipe,\n    DayOfMonthPipe,\n    MonthPipe,\n    MonthDayPipe,\n    YearPipe,\n    HoursPipe,\n    EndOfWeekDisplayPipe,\n  ],\n  exports: [\n    NovoEventTypeLegendElement,\n    NovoAgendaMonthViewElement,\n    NovoAgendaMonthHeaderElement,\n    NovoAgendaMonthDayElement,\n    NovoAgendaWeekViewElement,\n    NovoAgendaWeekHeaderElement,\n    NovoAgendaWeekEventElement,\n    NovoAgendaDayViewElement,\n    NovoAgendaDayEventElement,\n    NovoAgendaHourSegmentElement,\n    NovoAgendaAllDayEventElement,\n    NovoAgendaDateChangeElement,\n    WeekdayPipe,\n    DayOfMonthPipe,\n    MonthPipe,\n    MonthDayPipe,\n    YearPipe,\n    HoursPipe,\n    EndOfWeekDisplayPipe,\n  ],\n})\nexport class NovoAgendaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.WeekdayPipe","i3.DayOfMonthPipe","i4.MonthPipe","i5.MonthDayPipe","i6.YearPipe","i7.EndOfWeekDisplayPipe","i2","i2.HoursPipe","SEGMENT_HEIGHT","MINUTES_IN_HOUR","i2.NovoAgendaDayEventElement","i3.NovoAgendaHourSegmentElement","i4.NovoAgendaAllDayEventElement","i3.WeekdayPipe","i2.NovoAgendaMonthHeaderElement","i3.NovoAgendaMonthDayElement","i3.MonthDayPipe","i2.NovoAgendaWeekHeaderElement","i3.NovoAgendaWeekEventElement","i4.NovoAgendaHourSegmentElement"],"mappings":"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"}