{"version":3,"file":"netwin-angular-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/dialog/dialog-container.component.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.html","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/utils/object.utils.ts","../../../projects/picker/src/lib/dialog/dialog-config.class.ts","../../../projects/picker/src/lib/dialog/dialog-ref.class.ts","../../../projects/picker/src/lib/dialog/dialog.service.ts","../../../projects/picker/src/lib/dialog/dialog.module.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/date-time-picker.animations.ts","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-input.directive.ts","../../../projects/picker/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.html","../../../projects/picker/src/lib/date-time/numberedFixLen.pipe.ts","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/netwin-angular-datetime-picker.ts"],"sourcesContent":["/**\n * dialog-container.component\n */\n\nimport { AnimationEvent, animate, animateChild, keyframes, style, transition, trigger } from '@angular/animations';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  Optional,\n  ViewChild\n} from '@angular/core';\nimport { OwlDialogConfigInterface } from './dialog-config.class';\n\ntype AnimationParams = {\n  x: string;\n  y: string;\n  ox: string;\n  oy: string;\n  scale: number;\n};\n\nconst zoomFadeIn = {\n  opacity: 0,\n  transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\n};\nconst zoomFadeInFrom = {\n  opacity: 0,\n  transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n  transformOrigin: '{{ ox }} {{ oy }}'\n};\n\n@Component({\n  standalone: false,\n  selector: 'owl-dialog-container',\n  templateUrl: './dialog-container.component.html',\n  animations: [\n    trigger('slideModal', [\n      transition(\n        'void => enter',\n        [\n          style(zoomFadeInFrom),\n          animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n          animate(\n            '150ms',\n            keyframes([\n              style({ transform: 'scale(1)', offset: 0 }),\n              style({ transform: 'scale(1.05)', offset: 0.3 }),\n              style({ transform: 'scale(.95)', offset: 0.8 }),\n              style({ transform: 'scale(1)', offset: 1.0 })\n            ])\n          ),\n          animateChild()\n        ],\n        {\n          params: {\n            x: '0px',\n            y: '0px',\n            ox: '50%',\n            oy: '50%',\n            scale: 1\n          }\n        }\n      ),\n      transition('enter => exit', [animateChild(), animate(200, style(zoomFadeIn))], {\n        params: { x: '0px', y: '0px', ox: '50%', oy: '50%' }\n      })\n    ])\n  ],\n  host: {\n    '(@slideModal.start)': 'onAnimationStart($event)',\n    '(@slideModal.done)': 'onAnimationDone($event)',\n    '[class.owl-dialog-container]': 'owlDialogContainerClass',\n    '[attr.tabindex]': 'owlDialogContainerTabIndex',\n    '[attr.id]': 'owlDialogContainerId',\n    '[attr.role]': 'owlDialogContainerRole',\n    '[attr.aria-labelledby]': 'owlDialogContainerAriaLabelledby',\n    '[attr.aria-describedby]': 'owlDialogContainerAriaDescribedby',\n    '[@slideModal]': 'owlDialogContainerAnimation'\n  }\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet {\n  @ViewChild(CdkPortalOutlet, { static: true })\n  public portalOutlet: CdkPortalOutlet | null = null;\n\n  /** The class that traps and manages focus within the dialog. */\n  private focusTrap: FocusTrap;\n\n  /** ID of the element that should be considered as the dialog's label. */\n  public ariaLabelledBy: string | null = null;\n\n  /** Emits when an animation state changes. */\n  public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  public isAnimating = false;\n\n  private _config: OwlDialogConfigInterface;\n  public get config(): OwlDialogConfigInterface {\n    return this._config;\n  }\n\n  private state: 'void' | 'enter' | 'exit' = 'enter';\n\n  // for animation purpose\n  private params: AnimationParams = {\n    x: '0px',\n    y: '0px',\n    ox: '50%',\n    oy: '50%',\n    scale: 0\n  };\n\n  // A variable to hold the focused element before the dialog was open.\n  // This would help us to refocus back to element when the dialog was closed.\n  private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n  protected readonly owlDialogContainerClass = true;\n\n  protected get owlDialogContainerTabIndex(): number {\n    return -1;\n  }\n\n  protected get owlDialogContainerId(): string {\n    return this._config.id;\n  }\n\n  protected get owlDialogContainerRole(): string {\n    return this._config.role || null;\n  }\n\n  protected get owlDialogContainerAriaLabelledby(): string {\n    return this.ariaLabelledBy;\n  }\n\n  protected get owlDialogContainerAriaDescribedby(): string {\n    return this._config.ariaDescribedBy || null;\n  }\n\n  protected get owlDialogContainerAnimation(): { value: string; params: AnimationParams } {\n    return { value: this.state, params: this.params };\n  }\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private elementRef: ElementRef,\n    private focusTrapFactory: FocusTrapFactory,\n    @Optional()\n    @Inject(DOCUMENT)\n    private document: Document\n  ) {\n    super();\n  }\n\n  /**\n   * Attach a ComponentPortal as content to this dialog container.\n   */\n  public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    if (this.portalOutlet.hasAttached()) {\n      throw Error('Attempting to attach dialog content after content is already attached');\n    }\n\n    this.savePreviouslyFocusedElement();\n    return this.portalOutlet.attachComponentPortal(portal);\n  }\n\n  public attachTemplatePortal<C>(): EmbeddedViewRef<C> {\n    throw new Error('Method not implemented.');\n  }\n\n  public setConfig(config: OwlDialogConfigInterface): void {\n    this._config = config;\n\n    if (config.event) {\n      this.calculateZoomOrigin(config.event);\n    }\n  }\n\n  public onAnimationStart(event: AnimationEvent): void {\n    this.isAnimating = true;\n    this.animationStateChanged.emit(event);\n  }\n\n  public onAnimationDone(event: AnimationEvent): void {\n    if (event.toState === 'enter') {\n      this.trapFocus();\n    } else if (event.toState === 'exit') {\n      this.restoreFocus();\n    }\n\n    this.animationStateChanged.emit(event);\n    this.isAnimating = false;\n  }\n\n  public startExitAnimation(): void {\n    this.state = 'exit';\n    this.changeDetector.markForCheck();\n  }\n\n  /**\n   * Calculate origin used in the `zoomFadeInFrom()`\n   * for animation purpose\n   */\n  private calculateZoomOrigin(event: MouseEvent): void {\n    if (!event) {\n      return;\n    }\n\n    const clientX = event.clientX;\n    const clientY = event.clientY;\n\n    const wh = window.innerWidth / 2;\n    const hh = window.innerHeight / 2;\n    const x = clientX - wh;\n    const y = clientY - hh;\n    const ox = clientX / window.innerWidth;\n    const oy = clientY / window.innerHeight;\n\n    this.params.x = `${x}px`;\n    this.params.y = `${y}px`;\n    this.params.ox = `${ox * 100}%`;\n    this.params.oy = `${oy * 100}%`;\n    this.params.scale = 0;\n\n    return;\n  }\n\n  /**\n   * Save the focused element before dialog was open\n   */\n  private savePreviouslyFocusedElement(): void {\n    if (this.document) {\n      this.elementFocusedBeforeDialogWasOpened = this.document.activeElement as HTMLElement;\n      setTimeout(() => this.elementRef.nativeElement.focus(), 0);\n    }\n  }\n\n  private trapFocus(): void {\n    if (!this.focusTrap) {\n      this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n    }\n\n    if (this._config.autoFocus) {\n      void this.focusTrap.focusInitialElementWhenReady();\n    }\n  }\n\n  private restoreFocus(): void {\n    const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (toFocus && typeof toFocus.focus === 'function') {\n      toFocus.focus();\n    }\n\n    if (this.focusTrap) {\n      this.focusTrap.destroy();\n    }\n  }\n}\n","<ng-template [cdkPortalOutlet]></ng-template>\n","/** Creates an array and fills it with values. */\nexport function range<T>(length: number, valueFunction: (index: number) => T): Array<T> {\n  return new Array<T>(length).fill(null).map((_, index) => valueFunction(index));\n}\n","import { range } from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n  long: [\n    'January',\n    'February',\n    'March',\n    'April',\n    'May',\n    'June',\n    'July',\n    'August',\n    'September',\n    'October',\n    'November',\n    'December'\n  ],\n  short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n  long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nexport const DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n","/**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\nexport function createDate(\n  year: number,\n  month: number,\n  date: number,\n  hours: number = 0,\n  minutes: number = 0,\n  seconds: number = 0\n): Date {\n  if (month < 0 || month > 11) {\n    throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n  }\n\n  if (date < 1) {\n    throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n  }\n\n  if (hours < 0 || hours > 23) {\n    throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n  }\n\n  if (minutes < 0 || minutes > 59) {\n    throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n  }\n\n  if (seconds < 0 || seconds > 59) {\n    throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n  }\n\n  const result = createDateWithOverflow(year, month, date, hours, minutes, seconds);\n\n  // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n  // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n  if (result.getMonth() !== month) {\n    throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n  }\n\n  return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n  const lastDateOfMonth = createDateWithOverflow(date.getFullYear(), date.getMonth() + 1, 0);\n\n  return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction createDateWithOverflow(\n  year: number,\n  month: number,\n  date: number,\n  hours: number = 0,\n  minutes: number = 0,\n  seconds: number = 0\n): Date {\n  const result = new Date(year, month, date, hours, minutes, seconds);\n\n  if (year >= 0 && year < 100) {\n    result.setFullYear(result.getFullYear() - 1900);\n  }\n  return result;\n}\n","/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject<T extends object>(dest: T, ...sources: Array<object>): T {\n  if (dest == null) {\n    throw TypeError('Cannot convert undefined or null to object');\n  }\n\n  for (const source of sources) {\n    if (source != null) {\n      for (const key in source) {\n        if (Object.hasOwn(source, key)) {\n          dest[key] = source[key];\n        }\n      }\n    }\n  }\n\n  return dest;\n}\n","/**\n * dialog-config.class\n */\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ViewContainerRef } from '@angular/core';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n  /** Override for the dialog's top position. */\n  top?: string;\n\n  /** Override for the dialog's bottom position. */\n  bottom?: string;\n\n  /** Override for the dialog's left position. */\n  left?: string;\n\n  /** Override for the dialog's right position. */\n  right?: string;\n}\n\nexport interface OwlDialogConfigInterface {\n  /**\n   * ID of the element that describes the dialog.\n   */\n  ariaDescribedBy?: string | null;\n\n  /**\n   * Whether to focus the dialog when the dialog is opened\n   */\n  autoFocus?: boolean;\n\n  /** Whether the dialog has a backdrop. */\n  hasBackdrop?: boolean;\n\n  /**\n   * Custom style for the backdrop\n   */\n  backdropStyle?: any;\n\n  /** Data being injected into the child component. */\n  data?: any;\n\n  /** Whether the user can use escape or clicking outside to close a modal. */\n  disableClose?: boolean;\n\n  /**\n   * ID for the modal. If omitted, a unique one will be generated.\n   */\n  id?: string;\n\n  /**\n   * The ARIA role of the dialog element.\n   */\n  role?: 'dialog' | 'alertdialog';\n\n  /**\n   * Custom class for the pane\n   */\n  paneClass?: string | Array<string>;\n\n  /**\n   * Mouse Event\n   */\n  event?: MouseEvent;\n\n  /**\n   * Custom class for the backdrop\n   */\n  backdropClass?: string | Array<string>;\n\n  /**\n   * Whether the dialog should close when the user goes backwards/forwards in history.\n   */\n  closeOnNavigation?: boolean;\n\n  /** Width of the dialog. */\n  width?: string;\n\n  /** Height of the dialog. */\n  height?: string;\n\n  /**\n   * The min-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  minWidth?: number | string;\n\n  /**\n   * The min-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  minHeight?: number | string;\n\n  /**\n   * The max-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  maxWidth?: number | string;\n\n  /**\n   * The max-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  maxHeight?: number | string;\n\n  /** Position overrides. */\n  position?: DialogPosition;\n\n  /**\n   * The scroll strategy when the dialog is open\n   * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n   */\n  scrollStrategy?: ScrollStrategy;\n\n  viewContainerRef?: ViewContainerRef;\n}\n\nexport class OwlDialogConfig implements OwlDialogConfigInterface {\n  /**\n   * ID of the element that describes the dialog.\n   */\n  public ariaDescribedBy: string | null = null;\n\n  /**\n   * Whether to focus the dialog when the dialog is opened\n   */\n  public autoFocus = true;\n\n  /** Whether the dialog has a backdrop. */\n  public hasBackdrop = true;\n\n  /**\n   * Custom style for the backdrop\n   */\n  public backdropStyle: any;\n\n  /** Data being injected into the child component. */\n  public data: any = null;\n\n  /** Whether the user can use escape or clicking outside to close a modal. */\n  public disableClose = false;\n\n  /**\n   * ID for the modal. If omitted, a unique one will be generated.\n   */\n  public id: string;\n\n  /**\n   * The ARIA role of the dialog element.\n   */\n  public role: 'dialog' | 'alertdialog' = 'dialog';\n\n  /**\n   * Custom class for the pane\n   */\n  public paneClass: string | Array<string> = '';\n\n  /**\n   * Mouse Event\n   */\n  public event: MouseEvent = null;\n\n  /**\n   * Custom class for the backdrop\n   */\n  public backdropClass: string | Array<string> = '';\n\n  /**\n   * Whether the dialog should close when the user goes backwards/forwards in history.\n   */\n  public closeOnNavigation = true;\n\n  /** Width of the dialog. */\n  public width = '';\n\n  /** Height of the dialog. */\n  public height = '';\n\n  /**\n   * The min-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  public minWidth: number | string;\n\n  /**\n   * The min-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  public minHeight: number | string;\n\n  /**\n   * The max-width of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  public maxWidth: number | string = '85vw';\n\n  /**\n   * The max-height of the overlay panel.\n   * If a number is provided, pixel units are assumed.\n   */\n  public maxHeight: number | string;\n\n  /** Position overrides. */\n  public position: DialogPosition;\n\n  /**\n   * The scroll strategy when the dialog is open\n   * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n   */\n  public scrollStrategy: ScrollStrategy = new NoopScrollStrategy();\n\n  public viewContainerRef: ViewContainerRef;\n\n  constructor() {\n    this.id = `owl-dialog-${uniqueId++}`;\n  }\n}\n","/**\n * dialog-ref.class\n */\nimport { AnimationEvent } from '@angular/animations';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { Location } from '@angular/common';\nimport { Observable, Subject, Subscription, SubscriptionLike, filter, take } from 'rxjs';\nimport { DialogPosition } from './dialog-config.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\nexport class OwlDialogRef<T> {\n  private result: any;\n\n  private _beforeClose$ = new Subject<any>();\n\n  private _beforeOpen$ = new Subject<any>();\n\n  private _afterOpen$ = new Subject<any>();\n\n  private _afterClosed$ = new Subject<any>();\n\n  /** Subscription to changes in the user's location. */\n  private locationChanged: SubscriptionLike = Subscription.EMPTY;\n\n  /**\n   * The instance of component opened into modal\n   */\n  public componentInstance: T;\n\n  /** Whether the user is allowed to close the dialog. */\n  public disableClose = true;\n\n  constructor(\n    private overlayRef: OverlayRef,\n    private container: OwlDialogContainerComponent,\n    public readonly id: string,\n    location?: Location\n  ) {\n    this.disableClose = this.container.config.disableClose;\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'start' && event.toState === 'enter'),\n        take(1)\n      )\n      .subscribe(() => {\n        this._beforeOpen$.next(null);\n        this._beforeOpen$.complete();\n      });\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'enter'),\n        take(1)\n      )\n      .subscribe(() => {\n        this._afterOpen$.next(null);\n        this._afterOpen$.complete();\n      });\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'exit'),\n        take(1)\n      )\n      .subscribe(() => {\n        this.overlayRef.dispose();\n        this.locationChanged.unsubscribe();\n        this._afterClosed$.next(this.result);\n        this._afterClosed$.complete();\n        this.componentInstance = null;\n      });\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(filter((event) => event.keyCode === ESCAPE && !this.disableClose))\n      .subscribe(() => this.close());\n\n    if (location) {\n      this.locationChanged = location.subscribe(() => {\n        if (this.container.config.closeOnNavigation) {\n          this.close();\n        }\n      });\n    }\n  }\n\n  public close(dialogResult?: any): void {\n    this.result = dialogResult;\n\n    this.container.animationStateChanged\n      .pipe(\n        filter((event: AnimationEvent) => event.phaseName === 'start'),\n        take(1)\n      )\n      .subscribe(() => {\n        this._beforeClose$.next(dialogResult);\n        this._beforeClose$.complete();\n        this.overlayRef.detachBackdrop();\n      });\n\n    this.container.startExitAnimation();\n  }\n\n  /**\n   * Gets an observable that emits when the overlay's backdrop has been clicked.\n   */\n  public backdropClick(): Observable<any> {\n    return this.overlayRef.backdropClick();\n  }\n\n  /**\n   * Gets an observable that emits when keydown events are targeted on the overlay.\n   */\n  public keydownEvents(): Observable<KeyboardEvent> {\n    return this.overlayRef.keydownEvents();\n  }\n\n  /**\n   * Updates the dialog's position.\n   * @param position New dialog position.\n   */\n  public updatePosition(position?: DialogPosition): this {\n    const strategy = this.getPositionStrategy();\n\n    if (position && (position.left || position.right)) {\n      if (position.left) {\n        strategy.left(position.left);\n      } else {\n        strategy.right(position.right);\n      }\n    } else {\n      strategy.centerHorizontally();\n    }\n\n    if (position && (position.top || position.bottom)) {\n      if (position.top) {\n        strategy.top(position.top);\n      } else {\n        strategy.bottom(position.bottom);\n      }\n    } else {\n      strategy.centerVertically();\n    }\n\n    this.overlayRef.updatePosition();\n\n    return this;\n  }\n\n  /**\n   * Updates the dialog's width and height.\n   * @param width New width of the dialog.\n   * @param height New height of the dialog.\n   */\n  public updateSize(width: string = 'auto', height: string = 'auto'): this {\n    this.getPositionStrategy().width(width).height(height);\n    this.overlayRef.updatePosition();\n    return this;\n  }\n\n  public isAnimating(): boolean {\n    return this.container.isAnimating;\n  }\n\n  public beforeOpen(): Observable<any> {\n    return this._beforeOpen$.asObservable();\n  }\n\n  public afterOpen(): Observable<any> {\n    return this._afterOpen$.asObservable();\n  }\n\n  public beforeClose(): Observable<any> {\n    return this._beforeClose$.asObservable();\n  }\n\n  public afterClosed(): Observable<any> {\n    return this._afterClosed$.asObservable();\n  }\n\n  /** Fetches the position strategy object from the overlay ref. */\n  private getPositionStrategy(): GlobalPositionStrategy {\n    return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n  }\n}\n","/**\n * dialog.service\n */\n\nimport {\n  BlockScrollStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayRef,\n  ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, PortalInjector } from '@angular/cdk/portal';\nimport { Location } from '@angular/common';\nimport {\n  ComponentRef,\n  Inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  Optional,\n  SkipSelf,\n  TemplateRef\n} from '@angular/core';\nimport { Observable, Subject, defer } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { extendObject } from '../utils';\nimport { OwlDialogConfig, OwlDialogConfigInterface } from './dialog-config.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { OwlDialogRef } from './dialog-ref.class';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  const fn = (): BlockScrollStrategy => overlay.scrollStrategies.block();\n  return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n  provide: OWL_DIALOG_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/**\n * Injection token that can be used to specify default dialog options.\n */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>('owl-dialog-default-options');\n\n// eslint-disable-next-line @angular-eslint/use-injectable-provided-in\n@Injectable()\nexport class OwlDialogService {\n  private ariaHiddenElements = new Map<Element, string | null>();\n\n  private _openDialogsAtThisLevel: Array<OwlDialogRef<any>> = [];\n  private _beforeOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n  private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n  private _afterAllClosedAtThisLevel = new Subject<void>();\n\n  /** Keeps track of the currently-open dialogs. */\n  public get openDialogs(): Array<OwlDialogRef<any>> {\n    return this.parentDialog ? this.parentDialog.openDialogs : this._openDialogsAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  public get beforeOpen(): Subject<OwlDialogRef<any>> {\n    return this.parentDialog ? this.parentDialog.beforeOpen : this._beforeOpenAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  public get afterOpen(): Subject<OwlDialogRef<any>> {\n    return this.parentDialog ? this.parentDialog.afterOpen : this._afterOpenAtThisLevel;\n  }\n\n  get #afterAllClosed(): Subject<void> {\n    const parent = this.parentDialog;\n    return parent ? parent.#afterAllClosed : this._afterAllClosedAtThisLevel;\n  }\n\n  /**\n   * Stream that emits when all open dialog have finished closing.\n   * Will emit on subscribe if there are no open dialogs to begin with.\n   */\n\n  public afterAllClosed: Observable<void> = defer(() =>\n    this._openDialogsAtThisLevel.length ? this.#afterAllClosed : this.#afterAllClosed.pipe(startWith(undefined))\n  );\n\n  private readonly scrollStrategy: () => ScrollStrategy;\n\n  constructor(\n    private overlay: Overlay,\n    private injector: Injector,\n    @Optional() private location: Location,\n    @Inject(OWL_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional()\n    @Inject(OWL_DIALOG_DEFAULT_OPTIONS)\n    private defaultOptions: OwlDialogConfigInterface,\n    @Optional()\n    @SkipSelf()\n    private parentDialog: OwlDialogService,\n    private overlayContainer: OverlayContainer\n  ) {\n    this.scrollStrategy = scrollStrategy;\n    if (!parentDialog && location) {\n      location.subscribe(() => this.closeAll());\n    }\n  }\n\n  public open<T>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: OwlDialogConfigInterface\n  ): OwlDialogRef<any> {\n    config = applyConfigDefaults(config, this.defaultOptions);\n\n    if (config.id && this.getDialogById(config.id)) {\n      throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n    }\n\n    const overlayRef = this.createOverlay(config);\n    const dialogContainer = this.attachDialogContainer(overlayRef, config);\n    const dialogRef = this.attachDialogContent<T>(componentOrTemplateRef, dialogContainer, overlayRef, config);\n\n    if (!this.openDialogs.length) {\n      this.hideNonDialogContentFromAssistiveTechnology();\n    }\n\n    this.openDialogs.push(dialogRef);\n    dialogRef.afterClosed().subscribe(() => this.removeOpenDialog(dialogRef));\n    this.beforeOpen.next(dialogRef);\n    this.afterOpen.next(dialogRef);\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  public closeAll(): void {\n    let i = this.openDialogs.length;\n\n    while (i--) {\n      this.openDialogs[i].close();\n    }\n  }\n\n  /**\n   * Finds an open dialog by its id.\n   * @param id ID to use when looking up the dialog.\n   */\n  public getDialogById(id: string): OwlDialogRef<any> | undefined {\n    return this.openDialogs.find((dialog) => dialog.id === id);\n  }\n\n  private attachDialogContent<T>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    dialogContainer: OwlDialogContainerComponent,\n    overlayRef: OverlayRef,\n    config: OwlDialogConfigInterface\n  ): OwlDialogRef<T> {\n    const dialogRef = new OwlDialogRef<T>(overlayRef, dialogContainer, config.id, this.location);\n\n    if (config.hasBackdrop) {\n      overlayRef.backdropClick().subscribe(() => {\n        if (!dialogRef.disableClose) {\n          dialogRef.close();\n        }\n      });\n    }\n\n    if (!(componentOrTemplateRef instanceof TemplateRef)) {\n      const injector = this.createInjector<T>(config, dialogRef, dialogContainer);\n      const contentRef = dialogContainer.attachComponentPortal(\n        new ComponentPortal(componentOrTemplateRef, undefined, injector)\n      );\n      dialogRef.componentInstance = contentRef.instance;\n    }\n\n    dialogRef.updateSize(config.width, config.height).updatePosition(config.position);\n\n    return dialogRef;\n  }\n\n  private createInjector<T>(\n    config: OwlDialogConfigInterface,\n    dialogRef: OwlDialogRef<T>,\n    dialogContainer: OwlDialogContainerComponent\n  ): PortalInjector {\n    const userInjector = config?.viewContainerRef?.injector;\n    const injectionTokens = new WeakMap();\n\n    injectionTokens.set(OwlDialogRef, dialogRef);\n    injectionTokens.set(OwlDialogContainerComponent, dialogContainer);\n    injectionTokens.set(OWL_DIALOG_DATA, config.data);\n\n    return new PortalInjector(userInjector || this.injector, injectionTokens);\n  }\n\n  private createOverlay(config: OwlDialogConfigInterface): OverlayRef {\n    const overlayConfig = this.getOverlayConfig(config);\n    return this.overlay.create(overlayConfig);\n  }\n\n  private attachDialogContainer(overlayRef: OverlayRef, config: OwlDialogConfigInterface): OwlDialogContainerComponent {\n    const containerPortal = new ComponentPortal(OwlDialogContainerComponent, config.viewContainerRef);\n    const containerRef: ComponentRef<OwlDialogContainerComponent> = overlayRef.attach(containerPortal);\n    containerRef.instance.setConfig(config);\n\n    return containerRef.instance;\n  }\n\n  private getOverlayConfig(dialogConfig: OwlDialogConfigInterface): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy: this.overlay.position().global(),\n      scrollStrategy: dialogConfig.scrollStrategy || this.scrollStrategy(),\n      panelClass: dialogConfig.paneClass,\n      hasBackdrop: dialogConfig.hasBackdrop,\n      minWidth: dialogConfig.minWidth,\n      minHeight: dialogConfig.minHeight,\n      maxWidth: dialogConfig.maxWidth,\n      maxHeight: dialogConfig.maxHeight\n    });\n\n    if (dialogConfig.backdropClass) {\n      state.backdropClass = dialogConfig.backdropClass;\n    }\n\n    return state;\n  }\n\n  private removeOpenDialog(dialogRef: OwlDialogRef<any>): void {\n    const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n    if (index > -1) {\n      this.openDialogs.splice(index, 1);\n      // If all the dialogs were closed, remove/restore the `aria-hidden`\n      // to a the siblings and emit to the `afterAllClosed` stream.\n      if (!this.openDialogs.length) {\n        this.ariaHiddenElements.forEach((previousValue, element) => {\n          if (previousValue) {\n            element.setAttribute('aria-hidden', previousValue);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this.ariaHiddenElements.clear();\n        this.#afterAllClosed.next();\n      }\n    }\n  }\n\n  /**\n   * Hides all of the content that isn't an overlay from assistive technology.\n   */\n  private hideNonDialogContentFromAssistiveTechnology(): void {\n    const overlayContainer = this.overlayContainer.getContainerElement();\n\n    // Ensure that the overlay container is attached to the DOM.\n    if (overlayContainer.parentElement) {\n      const siblings = overlayContainer.parentElement.children;\n\n      for (let i = siblings.length - 1; i > -1; i--) {\n        const sibling = siblings[i];\n\n        if (\n          sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live')\n        ) {\n          this.ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(\n  config?: OwlDialogConfigInterface,\n  defaultOptions?: OwlDialogConfigInterface\n): OwlDialogConfig {\n  return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","/**\n * dialog.module\n */\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\n\n@NgModule({\n  imports: [CommonModule, A11yModule, OverlayModule, PortalModule],\n  exports: [],\n  declarations: [OwlDialogContainerComponent],\n  providers: [OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService]\n})\nexport class OwlDialogModule {}\n","/**\n * calendar-body.component\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, NgZone, output } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from './date-time.class';\n\nexport class CalendarCell {\n  constructor(\n    public value: number,\n    public displayValue: string,\n    public ariaLabel: string,\n    public enabled: boolean,\n    public out: boolean = false,\n    public cellClass: string = ''\n  ) {}\n}\n\n@Component({\n  standalone: false,\n  selector: '[owl-date-time-calendar-body]',\n  exportAs: 'owlDateTimeCalendarBody',\n  templateUrl: './calendar-body.component.html',\n  styleUrls: ['./calendar-body.component.scss'],\n  host: {\n    '[class.owl-dt-calendar-body]': 'owlDTCalendarBodyClass'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent {\n  /**\n   * The cell number of the active cell in the table.\n   */\n  @Input()\n  activeCell = 0;\n\n  /**\n   * The cells to display in the table.\n   */\n  @Input()\n  rows: Array<Array<CalendarCell>>;\n\n  /**\n   * The number of columns in the table.\n   */\n  @Input()\n  numCols = 7;\n\n  /**\n   * The ratio (width / height) to use for the cells in the table.\n   */\n  @Input()\n  cellRatio = 1;\n\n  /**\n   * The value in the table that corresponds to today.\n   */\n  @Input()\n  todayValue: number;\n\n  /**\n   * The value in the table that is currently selected.\n   */\n  @Input()\n  selectedValues: Array<number>;\n\n  /**\n   * Current picker select mode\n   */\n  @Input()\n  selectMode: SelectMode;\n\n  /**\n   * Emit when a calendar cell is selected\n   */\n  public readonly select = output<CalendarCell>();\n\n  get owlDTCalendarBodyClass(): boolean {\n    return true;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  constructor(\n    private elmRef: ElementRef,\n    private ngZone: NgZone\n  ) {}\n\n  public selectCell(cell: CalendarCell): void {\n    this.select.emit(cell);\n  }\n\n  public isActiveCell(rowIndex: number, colIndex: number): boolean {\n    const cellNumber = rowIndex * this.numCols + colIndex;\n    return cellNumber === this.activeCell;\n  }\n\n  /**\n   * Check if the cell is selected\n   */\n  public isSelected(value: number): boolean {\n    if (!this.selectedValues || this.selectedValues.length === 0) {\n      return false;\n    }\n\n    if (this.isInSingleMode) {\n      return value === this.selectedValues[0];\n    }\n\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      const toValue = this.selectedValues[1];\n\n      return value === fromValue || value === toValue;\n    }\n\n    return false;\n  }\n\n  /**\n   * Check if the cell in the range\n   */\n  public isInRange(value: number): boolean {\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      const toValue = this.selectedValues[1];\n\n      if (fromValue !== null && toValue !== null) {\n        return value >= fromValue && value <= toValue;\n      } else {\n        return value === fromValue || value === toValue;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Check if the cell is the range from\n   */\n  public isRangeFrom(value: number): boolean {\n    if (this.isInRangeMode) {\n      const fromValue = this.selectedValues[0];\n      return fromValue !== null && value === fromValue;\n    }\n    return false;\n  }\n\n  /**\n   * Check if the cell is the range to\n   */\n  public isRangeTo(value: number): boolean {\n    if (this.isInRangeMode) {\n      const toValue = this.selectedValues[1];\n      return toValue !== null && value === toValue;\n    }\n    return false;\n  }\n\n  /**\n   * Focus to a active cell\n   */\n  public focusActiveCell(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n        });\n    });\n  }\n}\n","@for (row of rows; track rowIndex; let rowIndex = $index) {\n  <tr role=\"row\">\n    @for (item of row; track colIndex; let colIndex = $index) {\n      <td\n        [attr.aria-current]=\"item.value === todayValue ? 'date' : null\"\n        [attr.aria-disabled]=\"!item.enabled || null\"\n        [attr.aria-label]=\"item.ariaLabel\"\n        [attr.aria-selected]=\"isSelected(item.value)\"\n        class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n        [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n        [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n        [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n        [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n        [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n        [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n        [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n        [style.width.%]=\"100 / numCols\"\n        [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n        (click)=\"selectCell(item)\">\n        <span\n          [class.owl-dt-calendar-cell-out]=\"item.out\"\n          [class.owl-dt-calendar-cell-selected]=\"isSelected(item.value)\"\n          [class.owl-dt-calendar-cell-today]=\"item.value === todayValue\"\n          class=\"owl-dt-calendar-cell-content\">\n          {{ item.displayValue }}\n        </span>\n      </td>\n    }\n  </tr>\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface OwlDateTimeFormats {\n  parseInput: any;\n  fullPickerInput: any;\n  datePickerInput: any;\n  timePickerInput: any;\n  monthYearLabel: any;\n  dateA11yLabel: any;\n  monthYearA11yLabel: any;\n}\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/**\n * date-time-adapter.class\n */\nimport { InjectionToken, LOCALE_ID, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>('OWL_DATE_TIME_LOCALE', {\n  providedIn: 'root',\n  factory: OWL_DATE_TIME_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n  return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n  provide: OWL_DATE_TIME_LOCALE,\n  useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n  /** The locale to use for all dates. */\n  protected locale: any;\n\n  /** A stream that emits when the locale changes. */\n  protected _localeChanges = new Subject<string>();\n  get localeChanges(): Observable<string> {\n    return this._localeChanges;\n  }\n\n  /** total milliseconds in a day. */\n  protected readonly millisecondsInDay = 86400000;\n\n  /** total milliseconds in a minute. */\n  protected readonly milliseondsInMinute = 60000;\n\n  /**\n   * Get the year of the given date\n   */\n  abstract getYear(date: T): number;\n\n  /**\n   * Get the month of the given date\n   * 0 -- January\n   * 11 -- December\n   */\n  abstract getMonth(date: T): number;\n\n  /**\n   * Get the day of the week of the given date\n   * 0 -- Sunday\n   * 6 -- Saturday\n   */\n  abstract getDay(date: T): number;\n\n  /**\n   * Get the day num of the given date\n   */\n  abstract getDate(date: T): number;\n\n  /**\n   * Get the hours of the given date\n   */\n  abstract getHours(date: T): number;\n\n  /**\n   * Get the minutes of the given date\n   */\n  abstract getMinutes(date: T): number;\n\n  /**\n   * Get the seconds of the given date\n   */\n  abstract getSeconds(date: T): number;\n\n  /**\n   * Get the milliseconds timestamp of the given date\n   */\n  abstract getTime(date: T): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: T): number;\n\n  /**\n   * Get the number of calendar days between the given dates.\n   * If dateLeft is before dateRight, it would return positive value\n   * If dateLeft is after dateRight, it would return negative value\n   */\n  abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n  /**\n   * Gets the name for the year of the given date.\n   */\n  abstract getYearName(date: T): string;\n\n  /**\n   * Get a list of month names\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): Array<string>;\n\n  /**\n   * Get a list of week names\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): Array<string>;\n\n  /**\n   * Gets a list of names for the dates of the month.\n   */\n  abstract getDateNames(): Array<string>;\n\n  /**\n   * Return a Date object as a string, using the ISO standard\n   */\n  abstract toIso8601(date: T): string;\n\n  /**\n   * Check if the give dates are equal\n   */\n  abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n  /**\n   * Check if the give dates are the same day\n   */\n  abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   */\n  abstract isValid(date: T): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   */\n  abstract invalid(): T;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n   */\n  abstract isDateInstance(obj: unknown): obj is T;\n\n  /**\n   * Add the specified number of years to the given date\n   */\n  abstract addCalendarYears(date: T, amount: number): T;\n\n  /**\n   * Add the specified number of months to the given date\n   */\n  abstract addCalendarMonths(date: T, amount: number): T;\n\n  /**\n   * Add the specified number of days to the given date\n   */\n  abstract addCalendarDays(date: T, amount: number): T;\n\n  /**\n   * Set the hours to the given date.\n   */\n  abstract setHours(date: T, amount: number): T;\n\n  /**\n   * Set the minutes to the given date.\n   */\n  abstract setMinutes(date: T, amount: number): T;\n\n  /**\n   * Set the seconds to the given date.\n   */\n  abstract setSeconds(date: T, amount: number): T;\n\n  /**\n   * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n   * month and date.\n   */\n  abstract createDate(year: number, month: number, date: number): T;\n  abstract createDate(year: number, month: number, date: number, hours: number, minutes: number, seconds: number): T;\n\n  /**\n   * Clone the given date\n   */\n  abstract clone(date: T): T;\n\n  /**\n   * Get a new moment\n   */\n  abstract now(): T;\n\n  /**\n   * Formats a date as a string according to the given format.\n   */\n  abstract format(date: T, displayFormat: any): string;\n\n  /**\n   * Parse a user-provided value to a Date Object\n   */\n  abstract parse(value: any, parseFormat: any): T | null;\n\n  /**\n   * Compare two given dates\n   * 1 if the first date is after the second,\n   * -1 if the first date is before the second\n   * 0 if dates are equal.\n   */\n  compare(first: T, second: T): number {\n    if (!this.isValid(first) || !this.isValid(second)) {\n      throw Error('JSNativeDate: Cannot compare invalid dates.');\n    }\n\n    const dateFirst = this.clone(first);\n    const dateSecond = this.clone(second);\n\n    const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n    if (diff < 0) {\n      return -1;\n    } else if (diff > 0) {\n      return 1;\n    } else {\n      // Return 0 if diff is 0; return NaN if diff is NaN\n      return diff;\n    }\n  }\n\n  /**\n   * Check if two given dates are in the same year\n   * 1 if the first date's year is after the second,\n   * -1 if the first date's year is before the second\n   * 0 if two given dates are in the same year\n   */\n  compareYear(first: T, second: T): number {\n    if (!this.isValid(first) || !this.isValid(second)) {\n      throw Error('JSNativeDate: Cannot compare invalid dates.');\n    }\n\n    const yearLeft = this.getYear(first);\n    const yearRight = this.getYear(second);\n\n    const diff = yearLeft - yearRight;\n\n    if (diff < 0) {\n      return -1;\n    } else if (diff > 0) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n   * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   */\n  deserialize(value: any): T | null {\n    if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   */\n  setLocale(locale: string) {\n    this.locale = locale;\n    this._localeChanges.next(locale);\n  }\n\n  /**\n   * Get the locale used for all dates.\n   */\n  getLocale() {\n    return this.locale;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   */\n  clampDate(date: T, min?: T | null, max?: T | null): T {\n    if (min && this.compare(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compare(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}\n","/**\n * calendar-month-view.component\n */\n\nimport {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewChild,\n  output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time-month-view',\n  exportAs: 'owlYearView',\n  templateUrl: './calendar-month-view.component.html',\n  styleUrls: ['./calendar-month-view.component.scss'],\n  host: {\n    '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   */\n  @Input()\n  public hideOtherMonths = false;\n\n  private isDefaultFirstDayOfWeek = true;\n\n  /**\n   * Define the first day of a week\n   * Sunday: 0 - Saturday: 6\n   */\n  private _firstDayOfWeek: number;\n\n  @Input()\n  public get firstDayOfWeek(): number {\n    return this._firstDayOfWeek;\n  }\n\n  public set firstDayOfWeek(val: number) {\n    if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n      this._firstDayOfWeek = val;\n      this.isDefaultFirstDayOfWeek = false;\n\n      if (this.initiated) {\n        this.generateWeekDays();\n        this.generateCalendar();\n        this.cdRef.markForCheck();\n      }\n    }\n  }\n\n  /**\n   * The select mode of the picker;\n   */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  public get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  public set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null;\n  @Input()\n  public get selected(): T | null {\n    return this._selected;\n  }\n\n  public set selected(value: T | null) {\n    const oldSelected = this._selected;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n\n    if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n      this.setSelectedDates();\n    }\n  }\n\n  private _selecteds: Array<T> = [];\n  @Input()\n  public get selecteds(): Array<T> {\n    return this._selecteds;\n  }\n\n  public set selecteds(values: Array<T>) {\n    this._selecteds = values.map((v) => {\n      v = this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n    this.setSelectedDates();\n  }\n\n  private _pickerMoment: T;\n  @Input()\n  public get pickerMoment(): T {\n    return this._pickerMoment;\n  }\n\n  public set pickerMoment(value: T) {\n    const oldMoment = this._pickerMoment;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n      this.dateTimeAdapter.getYear(this._pickerMoment),\n      this.dateTimeAdapter.getMonth(this._pickerMoment),\n      1\n    );\n\n    if (!this.isSameMonth(oldMoment, this._pickerMoment) && this.initiated) {\n      this.generateCalendar();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   */\n  private _dateFilter: (date: T) => boolean;\n  @Input()\n  public get dateFilter(): (date: T) => boolean {\n    return this._dateFilter;\n  }\n\n  public set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null;\n  @Input()\n  public get minDate(): T | null {\n    return this._minDate;\n  }\n\n  public set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n\n    if (this.initiated) {\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  private _weekdays: Array<{ long: string; short: string; narrow: string }>;\n  get weekdays() {\n    return this._weekdays;\n  }\n\n  private _days: Array<Array<CalendarCell>>;\n  get days() {\n    return this._days;\n  }\n\n  get activeCell(): number {\n    if (this.pickerMoment) {\n      return this.dateTimeAdapter.getDate(this.pickerMoment) + this.firstRowOffset - 1;\n    }\n    return undefined;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  private firstDateOfMonth: T;\n\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private initiated = false;\n\n  private dateNames: Array<string>;\n\n  /**\n   * The date of the month that today falls on.\n   */\n  public todayDate: number | null;\n\n  /**\n   * An array to hold all selectedDates' value\n   * the value is the day number in current month\n   */\n  public selectedDates: Array<number> = [];\n\n  // the index of cell that contains the first date of the month\n  public firstRowOffset: number;\n\n  /**\n   * Callback to invoke when a new date is selected\n   */\n  public readonly selectedChange = output<T | null>();\n\n  /**\n   * Callback to invoke when any date is selected.\n   */\n  public readonly userSelection = output<void>();\n\n  /** Emits when any date is activated. */\n  public readonly pickerMomentChange = output<T>();\n\n  /** The body of calendar table */\n  @ViewChild(OwlCalendarBodyComponent, { static: true })\n  calendarBodyElm: OwlCalendarBodyComponent;\n\n  get owlDTCalendarView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    private dateTimeFormats: OwlDateTimeFormats\n  ) {}\n\n  public ngOnInit() {\n    this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n    this.generateWeekDays();\n\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe((locale) => {\n      this.updateFirstDayOfWeek(locale);\n      this.generateWeekDays();\n      this.generateCalendar();\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public ngAfterContentInit(): void {\n    this.generateCalendar();\n    this.initiated = true;\n  }\n\n  public ngOnDestroy(): void {\n    this.localeSub.unsubscribe();\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    // Cases in which the date would not be selected\n    // 1, the calendar cell is NOT enabled (is NOT valid)\n    // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n    if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n      return;\n    }\n\n    this.selectDate(cell.value);\n  }\n\n  /**\n   * Handle a new date selected\n   */\n  private selectDate(date: number): void {\n    const daysDiff = date - 1;\n    const selected = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n\n    this.selectedChange.emit(selected);\n    this.userSelection.emit();\n  }\n\n  /**\n   * Handle keydown event on calendar body\n   */\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 day\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 day\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 week\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 week\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to first day of current month\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarDays(\n          this.pickerMoment,\n          1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to last day of current month\n      case END:\n        moment = this.dateTimeAdapter.addCalendarDays(\n          this.pickerMoment,\n          this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) - this.dateTimeAdapter.getDate(this.pickerMoment)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 month (or 1 year)\n      case PAGE_UP:\n        moment =\n          event.altKey ?\n            this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n          : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 month (or 1 year)\n      case PAGE_DOWN:\n        moment =\n          event.altKey ?\n            this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n          : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // select the pickerMoment\n      case ENTER:\n        if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n          this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n        }\n        break;\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the calendar weekdays array\n   */\n  private generateWeekDays(): void {\n    const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n    const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n    const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n    const firstDayOfWeek = this.firstDayOfWeek;\n\n    const weekdays = longWeekdays.map((long, i) => {\n      return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n    });\n\n    this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n    this.dateNames = this.dateTimeAdapter.getDateNames();\n\n    return;\n  }\n\n  /**\n   * Generate the calendar days array\n   */\n  private generateCalendar(): void {\n    if (!this.pickerMoment) {\n      return;\n    }\n\n    this.todayDate = null;\n\n    // the first weekday of the month\n    const startWeekdayOfMonth = this.dateTimeAdapter.getDay(this.firstDateOfMonth);\n    const firstDayOfWeek = this.firstDayOfWeek;\n\n    // the amount of days from the first date of the month\n    // if it is < 0, it means the date is in previous month\n    let daysDiff = 0 - ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) % DAYS_PER_WEEK);\n\n    // the index of cell that contains the first date of the month\n    this.firstRowOffset = Math.abs(daysDiff);\n\n    this._days = [];\n    for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n      const week = [];\n      for (let j = 0; j < DAYS_PER_WEEK; j++) {\n        const date = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n        const dateCell = this.createDateCell(date, daysDiff);\n\n        // check if the date is today\n        if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n          this.todayDate = daysDiff + 1;\n        }\n\n        week.push(dateCell);\n        daysDiff += 1;\n      }\n      this._days.push(week);\n    }\n\n    this.setSelectedDates();\n  }\n\n  private updateFirstDayOfWeek(locale: string): void {\n    if (this.isDefaultFirstDayOfWeek) {\n      try {\n        this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n      } catch {\n        this._firstDayOfWeek = 0;\n      }\n    }\n  }\n\n  /**\n   * Creates CalendarCell for days.\n   */\n  private createDateCell(date: T, daysDiff: number): CalendarCell {\n    // total days of the month\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment);\n    const dateNum = this.dateTimeAdapter.getDate(date);\n    // const dateName = this.dateNames[dateNum - 1];\n    const dateName = dateNum.toString();\n    const ariaLabel = this.dateTimeAdapter.format(date, this.dateTimeFormats.dateA11yLabel);\n\n    // check if the date if selectable\n    const enabled = this.isDateEnabled(date);\n\n    // check if date is not in current month\n    const dayValue = daysDiff + 1;\n    const out = dayValue < 1 || dayValue > daysInMonth;\n    const cellClass = `owl-dt-day-${this.dateTimeAdapter.getDay(date)}`;\n\n    return new CalendarCell(dayValue, dateName, ariaLabel, enabled, out, cellClass);\n  }\n\n  /**\n   * Check if the date is valid\n   */\n  private isDateEnabled(date: T): boolean {\n    return (\n      !!date &&\n      (!this.dateFilter || this.dateFilter(date)) &&\n      (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n      (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n    );\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  /**\n   * Check if the give dates are none-null and in the same month\n   */\n  public isSameMonth(dateLeft: T, dateRight: T): boolean {\n    return !!(\n      dateLeft &&\n      dateRight &&\n      this.dateTimeAdapter.isValid(dateLeft) &&\n      this.dateTimeAdapter.isValid(dateRight) &&\n      this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight) &&\n      this.dateTimeAdapter.getMonth(dateLeft) === this.dateTimeAdapter.getMonth(dateRight)\n    );\n  }\n\n  /**\n   * Set the selectedDates value.\n   * In single mode, it has only one value which represent the selected date\n   * In range mode, it would has two values, one for the fromValue and the other for the toValue\n   */\n  private setSelectedDates(): void {\n    this.selectedDates = [];\n\n    if (!this.firstDateOfMonth) {\n      return;\n    }\n\n    if (this.isInSingleMode && this.selected) {\n      const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(this.selected, this.firstDateOfMonth);\n      this.selectedDates[0] = dayDiff + 1;\n      return;\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this.selectedDates = this.selecteds.map((selected) => {\n        if (this.dateTimeAdapter.isValid(selected)) {\n          const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(selected, this.firstDateOfMonth);\n          return dayDiff + 1;\n        } else {\n          return null;\n        }\n      });\n    }\n  }\n\n  private focusActiveCell(): void {\n    this.calendarBodyElm.focusActiveCell();\n  }\n}\n","<table\n  [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n  class=\"owl-dt-calendar-table owl-dt-calendar-month-table\">\n  <thead class=\"owl-dt-calendar-header\">\n    <tr class=\"owl-dt-weekdays\">\n      @for (weekday of weekdays; track weekday.short) {\n        <th\n          [attr.aria-label]=\"weekday.long\"\n          class=\"owl-dt-weekday\"\n          scope=\"col\">\n          <span>{{ weekday.short }}</span>\n        </th>\n      }\n    </tr>\n    <tr>\n      <th\n        aria-hidden=\"true\"\n        class=\"owl-dt-calendar-table-divider\"\n        colspan=\"7\"></th>\n    </tr>\n  </thead>\n  <tbody\n    [activeCell]=\"activeCell\"\n    [rows]=\"days\"\n    [selectMode]=\"selectMode\"\n    [selectedValues]=\"selectedDates\"\n    [todayValue]=\"todayDate\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n    owl-date-time-calendar-body\n    role=\"grid\"></tbody>\n</table>\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport function defaultOptionsFactory() {\n  return DefaultOptions.create();\n}\nexport function multiYearOptionsFactory(options: Options) {\n  return options.multiYear;\n}\n\nexport interface Options {\n  multiYear: {\n    yearsPerRow: number;\n    yearRows: number;\n  };\n}\nexport class DefaultOptions {\n  public static create(): Options {\n    // Always return new instance\n    return {\n      multiYear: {\n        yearRows: 7,\n        yearsPerRow: 3\n      }\n    };\n  }\n}\n\nexport abstract class OptionsTokens {\n  public static all = new InjectionToken<Options>('All options token');\n  public static multiYear = new InjectionToken<Options['multiYear']>('Grid view options token');\n}\n\nexport const optionsProviders: Array<Provider> = [\n  {\n    provide: OptionsTokens.all,\n    useFactory: defaultOptionsFactory\n  },\n  {\n    provide: OptionsTokens.multiYear,\n    useFactory: multiYearOptionsFactory,\n    deps: [OptionsTokens.all]\n  }\n];\n","/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OwlDateTimeIntl {\n  /**\n   * Stream that emits whenever the labels here are changed. Use this to notify\n   * components if the labels have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for the up second button (used by screen readers).  */\n  upSecondLabel = 'Add a second';\n\n  /** A label for the down second button (used by screen readers).  */\n  downSecondLabel = 'Minus a second';\n\n  /** A label for the up minute button (used by screen readers).  */\n  upMinuteLabel = 'Add a minute';\n\n  /** A label for the down minute button (used by screen readers).  */\n  downMinuteLabel = 'Minus a minute';\n\n  /** A label for the up hour button (used by screen readers).  */\n  upHourLabel = 'Add a hour';\n\n  /** A label for the down hour button (used by screen readers).  */\n  downHourLabel = 'Minus a hour';\n\n  /** A label for the previous month button (used by screen readers). */\n  prevMonthLabel = 'Previous month';\n\n  /** A label for the next month button (used by screen readers). */\n  nextMonthLabel = 'Next month';\n\n  /** A label for the previous year button (used by screen readers). */\n  prevYearLabel = 'Previous year';\n\n  /** A label for the next year button (used by screen readers). */\n  nextYearLabel = 'Next year';\n\n  /** A label for the previous multi-year button (used by screen readers). */\n  prevMultiYearLabel = 'Previous 21 years';\n\n  /** A label for the next multi-year button (used by screen readers). */\n  nextMultiYearLabel = 'Next 21 years';\n\n  /** A label for the 'switch to month view' button (used by screen readers). */\n  switchToMonthViewLabel = 'Change to month view';\n\n  /** A label for the 'switch to year view' button (used by screen readers). */\n  switchToMultiYearViewLabel = 'Choose month and year';\n\n  /** A label for the cancel button */\n  cancelBtnLabel = 'Cancel';\n\n  /** A label for the set button */\n  setBtnLabel = 'Set';\n\n  /** A label for the range 'from' in picker info */\n  rangeFromLabel = 'From';\n\n  /** A label for the range 'to' in picker info */\n  rangeToLabel = 'To';\n\n  /** A label for the hour12 button (AM) */\n  hour12AMLabel = 'AM';\n\n  /** A label for the hour12 button (PM) */\n  hour12PMLabel = 'PM';\n\n  /** A label for the today button */\n  todayButtonLabel = 'Today';\n}\n","/**\n * calendar-multi-year-view.component\n */\n\nimport {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Input,\n  Optional,\n  ViewChild,\n  output\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { SelectMode } from './date-time.class';\nimport { OptionsTokens } from './options-provider';\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time-multi-year-view',\n  templateUrl: './calendar-multi-year-view.component.html',\n  styleUrls: ['./calendar-multi-year-view.component.scss'],\n  host: {\n    '[class.owl-dt-calendar-view]': 'owlDTCalendarView',\n    '[class.owl-dt-calendar-multi-year-view]': 'owlDTCalendarMultiYearView'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMultiYearViewComponent<T> implements AfterContentInit {\n  /**\n   * The select mode of the picker;\n   */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.setSelectedYears();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    const oldSelected = this._selected;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n\n    if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n      this.setSelectedYears();\n    }\n  }\n\n  private _selecteds: Array<T> = [];\n  @Input()\n  get selecteds(): Array<T> {\n    return this._selecteds;\n  }\n\n  set selecteds(values: Array<T>) {\n    this._selecteds = values.map((v) => {\n      v = this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n    this.setSelectedYears();\n  }\n\n  private _pickerMoment: T | null;\n  @Input()\n  get pickerMoment() {\n    return this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    const oldMoment = this._pickerMoment;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    if (oldMoment && this._pickerMoment && !this.isSameYearList(oldMoment, this._pickerMoment)) {\n      this.generateYearList();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   */\n  private _dateFilter: (date: T) => boolean;\n  @Input()\n  get dateFilter() {\n    return this._dateFilter;\n  }\n\n  set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateYearList();\n    }\n  }\n\n  private _todayYear: number;\n  get todayYear(): number {\n    return this._todayYear;\n  }\n\n  private _years: Array<Array<CalendarCell>>;\n  get years() {\n    return this._years;\n  }\n\n  private _selectedYears: Array<number>;\n  get selectedYears(): Array<number> {\n    return this._selectedYears;\n  }\n\n  private initiated = false;\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  get activeCell(): number | undefined {\n    if (this._pickerMoment) {\n      return this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows);\n    }\n    return undefined;\n  }\n\n  get tableHeader(): string | undefined {\n    if (this._years && this._years.length > 0) {\n      return `${this._years[0][0].displayValue} - ${this._years[this.options.yearRows - 1][this.options.yearsPerRow - 1].displayValue}`;\n    }\n    return undefined;\n  }\n\n  get prevButtonLabel(): string {\n    return this.pickerIntl.prevMultiYearLabel;\n  }\n\n  get nextButtonLabel(): string {\n    return this.pickerIntl.nextMultiYearLabel;\n  }\n\n  /**\n   * Callback to invoke when a new month is selected\n   */\n  public readonly change = output<T>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   */\n  public readonly yearSelected = output<T>();\n\n  /** Emits when any date is activated. */\n  public readonly pickerMomentChange = output<T>();\n\n  /** Emits when use keyboard enter to select a calendar cell */\n  public readonly keyboardEnter = output<void>();\n\n  /** The body of calendar table */\n  @ViewChild(OwlCalendarBodyComponent, { static: true })\n  calendarBodyElm: OwlCalendarBodyComponent;\n\n  get owlDTCalendarView(): boolean {\n    return true;\n  }\n\n  get owlDTCalendarMultiYearView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private pickerIntl: OwlDateTimeIntl,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n    @Inject(OptionsTokens.multiYear) private options: any\n  ) {}\n\n  public ngAfterContentInit(): void {\n    this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n    this.generateYearList();\n    this.initiated = true;\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    this.selectYear(cell.value);\n  }\n\n  private selectYear(year: number): void {\n    this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), 1);\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n    const selected = this.dateTimeAdapter.createDate(\n      year,\n      this.dateTimeAdapter.getMonth(this.pickerMoment),\n      Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n      this.dateTimeAdapter.getHours(this.pickerMoment),\n      this.dateTimeAdapter.getMinutes(this.pickerMoment),\n      this.dateTimeAdapter.getSeconds(this.pickerMoment)\n    );\n\n    this.change.emit(selected);\n  }\n\n  /**\n   * Generate the previous year list\n   */\n  public prevYearList(event: any): void {\n    this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n      this.pickerMoment,\n      -1 * this.options.yearsPerRow * this.options.yearRows\n    );\n    this.generateYearList();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the next year list\n   */\n  public nextYearList(event: any): void {\n    this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n      this.pickerMoment,\n      this.options.yearsPerRow * this.options.yearRows\n    );\n    this.generateYearList();\n    event.preventDefault();\n  }\n\n  public generateYearList(): void {\n    this._years = [];\n\n    const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n    const offset = pickerMomentYear % (this.options.yearsPerRow * this.options.yearRows);\n\n    for (let i = 0; i < this.options.yearRows; i++) {\n      const row = [];\n\n      for (let j = 0; j < this.options.yearsPerRow; j++) {\n        const year = pickerMomentYear - offset + (j + i * this.options.yearsPerRow);\n        const yearCell = this.createYearCell(year);\n        row.push(yearCell);\n      }\n\n      this._years.push(row);\n    }\n\n    return;\n  }\n\n  /** Whether the previous period button is enabled. */\n  public previousEnabled(): boolean {\n    if (!this.minDate) {\n      return true;\n    }\n    return !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate);\n  }\n\n  /** Whether the next period button is enabled. */\n  public nextEnabled(): boolean {\n    return !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate);\n  }\n\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 year\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 3 years\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.yearsPerRow);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 3 years\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.yearsPerRow);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // go to the first year of the year page\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this._pickerMoment,\n          -this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // go to the last year of the year page\n      case END:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this._pickerMoment,\n          this.options.yearsPerRow * this.options.yearRows -\n            (this.dateTimeAdapter.getYear(this._pickerMoment) % (this.options.yearsPerRow * this.options.yearRows)) -\n            1\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 year page (or 10 year pages)\n      case PAGE_UP:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this.pickerMoment,\n          event.altKey ?\n            -10 * (this.options.yearsPerRow * this.options.yearRows)\n          : -1 * (this.options.yearsPerRow * this.options.yearRows)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year page (or 10 year pages)\n      case PAGE_DOWN:\n        moment = this.dateTimeAdapter.addCalendarYears(\n          this.pickerMoment,\n          event.altKey ?\n            10 * (this.options.yearsPerRow * this.options.yearRows)\n          : this.options.yearsPerRow * this.options.yearRows\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      case ENTER:\n        this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n        this.keyboardEnter.emit();\n        break;\n\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Creates an CalendarCell for the given year.\n   */\n  private createYearCell(year: number): CalendarCell {\n    const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n    const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n    const cellClass = `owl-dt-year-${year}`;\n    return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n  }\n\n  private setSelectedYears(): void {\n    this._selectedYears = [];\n\n    if (this.isInSingleMode && this.selected) {\n      this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this._selectedYears = this.selecteds.map((selected) => {\n        if (this.dateTimeAdapter.isValid(selected)) {\n          return this.dateTimeAdapter.getYear(selected);\n        } else {\n          return null;\n        }\n      });\n    }\n  }\n\n  /** Whether the given year is enabled. */\n  private isYearEnabled(year: number): boolean {\n    // disable if the year is greater than maxDate lower than minDate\n    if (\n      year === undefined ||\n      year === null ||\n      (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n      (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n    ) {\n      return false;\n    }\n\n    // enable if it reaches here and there's no filter defined\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n    // If any date in the year is enabled count the year as enabled.\n    for (\n      let date = firstOfYear;\n      this.dateTimeAdapter.getYear(date) === year;\n      date = this.dateTimeAdapter.addCalendarDays(date, 1)\n    ) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  private isSameYearList(date1: T, date2: T): boolean {\n    return (\n      Math.floor(this.dateTimeAdapter.getYear(date1) / (this.options.yearsPerRow * this.options.yearRows)) ===\n      Math.floor(this.dateTimeAdapter.getYear(date2) / (this.options.yearsPerRow * this.options.yearRows))\n    );\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: unknown): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  private focusActiveCell(): void {\n    this.calendarBodyElm.focusActiveCell();\n  }\n}\n","<button\n  [attr.aria-label]=\"prevButtonLabel\"\n  [disabled]=\"!previousEnabled()\"\n  (click)=\"prevYearList($event)\"\n  class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n  tabindex=\"0\"\n  type=\"button\">\n  <span\n    class=\"owl-dt-control-button-content\"\n    tabindex=\"-1\">\n    <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n    <svg\n      xml:space=\"preserve\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      height=\"100%\"\n      style=\"enable-background: new 0 0 250.738 250.738\"\n      version=\"1.1\"\n      viewBox=\"0 0 250.738 250.738\"\n      width=\"100%\"\n      x=\"0px\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      y=\"0px\">\n      <path\n        d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n        style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n    </svg>\n    <!-- </editor-fold> -->\n  </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n  <thead class=\"owl-dt-calendar-header\">\n    <tr>\n      <th colspan=\"3\">{{ tableHeader }}</th>\n    </tr>\n  </thead>\n  <tbody\n    [activeCell]=\"activeCell\"\n    [cellRatio]=\"3 / 7\"\n    [numCols]=\"3\"\n    [rows]=\"years\"\n    [selectMode]=\"selectMode\"\n    [selectedValues]=\"selectedYears\"\n    [todayValue]=\"todayYear\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n    owl-date-time-calendar-body\n    role=\"grid\"></tbody>\n</table>\n<button\n  [attr.aria-label]=\"nextButtonLabel\"\n  [disabled]=\"!nextEnabled()\"\n  (click)=\"nextYearList($event)\"\n  class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n  tabindex=\"0\"\n  type=\"button\">\n  <span\n    class=\"owl-dt-control-button-content\"\n    tabindex=\"-1\">\n    <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n    <svg\n      xml:space=\"preserve\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      style=\"enable-background: new 0 0 250.738 250.738\"\n      version=\"1.1\"\n      viewBox=\"0 0 250.738 250.738\"\n      x=\"0px\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      y=\"0px\">\n      <path\n        d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                C197.237,120.447,195.534,115.448,191.75,111.689z\"\n        style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n    </svg>\n    <!-- </editor-fold> -->\n  </span>\n</button>\n","/**\n * calendar-year-view.component\n */\n\nimport {\n  DOWN_ARROW,\n  END,\n  ENTER,\n  HOME,\n  LEFT_ARROW,\n  PAGE_DOWN,\n  PAGE_UP,\n  RIGHT_ARROW,\n  UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewChild,\n  output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time-year-view',\n  exportAs: 'owlMonthView',\n  templateUrl: './calendar-year-view.component.html',\n  styleUrls: ['./calendar-year-view.component.scss'],\n  host: {\n    '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n  /**\n   * The select mode of the picker;\n   */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n\n  set selectMode(val: SelectMode) {\n    this._selectMode = val;\n    if (this.initiated) {\n      this.generateMonthList();\n      this.cdRef.markForCheck();\n    }\n  }\n\n  /** The currently selected date. */\n  private _selected: T | null;\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n    this.setSelectedMonths();\n  }\n\n  private _selecteds: Array<T> = [];\n  @Input()\n  get selecteds(): Array<T> {\n    return this._selecteds;\n  }\n\n  set selecteds(values: Array<T>) {\n    this._selecteds = [];\n    for (const val of values) {\n      const value = this.dateTimeAdapter.deserialize(val);\n      this._selecteds.push(this.getValidDate(value));\n    }\n\n    this.setSelectedMonths();\n  }\n\n  private _pickerMoment: T | null;\n  @Input()\n  get pickerMoment() {\n    return this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    const oldMoment = this._pickerMoment;\n    value = this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n    if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /**\n   * A function used to filter which dates are selectable\n   */\n  private _dateFilter: (date: T) => boolean;\n  @Input()\n  get dateFilter() {\n    return this._dateFilter;\n  }\n\n  set dateFilter(filter: (date: T) => boolean) {\n    this._dateFilter = filter;\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /** The minimum selectable date. */\n  private _minDate: T | null;\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null;\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDate = this.getValidDate(value);\n    if (this.initiated) {\n      this.generateMonthList();\n    }\n  }\n\n  private readonly monthNames: Array<string>;\n\n  private _months: Array<Array<CalendarCell>>;\n  get months() {\n    return this._months;\n  }\n\n  get activeCell(): number {\n    if (this._pickerMoment) {\n      return this.dateTimeAdapter.getMonth(this._pickerMoment);\n    }\n    return undefined;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private initiated = false;\n\n  public todayMonth: number | null;\n\n  /**\n   * An array to hold all selectedDates' month value\n   * the value is the month number in current year\n   */\n  public selectedMonths: Array<number> = [];\n\n  /**\n   * Callback to invoke when a new month is selected\n   */\n  public readonly change = output<T>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   */\n  public readonly monthSelected = output<T>();\n\n  /** Emits when any date is activated. */\n  public readonly pickerMomentChange = output<T>();\n\n  /** Emits when use keyboard enter to select a calendar cell */\n  public readonly keyboardEnter = output<void>();\n\n  /** The body of calendar table */\n  @ViewChild(OwlCalendarBodyComponent, { static: true })\n  calendarBodyElm: OwlCalendarBodyComponent;\n\n  get owlDTCalendarView(): boolean {\n    return true;\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    private dateTimeFormats: OwlDateTimeFormats\n  ) {\n    this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n  }\n\n  public ngOnInit() {\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n      this.generateMonthList();\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public ngAfterContentInit(): void {\n    this.generateMonthList();\n    this.initiated = true;\n  }\n\n  public ngOnDestroy(): void {\n    this.localeSub.unsubscribe();\n  }\n\n  /**\n   * Handle a calendarCell selected\n   */\n  public selectCalendarCell(cell: CalendarCell): void {\n    this.selectMonth(cell.value);\n  }\n\n  /**\n   * Handle a new month selected\n   */\n  private selectMonth(month: number): void {\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n    this.monthSelected.emit(firstDateOfMonth);\n\n    const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n    const result = this.dateTimeAdapter.createDate(\n      this.dateTimeAdapter.getYear(this.pickerMoment),\n      month,\n      Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n      this.dateTimeAdapter.getHours(this.pickerMoment),\n      this.dateTimeAdapter.getMinutes(this.pickerMoment),\n      this.dateTimeAdapter.getSeconds(this.pickerMoment)\n    );\n\n    this.change.emit(result);\n  }\n\n  /**\n   * Handle keydown event on calendar body\n   */\n  public handleCalendarKeydown(event: KeyboardEvent): void {\n    let moment;\n    switch (event.keyCode) {\n      // minus 1 month\n      case LEFT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 month\n      case RIGHT_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 3 months\n      case UP_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 3 months\n      case DOWN_ARROW:\n        moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to first month of current year\n      case HOME:\n        moment = this.dateTimeAdapter.addCalendarMonths(\n          this.pickerMoment,\n          -this.dateTimeAdapter.getMonth(this.pickerMoment)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // move to last month of current year\n      case END:\n        moment = this.dateTimeAdapter.addCalendarMonths(\n          this.pickerMoment,\n          11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n        );\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // minus 1 year (or 10 year)\n      case PAGE_UP:\n        moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 : -1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // add 1 year (or 10 year)\n      case PAGE_DOWN:\n        moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 : 1);\n        this.pickerMomentChange.emit(moment);\n        break;\n\n      // Select current month\n      case ENTER:\n        this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n        this.keyboardEnter.emit();\n        break;\n      default:\n        return;\n    }\n\n    this.focusActiveCell();\n    event.preventDefault();\n  }\n\n  /**\n   * Generate the calendar month list\n   */\n  private generateMonthList(): void {\n    if (!this.pickerMoment) {\n      return;\n    }\n\n    this.setSelectedMonths();\n    this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n    this._months = [];\n    for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n      const row = [];\n\n      for (let j = 0; j < MONTHS_PER_ROW; j++) {\n        const month = j + i * MONTHS_PER_ROW;\n        const monthCell = this.createMonthCell(month);\n        row.push(monthCell);\n      }\n\n      this._months.push(row);\n    }\n\n    return;\n  }\n\n  /**\n   * Creates an CalendarCell for the given month.\n   */\n  private createMonthCell(month: number): CalendarCell {\n    const startDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n    const ariaLabel = this.dateTimeAdapter.format(startDateOfMonth, this.dateTimeFormats.monthYearA11yLabel);\n    const cellClass = `owl-dt-month-${month}`;\n    return new CalendarCell(month, this.monthNames[month], ariaLabel, this.isMonthEnabled(month), false, cellClass);\n  }\n\n  /**\n   * Check if the given month is enable\n   */\n  private isMonthEnabled(month: number): boolean {\n    const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n    // If any date in the month is selectable,\n    // we count the month as enable\n    for (\n      let date = firstDateOfMonth;\n      this.dateTimeAdapter.getMonth(date) === month;\n      date = this.dateTimeAdapter.addCalendarDays(date, 1)\n    ) {\n      if (\n        !!date &&\n        (!this.dateFilter || this.dateFilter(date)) &&\n        (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n        (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Gets the month in this year that the given Date falls on.\n   * Returns null if the given Date is in another year.\n   */\n  private getMonthInCurrentYear(date: T | null): number {\n    if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n      const result = this.dateTimeAdapter.compareYear(date, this._pickerMoment);\n\n      // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n      // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n      // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n      if (result < 0) {\n        return -1;\n      } else if (result > 0) {\n        return 12;\n      } else {\n        return this.dateTimeAdapter.getMonth(date);\n      }\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Set the selectedMonths value\n   * In single mode, it has only one value which represent the month the selected date in\n   * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n   */\n  private setSelectedMonths(): void {\n    this.selectedMonths = [];\n    if (this.isInSingleMode && this.selected) {\n      this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n    }\n\n    if (this.isInRangeMode && this.selecteds) {\n      this.selectedMonths[0] = this.getMonthInCurrentYear(this.selecteds[0]);\n      this.selectedMonths[1] = this.getMonthInCurrentYear(this.selecteds[1]);\n    }\n  }\n\n  /**\n   * Check the given dates are in the same year\n   */\n  private hasSameYear(dateLeft: T, dateRight: T): boolean {\n    return !!(\n      dateLeft &&\n      dateRight &&\n      this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight)\n    );\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: unknown): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  private focusActiveCell(): void {\n    this.calendarBodyElm.focusActiveCell();\n  }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n  <thead class=\"owl-dt-calendar-header\">\n    <tr>\n      <th\n        aria-hidden=\"true\"\n        class=\"owl-dt-calendar-table-divider\"\n        colspan=\"3\"></th>\n    </tr>\n  </thead>\n  <tbody\n    [activeCell]=\"activeCell\"\n    [cellRatio]=\"3 / 7\"\n    [numCols]=\"3\"\n    [rows]=\"months\"\n    [selectMode]=\"selectMode\"\n    [selectedValues]=\"selectedMonths\"\n    [todayValue]=\"todayMonth\"\n    (keydown)=\"handleCalendarKeydown($event)\"\n    (select)=\"selectCalendarCell($event)\"\n    owl-date-time-calendar-body\n    role=\"grid\"></tbody>\n</table>\n","/**\n * date-time.class\n */\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, Inject, Input, Optional, type OutputRef } from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\nexport enum DateView {\n  MONTH = 'month',\n  YEAR = 'year',\n  MULTI_YEARS = 'multi-years'\n}\n\nexport type DateViewType = DateView.MONTH | DateView.YEAR | DateView.MULTI_YEARS;\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n  /**\n   * Whether to show the second's timer\n   */\n  private _showSecondsTimer = false;\n  @Input()\n  get showSecondsTimer(): boolean {\n    return this._showSecondsTimer;\n  }\n\n  set showSecondsTimer(val: boolean) {\n    this._showSecondsTimer = coerceBooleanProperty(val);\n  }\n\n  /**\n   * Whether the timer is in hour12 format\n   */\n  private _hour12Timer = false;\n  @Input()\n  get hour12Timer(): boolean {\n    return this._hour12Timer;\n  }\n\n  set hour12Timer(val: boolean) {\n    this._hour12Timer = coerceBooleanProperty(val);\n  }\n\n  /**\n   * The view that the calendar should start in.\n   */\n  @Input()\n  startView: DateViewType = DateView.MONTH;\n\n  /**\n   * Whether to should only the year and multi-year views.\n   */\n  @Input()\n  yearOnly = false;\n\n  /**\n   * Whether to should only the multi-year view.\n   */\n  @Input()\n  multiyearOnly = false;\n\n  /**\n   * Hours to change per step\n   */\n  private _stepHour = 1;\n  @Input()\n  get stepHour(): number {\n    return this._stepHour;\n  }\n\n  set stepHour(val: number) {\n    this._stepHour = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Minutes to change per step\n   */\n  private _stepMinute = 1;\n  @Input()\n  get stepMinute(): number {\n    return this._stepMinute;\n  }\n\n  set stepMinute(val: number) {\n    this._stepMinute = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Seconds to change per step\n   */\n  private _stepSecond = 1;\n  @Input()\n  get stepSecond(): number {\n    return this._stepSecond;\n  }\n\n  set stepSecond(val: number) {\n    this._stepSecond = coerceNumberProperty(val, 1);\n  }\n\n  /**\n   * Set the first day of week\n   */\n  private _firstDayOfWeek: number;\n  @Input()\n  get firstDayOfWeek() {\n    return this._firstDayOfWeek;\n  }\n\n  set firstDayOfWeek(value: number) {\n    value = coerceNumberProperty(value);\n    if (value > 6 || value < 0) {\n      this._firstDayOfWeek = undefined;\n    } else {\n      this._firstDayOfWeek = value;\n    }\n  }\n\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   */\n  private _hideOtherMonths = false;\n  @Input()\n  get hideOtherMonths(): boolean {\n    return this._hideOtherMonths;\n  }\n\n  set hideOtherMonths(val: boolean) {\n    this._hideOtherMonths = coerceBooleanProperty(val);\n  }\n\n  private readonly _id: string;\n  get id(): string {\n    return this._id;\n  }\n\n  abstract get selected(): T | null;\n\n  abstract get selecteds(): Array<T> | null;\n\n  abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n  abstract get maxDateTime(): T | null;\n\n  abstract get minDateTime(): T | null;\n\n  abstract get selectMode(): SelectMode;\n\n  abstract get startAt(): T | null;\n\n  abstract get endAt(): T | null;\n\n  abstract get opened(): boolean;\n\n  abstract get pickerMode(): PickerMode;\n\n  abstract get pickerType(): PickerType;\n\n  abstract get isInSingleMode(): boolean;\n\n  abstract get isInRangeMode(): boolean;\n\n  abstract select(date: T | Array<T>): void;\n\n  abstract yearSelected: OutputRef<T>;\n\n  abstract monthSelected: OutputRef<T>;\n\n  abstract dateSelected: OutputRef<T>;\n\n  abstract selectYear(normalizedYear: T): void;\n\n  abstract selectMonth(normalizedMonth: T): void;\n\n  abstract selectDate(normalizedDate: T): void;\n\n  get formatString(): string {\n    if (this.pickerType === 'both') {\n      return this.dateTimeFormats.fullPickerInput;\n    }\n\n    if (this.pickerType === 'calendar') {\n      return this.dateTimeFormats.datePickerInput;\n    }\n\n    return this.dateTimeFormats.timePickerInput;\n  }\n\n  /**\n   * Date Time Checker to check if the give dateTime is selectable\n   */\n  public dateTimeChecker = (dateTime: T) => {\n    return (\n      !!dateTime &&\n      (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n      (!this.minDateTime || this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n      (!this.maxDateTime || this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n    );\n  };\n\n  get disabled(): boolean {\n    return false;\n  }\n\n  protected constructor(\n    @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    protected dateTimeFormats: OwlDateTimeFormats\n  ) {\n    if (!this.dateTimeAdapter) {\n      throw Error(\n        `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n          `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n          `custom implementation.`\n      );\n    }\n\n    if (!this.dateTimeFormats) {\n      throw Error(\n        `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n          `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n          `custom implementation.`\n      );\n    }\n\n    this._id = `owl-dt-picker-${nextUniqueId++}`;\n  }\n\n  protected getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","/**\n * calendar.component\n */\n\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateView, DateViewType, SelectMode } from './date-time.class';\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time-calendar',\n  exportAs: 'owlDateTimeCalendar',\n  templateUrl: './calendar.component.html',\n  styleUrls: ['./calendar.component.scss'],\n  host: {\n    '[class.owl-dt-calendar]': 'owlDTCalendarClass'\n  },\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T> implements AfterContentInit, AfterViewChecked, OnDestroy {\n  DateView = DateView;\n\n  @Input()\n  get minDate(): T | null {\n    return this._minDate;\n  }\n\n  set minDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n\n    this._minDate =\n      value ?\n        this.dateTimeAdapter.createDate(\n          this.dateTimeAdapter.getYear(value),\n          this.dateTimeAdapter.getMonth(value),\n          this.dateTimeAdapter.getDate(value)\n        )\n      : null;\n  }\n\n  @Input()\n  get maxDate(): T | null {\n    return this._maxDate;\n  }\n\n  set maxDate(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n\n    this._maxDate =\n      value ?\n        this.dateTimeAdapter.createDate(\n          this.dateTimeAdapter.getYear(value),\n          this.dateTimeAdapter.getMonth(value),\n          this.dateTimeAdapter.getDate(value)\n        )\n      : null;\n  }\n\n  @Input()\n  get pickerMoment() {\n    return this._pickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n  }\n\n  @Input()\n  get selected(): T | null {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._selected = this.getValidDate(value);\n  }\n\n  @Input()\n  get selecteds(): Array<T> {\n    return this._selecteds;\n  }\n\n  set selecteds(values: Array<T>) {\n    this._selecteds = values.map((v) => {\n      v = this.dateTimeAdapter.deserialize(v);\n      return this.getValidDate(v);\n    });\n  }\n\n  get periodButtonText(): string {\n    return this.isMonthView ?\n        this.dateTimeAdapter.format(this.pickerMoment, this.dateTimeFormats.monthYearLabel)\n      : this.dateTimeAdapter.getYearName(this.pickerMoment);\n  }\n\n  get periodButtonLabel(): string {\n    return this.isMonthView ? this.pickerIntl.switchToMultiYearViewLabel : this.pickerIntl.switchToMonthViewLabel;\n  }\n\n  get todayButtonLabel(): string {\n    return this.pickerIntl.todayButtonLabel;\n  }\n\n  get prevButtonLabel(): string {\n    if (this._currentView === DateView.MONTH) {\n      return this.pickerIntl.prevMonthLabel;\n    } else if (this._currentView === DateView.YEAR) {\n      return this.pickerIntl.prevYearLabel;\n    } else {\n      return null;\n    }\n  }\n\n  get nextButtonLabel(): string {\n    if (this._currentView === DateView.MONTH) {\n      return this.pickerIntl.nextMonthLabel;\n    } else if (this._currentView === DateView.YEAR) {\n      return this.pickerIntl.nextYearLabel;\n    } else {\n      return null;\n    }\n  }\n\n  get currentView(): DateViewType {\n    return this._currentView;\n  }\n\n  set currentView(view: DateViewType) {\n    this._currentView = view;\n    this.moveFocusOnNextTick = true;\n  }\n\n  get isInSingleMode(): boolean {\n    return this.selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n  }\n\n  get showControlArrows(): boolean {\n    return this._currentView !== DateView.MULTI_YEARS;\n  }\n\n  get isMonthView() {\n    return this._currentView === DateView.MONTH;\n  }\n\n  /**\n   * Bind class 'owl-dt-calendar' to host\n   */\n  get owlDTCalendarClass(): boolean {\n    return true;\n  }\n\n  constructor(\n    private elmRef: ElementRef,\n    private pickerIntl: OwlDateTimeIntl,\n    private ngZone: NgZone,\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    private dateTimeFormats: OwlDateTimeFormats\n  ) {\n    this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n      this.cdRef.markForCheck();\n    });\n  }\n\n  public get isTodayAllowed(): boolean {\n    if (!this.dateTimeAdapter) {\n      return false;\n    }\n    const now = this.dateTimeAdapter.now();\n    // Normalize 'today' to the start of the day, how minDate and maxDate are stored\n    const today = this.dateTimeAdapter.createDate(\n      this.dateTimeAdapter.getYear(now),\n      this.dateTimeAdapter.getMonth(now),\n      this.dateTimeAdapter.getDate(now)\n    );\n\n    if (this.minDate && this.dateTimeAdapter.compare(today, this.minDate) < 0) {\n      return false;\n    }\n\n    if (this.maxDate && this.dateTimeAdapter.compare(today, this.maxDate) > 0) {\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Date filter for the month and year view\n   */\n  @Input()\n  public dateFilter: (date: T) => boolean;\n\n  /**\n   * Set the first day of week\n   */\n  @Input()\n  public firstDayOfWeek: number;\n\n  /** The minimum selectable date. */\n  private _minDate: T | null;\n\n  /** The maximum selectable date. */\n  private _maxDate: T | null;\n\n  /** The current picker moment */\n  private _pickerMoment: T;\n\n  @Input()\n  public selectMode: SelectMode;\n\n  /** The currently selected moment. */\n  private _selected: T | null;\n\n  private _selecteds: Array<T> = [];\n\n  /**\n   * The view that the calendar should start in.\n   */\n  @Input()\n  public startView: DateViewType = DateView.MONTH;\n\n  /**\n   * Whether to should only the year and multi-year views.\n   */\n  @Input()\n  public yearOnly = false;\n\n  /**\n   * Whether to should only the multi-year view.\n   */\n  @Input()\n  public multiyearOnly = false;\n\n  /**\n   * Whether to hide dates in other months at the start or end of the current month.\n   */\n  @Input()\n  public hideOtherMonths: boolean;\n\n  /**\n   * Flag to show today button to jump to today's date. Defaults to `false`.\n   */\n  @Input()\n  public showTodayButton: boolean = false;\n\n  /**\n   * Emits when the currently picker moment changes.\n   */\n  public readonly pickerMomentChange = output<T>();\n\n  /**\n   * Emits when the selected date changes.\n   */\n  public readonly dateClicked = output<T>();\n\n  /**\n   * Emits when the currently selected date changes.\n   */\n  public readonly selectedChange = output<T>();\n\n  /**\n   * Emits when any date is selected.\n   */\n  public readonly userSelection = output<void>();\n\n  /**\n   * Emits the selected year. This doesn't imply a change on the selected date\n   */\n  public readonly yearSelected = output<T>();\n\n  /**\n   * Emits the selected month. This doesn't imply a change on the selected date\n   */\n  public readonly monthSelected = output<T>();\n\n  private _currentView: DateViewType;\n\n  private intlChangesSub = Subscription.EMPTY;\n\n  /**\n   * Used for scheduling that focus should be moved to the active cell on the next tick.\n   * We need to schedule it, rather than do it immediately, because we have to wait\n   * for Angular to re-evaluate the view children.\n   */\n  private moveFocusOnNextTick = false;\n\n  /**\n   * Date filter for the month and year view\n   */\n  public dateFilterForViews: (date: T | null) => boolean = (date: T) => {\n    return (\n      !!date &&\n      (!this.dateFilter || this.dateFilter(date)) &&\n      (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n      (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n    );\n  };\n\n  public ngAfterContentInit(): void {\n    this._currentView = this.startView;\n  }\n\n  public ngAfterViewChecked(): void {\n    if (this.moveFocusOnNextTick) {\n      this.moveFocusOnNextTick = false;\n      this.focusActiveCell();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.intlChangesSub.unsubscribe();\n  }\n\n  /**\n   * Toggle between month view and year view\n   */\n  public toggleViews(): void {\n    let nextView = null;\n    if (this._currentView === DateView.MONTH) {\n      nextView = DateView.MULTI_YEARS;\n    } else {\n      if (this.multiyearOnly) {\n        nextView = DateView.MULTI_YEARS;\n      } else if (this.yearOnly) {\n        nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n      } else {\n        nextView = DateView.MONTH;\n      }\n    }\n    this.currentView = nextView;\n  }\n\n  /**\n   * Handles user clicks on the previous button.\n   */\n  public previousClicked(): void {\n    this.pickerMoment =\n      this.isMonthView ?\n        this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n      : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n    this.pickerMomentChange.emit(this.pickerMoment);\n  }\n\n  /**\n   * Handles user clicks on the next button.\n   */\n  public nextClicked(): void {\n    this.pickerMoment =\n      this.isMonthView ?\n        this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n      : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n    this.pickerMomentChange.emit(this.pickerMoment);\n  }\n\n  public jumpToToday(): void {\n    const now = this.dateTimeAdapter.now();\n    let today = this.dateTimeAdapter.setHours(now, 0);\n    today = this.dateTimeAdapter.setMinutes(today, 0);\n    today = this.dateTimeAdapter.setSeconds(today, 0);\n\n    this.handlePickerMomentChange(today);\n    this.dateSelected(today);\n  }\n\n  public dateSelected(date: T): void {\n    if (!this.dateFilterForViews(date)) {\n      return;\n    }\n\n    this.dateClicked.emit(date);\n    this.selectedChange.emit(date);\n\n    /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n            this.isInRangeMode) {\n            this.selectedChange.emit(date);\n        }*/\n  }\n\n  /**\n   * Change the pickerMoment value and switch to a specific view\n   */\n  public goToDateInView(date: T, view: DateViewType): void {\n    this.handlePickerMomentChange(date);\n    if (\n      (!this.yearOnly && !this.multiyearOnly) ||\n      (this.multiyearOnly && view !== DateView.MONTH && view !== DateView.YEAR) ||\n      (this.yearOnly && view !== DateView.MONTH)\n    ) {\n      this.currentView = view;\n    }\n    return;\n  }\n\n  /**\n   * Change the pickerMoment value\n   */\n  public handlePickerMomentChange(date: T): void {\n    this.pickerMoment = this.dateTimeAdapter.clampDate(date, this.minDate, this.maxDate);\n    this.pickerMomentChange.emit(this.pickerMoment);\n    return;\n  }\n\n  public userSelected(): void {\n    this.userSelection.emit();\n  }\n\n  /**\n   * Whether the previous period button is enabled.\n   */\n  public prevButtonEnabled(): boolean {\n    return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n  }\n\n  /**\n   * Whether the next period button is enabled.\n   */\n  public nextButtonEnabled(): boolean {\n    return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n  }\n\n  /**\n   * Focus to the host element\n   */\n  public focusActiveCell(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n        });\n    });\n  }\n\n  public selectYearInMultiYearView(normalizedYear: T): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  public selectMonthInYearView(normalizedMonth: T): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Whether the two dates represent the same view in the current view mode (month or year).\n   */\n  private isSameView(date1: T, date2: T): boolean {\n    if (this._currentView === DateView.MONTH) {\n      return !!(\n        date1 &&\n        date2 &&\n        this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2) &&\n        this.dateTimeAdapter.getMonth(date1) === this.dateTimeAdapter.getMonth(date2)\n      );\n    } else if (this._currentView === DateView.YEAR) {\n      return !!(date1 && date2 && this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2));\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: unknown): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","<div class=\"owl-dt-calendar-control\">\n  <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n  <div class=\"owl-dt-calendar-control-content\">\n    <button\n      [attr.aria-label]=\"periodButtonLabel\"\n      (click)=\"toggleViews()\"\n      class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n      tabindex=\"0\"\n      type=\"button\">\n      <span\n        class=\"owl-dt-control-content owl-dt-control-button-content\"\n        tabindex=\"-1\">\n        {{ periodButtonText }}\n\n        <span\n          [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\"\n          class=\"owl-dt-control-button-arrow\">\n          <!-- <editor-fold desc=\"SVG Arrow\"> -->\n          <svg\n            xml:space=\"preserve\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            height=\"50%\"\n            style=\"enable-background: new 0 0 292.362 292.362\"\n            version=\"1.1\"\n            viewBox=\"0 0 292.362 292.362\"\n            width=\"50%\"\n            x=\"0px\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            y=\"0px\">\n            <g>\n              <path\n                d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n                                C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n                                s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\" />\n            </g>\n          </svg>\n          <!-- </editor-fold> -->\n        </span>\n      </span>\n    </button>\n    @if (currentView === DateView.MONTH && showTodayButton) {\n      <button\n        [disabled]=\"!isTodayAllowed\"\n        (click)=\"jumpToToday()\"\n        class=\"owl-dt-control owl-dt-control-button owl-dt-control-today-button\"\n        type=\"button\">\n        {{ todayButtonLabel }}\n      </button>\n    }\n  </div>\n  <button\n    [attr.aria-label]=\"prevButtonLabel\"\n    [disabled]=\"!prevButtonEnabled()\"\n    [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n    (click)=\"previousClicked()\"\n    class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n    tabindex=\"0\"\n    type=\"button\">\n    <span\n      class=\"owl-dt-control-content owl-dt-control-button-content\"\n      tabindex=\"-1\">\n      <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n      <svg\n        xml:space=\"preserve\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        height=\"100%\"\n        style=\"enable-background: new 0 0 250.738 250.738\"\n        version=\"1.1\"\n        viewBox=\"0 0 250.738 250.738\"\n        width=\"100%\"\n        x=\"0px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        y=\"0px\">\n        <path\n          d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546   c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681   l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n          style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n      </svg>\n      <!-- </editor-fold> -->\n    </span>\n  </button>\n  <button\n    [attr.aria-label]=\"nextButtonLabel\"\n    [disabled]=\"!nextButtonEnabled()\"\n    [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n    (click)=\"nextClicked()\"\n    class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n    tabindex=\"0\"\n    type=\"button\">\n    <span\n      class=\"owl-dt-control-content owl-dt-control-button-content\"\n      tabindex=\"-1\">\n      <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n      <svg\n        xml:space=\"preserve\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        style=\"enable-background: new 0 0 250.738 250.738\"\n        version=\"1.1\"\n        viewBox=\"0 0 250.738 250.738\"\n        x=\"0px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        y=\"0px\">\n        <path\n          d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n                    c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n                    c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n                    C197.237,120.447,195.534,115.448,191.75,111.689z\"\n          style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n      </svg>\n      <!-- </editor-fold> -->\n    </span>\n  </button>\n</div>\n<div\n  cdkMonitorSubtreeFocus\n  class=\"owl-dt-calendar-main\"\n  tabindex=\"-1\">\n  @switch (currentView) {\n    @case (DateView.MONTH) {\n      <owl-date-time-month-view\n        [dateFilter]=\"dateFilter\"\n        [firstDayOfWeek]=\"firstDayOfWeek\"\n        [hideOtherMonths]=\"hideOtherMonths\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [pickerMoment]=\"pickerMoment\"\n        [selectMode]=\"selectMode\"\n        [selected]=\"selected\"\n        [selecteds]=\"selecteds\"\n        (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n        (selectedChange)=\"dateSelected($event)\"\n        (userSelection)=\"userSelected()\"></owl-date-time-month-view>\n    }\n\n    @case (DateView.YEAR) {\n      <owl-date-time-year-view\n        [dateFilter]=\"dateFilter\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [pickerMoment]=\"pickerMoment\"\n        [selectMode]=\"selectMode\"\n        [selected]=\"selected\"\n        [selecteds]=\"selecteds\"\n        (change)=\"goToDateInView($event, DateView.MONTH)\"\n        (keyboardEnter)=\"focusActiveCell()\"\n        (monthSelected)=\"selectMonthInYearView($event)\"\n        (pickerMomentChange)=\"handlePickerMomentChange($event)\"></owl-date-time-year-view>\n    }\n\n    @case (DateView.MULTI_YEARS) {\n      <owl-date-time-multi-year-view\n        [dateFilter]=\"dateFilter\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [pickerMoment]=\"pickerMoment\"\n        [selectMode]=\"selectMode\"\n        [selected]=\"selected\"\n        [selecteds]=\"selecteds\"\n        (change)=\"goToDateInView($event, DateView.YEAR)\"\n        (keyboardEnter)=\"focusActiveCell()\"\n        (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n        (yearSelected)=\"selectYearInMultiYearView($event)\"></owl-date-time-multi-year-view>\n    }\n  }\n</div>\n","/**\n * date-time-picker.animations\n */\nimport {\n  animate,\n  animateChild,\n  AnimationTriggerMetadata,\n  group,\n  query,\n  state,\n  style,\n  transition,\n  trigger\n} from '@angular/animations';\n\nexport const owlDateTimePickerAnimations: {\n  readonly transformPicker: AnimationTriggerMetadata;\n  readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n  transformPicker: trigger('transformPicker', [\n    state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\n    state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\n    transition(\n      'void => enter',\n      group([\n        query('@fadeInPicker', animateChild(), { optional: true }),\n        animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n      ])\n    ),\n    transition('enter => void', animate('100ms linear', style({ opacity: 0 })))\n  ]),\n\n  fadeInPicker: trigger('fadeInPicker', [\n    state('enter', style({ opacity: 1 })),\n    state('void', style({ opacity: 0 })),\n    transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n  ])\n};\n","/**\n * timer-box.component\n */\n\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  output\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n  standalone: false,\n  exportAs: 'owlDateTimeTimerBox',\n  selector: 'owl-date-time-timer-box',\n  templateUrl: './timer-box.component.html',\n  styleUrls: ['./timer-box.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'\n  }\n})\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n  @Input() public showDivider = false;\n\n  @Input() public upBtnAriaLabel: string;\n\n  @Input() public upBtnDisabled: boolean;\n\n  @Input() public downBtnAriaLabel: string;\n\n  @Input() public downBtnDisabled: boolean;\n\n  /**\n   * Value would be displayed in the box\n   * If it is null, the box would display [value]\n   */\n  @Input() public boxValue: number;\n\n  @Input() public value: number;\n\n  @Input() public min: number;\n\n  @Input() public max: number;\n\n  @Input() public step = 1;\n\n  @Input() public inputLabel: string;\n\n  public readonly valueChange = output<number>();\n\n  public readonly inputChange = output<number>();\n\n  private inputStream = new Subject<string>();\n\n  private inputStreamSub = Subscription.EMPTY;\n\n  private hasFocus = false;\n\n  protected get displayValue(): string {\n    if (this.hasFocus) {\n      // Don't try to reformat the value that user is currently editing\n      return this.valueInput.nativeElement.value;\n    }\n\n    const value = this.boxValue || this.value;\n\n    if (value === null || isNaN(value)) {\n      return '';\n    }\n\n    return value < 10 ? `0${value.toString()}` : value.toString();\n  }\n\n  protected readonly owlDTTimerBoxClass = true;\n\n  @ViewChild('valueInput', { static: true })\n  private valueInput: ElementRef<HTMLInputElement>;\n  private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n  public ngOnInit(): void {\n    this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe((val: string) => {\n      if (val) {\n        const inputValue = coerceNumberProperty(val, 0);\n        this.updateValueViaInput(inputValue);\n      }\n    });\n    this.bindValueInputMouseWheel();\n  }\n\n  public ngOnDestroy(): void {\n    this.unbindValueInputMouseWheel();\n    this.inputStreamSub.unsubscribe();\n  }\n\n  public upBtnClicked(): void {\n    this.updateValue(this.value + this.step);\n  }\n\n  public downBtnClicked(): void {\n    this.updateValue(this.value - this.step);\n  }\n\n  public handleInputChange(val: string): void {\n    this.inputStream.next(val);\n  }\n\n  public focusIn(): void {\n    this.hasFocus = true;\n  }\n\n  public focusOut(value: string): void {\n    this.hasFocus = false;\n    if (value) {\n      const inputValue = coerceNumberProperty(value, 0);\n      this.updateValueViaInput(inputValue);\n    }\n  }\n\n  private updateValue(value: number): void {\n    this.valueChange.emit(value);\n  }\n\n  private updateValueViaInput(value: number): void {\n    if (value > this.max || value < this.min) {\n      return;\n    }\n    this.inputChange.emit(value);\n  }\n\n  private onValueInputMouseWheel(event: WheelEvent): void {\n    const delta = -event.deltaY || -event.detail;\n\n    if (delta > 0) {\n      if (!this.upBtnDisabled) {\n        this.upBtnClicked();\n      }\n    } else if (delta < 0) {\n      if (!this.downBtnDisabled) {\n        this.downBtnClicked();\n      }\n    }\n\n    if (event.preventDefault) {\n      event.preventDefault();\n    } else {\n      event.returnValue = false;\n    }\n  }\n\n  private bindValueInputMouseWheel(): void {\n    this.valueInput.nativeElement.addEventListener(\n      'onwheel' in document ? 'wheel' : 'mousewheel',\n      this.onValueInputMouseWheelBind\n    );\n  }\n\n  private unbindValueInputMouseWheel(): void {\n    this.valueInput.nativeElement.removeEventListener(\n      'onwheel' in document ? 'wheel' : 'mousewheel',\n      this.onValueInputMouseWheelBind\n    );\n  }\n}\n","@if (showDivider) {\n  <div\n    aria-hidden=\"true\"\n    class=\"owl-dt-timer-divider\"></div>\n}\n<button\n  [attr.aria-label]=\"upBtnAriaLabel\"\n  [disabled]=\"upBtnDisabled\"\n  (click)=\"upBtnClicked()\"\n  class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n  tabindex=\"-1\"\n  type=\"button\">\n  <span\n    class=\"owl-dt-control-button-content\"\n    tabindex=\"-1\">\n    <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n    <svg\n      xml:space=\"preserve\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      height=\"100%\"\n      style=\"enable-background: new 0 0 451.847 451.846\"\n      version=\"1.1\"\n      viewBox=\"0 0 451.847 451.846\"\n      width=\"100%\"\n      x=\"0px\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      y=\"0px\">\n      <path\n        d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n                        L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n                        c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\" />\n    </svg>\n    <!-- </editor-fold> -->\n  </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n  <input\n    #valueInput\n    [value]=\"displayValue\"\n    (focusin)=\"focusIn()\"\n    (focusout)=\"focusOut(valueInput.value)\"\n    (input)=\"handleInputChange(valueInput.value)\"\n    (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n    (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n    class=\"owl-dt-timer-input\"\n    maxlength=\"2\" />\n  <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n  [attr.aria-label]=\"downBtnAriaLabel\"\n  [disabled]=\"downBtnDisabled\"\n  (click)=\"downBtnClicked()\"\n  class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n  tabindex=\"-1\"\n  type=\"button\">\n  <span\n    class=\"owl-dt-control-button-content\"\n    tabindex=\"-1\">\n    <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n    <svg\n      xml:space=\"preserve\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      height=\"100%\"\n      style=\"enable-background: new 0 0 451.847 451.846\"\n      version=\"1.1\"\n      viewBox=\"0 0 451.847 451.846\"\n      width=\"100%\"\n      x=\"0px\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      y=\"0px\">\n      <path\n        d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n                        c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n                        c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\" />\n    </svg>\n    <!-- </editor-fold> -->\n  </span>\n</button>\n","/**\n * timer.component\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  NgZone,\n  Optional,\n  output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\n\n@Component({\n  standalone: false,\n  exportAs: 'owlDateTimeTimer',\n  selector: 'owl-date-time-timer',\n  templateUrl: './timer.component.html',\n  styleUrls: ['./timer.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.owl-dt-timer]': 'owlDTTimerClass',\n    '[attr.tabindex]': 'owlDTTimeTabIndex'\n  }\n})\nexport class OwlTimerComponent<T> {\n  /** The current picker moment */\n  private _pickerMoment: T;\n  @Input()\n  public get pickerMoment(): T {\n    return this._pickerMoment;\n  }\n  public set pickerMoment(value: T) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n  }\n\n  /** The minimum selectable date time. */\n  private _minDateTime: T | null;\n  @Input()\n  public get minDateTime(): T | null {\n    return this._minDateTime;\n  }\n  public set minDateTime(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._minDateTime = this.getValidDate(value);\n  }\n\n  /** The maximum selectable date time. */\n  private _maxDateTime: T | null;\n  @Input()\n  public get maxDateTime(): T | null {\n    return this._maxDateTime;\n  }\n  public set maxDateTime(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this._maxDateTime = this.getValidDate(value);\n  }\n\n  private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n  /**\n   * Whether to show the second's timer\n   */\n  @Input()\n  public showSecondsTimer: boolean;\n\n  /**\n   * Whether the timer is in hour12 format\n   */\n  @Input()\n  public hour12Timer: boolean;\n\n  /**\n   * Hours to change per step\n   */\n  @Input()\n  public stepHour = 1;\n\n  /**\n   * Minutes to change per step\n   */\n  @Input()\n  public stepMinute = 1;\n\n  /**\n   * Seconds to change per step\n   */\n  @Input()\n  public stepSecond = 1;\n\n  public readonly selectedChange = output<T>();\n\n  protected get hourValue(): number {\n    return this.dateTimeAdapter.getHours(this.pickerMoment);\n  }\n\n  /**\n   * The value would be displayed in hourBox.\n   * We need this because the value displayed in hourBox it not\n   * the same as the hourValue when the timer is in hour12Timer mode.\n   */\n  protected get hourBoxValue(): number {\n    let hours = this.hourValue;\n\n    if (!this.hour12Timer) {\n      return hours;\n    } else {\n      if (hours === 0) {\n        hours = 12;\n        this.isPM = false;\n      } else if (hours > 0 && hours < 12) {\n        this.isPM = false;\n      } else if (hours === 12) {\n        this.isPM = true;\n      } else if (hours > 12 && hours < 24) {\n        hours = hours - 12;\n        this.isPM = true;\n      }\n\n      return hours;\n    }\n  }\n\n  protected get minuteValue(): number {\n    return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n  }\n\n  protected get secondValue(): number {\n    return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n  }\n\n  protected get upHourButtonLabel(): string {\n    return this.pickerIntl.upHourLabel;\n  }\n\n  protected get downHourButtonLabel(): string {\n    return this.pickerIntl.downHourLabel;\n  }\n\n  protected get upMinuteButtonLabel(): string {\n    return this.pickerIntl.upMinuteLabel;\n  }\n\n  protected get downMinuteButtonLabel(): string {\n    return this.pickerIntl.downMinuteLabel;\n  }\n\n  protected get upSecondButtonLabel(): string {\n    return this.pickerIntl.upSecondLabel;\n  }\n\n  protected get downSecondButtonLabel(): string {\n    return this.pickerIntl.downSecondLabel;\n  }\n\n  protected get hour12ButtonLabel(): string {\n    return this.isPM ? this.pickerIntl.hour12PMLabel : this.pickerIntl.hour12AMLabel;\n  }\n\n  protected get owlDTTimerClass(): boolean {\n    return true;\n  }\n\n  protected get owlDTTimeTabIndex(): number {\n    return -1;\n  }\n\n  constructor(\n    private ngZone: NgZone,\n    private elmRef: ElementRef,\n    private pickerIntl: OwlDateTimeIntl,\n    private cdRef: ChangeDetectorRef,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n  ) {}\n\n  /**\n   * Focus to the host element\n   */\n  public focus(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.elmRef.nativeElement.focus();\n        });\n    });\n  }\n\n  /**\n   * Set the hour value via typing into timer box input\n   * We need this to handle the hour value when the timer is in hour12 mode\n   */\n  public setHourValueViaInput(hours: number): void {\n    if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n      hours = hours + 12;\n    } else if (this.hour12Timer && !this.isPM && hours === 12) {\n      hours = 0;\n    }\n\n    this.setHourValue(hours);\n  }\n\n  public setHourValue(hours: number): void {\n    const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n    this.selectedChange.emit(m);\n    this.cdRef.markForCheck();\n  }\n\n  public setMinuteValue(minutes: number): void {\n    const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n    this.selectedChange.emit(m);\n    this.cdRef.markForCheck();\n  }\n\n  public setSecondValue(seconds: number): void {\n    const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n    this.selectedChange.emit(m);\n    this.cdRef.markForCheck();\n  }\n\n  public setMeridiem(event: Event): void {\n    this.isPM = !this.isPM;\n\n    let hours = this.hourValue;\n    if (this.isPM) {\n      hours = hours + 12;\n    } else {\n      hours = hours - 12;\n    }\n\n    if (hours >= 0 && hours <= 23) {\n      this.setHourValue(hours);\n    }\n\n    this.cdRef.markForCheck();\n    event.preventDefault();\n  }\n\n  /**\n   * Check if the up hour button is enabled\n   */\n  public upHourEnabled(): boolean {\n    return !this.maxDateTime || this.compareHours(this.stepHour, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down hour button is enabled\n   */\n  public downHourEnabled(): boolean {\n    return !this.minDateTime || this.compareHours(-this.stepHour, this.minDateTime) > -1;\n  }\n\n  /**\n   * Check if the up minute button is enabled\n   */\n  public upMinuteEnabled(): boolean {\n    return !this.maxDateTime || this.compareMinutes(this.stepMinute, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down minute button is enabled\n   */\n  public downMinuteEnabled(): boolean {\n    return !this.minDateTime || this.compareMinutes(-this.stepMinute, this.minDateTime) > -1;\n  }\n\n  /**\n   * Check if the up second button is enabled\n   */\n  public upSecondEnabled(): boolean {\n    return !this.maxDateTime || this.compareSeconds(this.stepSecond, this.maxDateTime) < 1;\n  }\n\n  /**\n   * Check if the down second button is enabled\n   */\n  public downSecondEnabled(): boolean {\n    return !this.minDateTime || this.compareSeconds(-this.stepSecond, this.minDateTime) > -1;\n  }\n\n  /**\n   * PickerMoment's hour value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   */\n  private compareHours(amount: number, comparedDate: T): number {\n    const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * PickerMoment's minute value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   */\n  private compareMinutes(amount: number, comparedDate: T): number {\n    const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * PickerMoment's second value +/- certain amount and compare it to the give date\n   * 1 is after the comparedDate\n   * -1 is before the comparedDate\n   * 0 is equal the comparedDate\n   */\n  private compareSeconds(amount: number, comparedDate: T): number {\n    const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n    const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n    return this.dateTimeAdapter.compare(result, comparedDate);\n  }\n\n  /**\n   * Get a valid date object\n   */\n  private getValidDate(obj: unknown): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n}\n","<owl-date-time-timer-box\n  [boxValue]=\"hourBoxValue\"\n  [downBtnAriaLabel]=\"downHourButtonLabel\"\n  [downBtnDisabled]=\"!downHourEnabled()\"\n  [inputLabel]=\"'Hour'\"\n  [max]=\"23\"\n  [min]=\"0\"\n  [step]=\"stepHour\"\n  [upBtnAriaLabel]=\"upHourButtonLabel\"\n  [upBtnDisabled]=\"!upHourEnabled()\"\n  [value]=\"hourValue\"\n  (inputChange)=\"setHourValueViaInput($event)\"\n  (valueChange)=\"setHourValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n  [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n  [downBtnDisabled]=\"!downMinuteEnabled()\"\n  [inputLabel]=\"'Minute'\"\n  [max]=\"59\"\n  [min]=\"0\"\n  [showDivider]=\"true\"\n  [step]=\"stepMinute\"\n  [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n  [upBtnDisabled]=\"!upMinuteEnabled()\"\n  [value]=\"minuteValue\"\n  (inputChange)=\"setMinuteValue($event)\"\n  (valueChange)=\"setMinuteValue($event)\"></owl-date-time-timer-box>\n\n@if (showSecondsTimer) {\n  <owl-date-time-timer-box\n    [downBtnAriaLabel]=\"downSecondButtonLabel\"\n    [downBtnDisabled]=\"!downSecondEnabled()\"\n    [inputLabel]=\"'Second'\"\n    [max]=\"59\"\n    [min]=\"0\"\n    [showDivider]=\"true\"\n    [step]=\"stepSecond\"\n    [upBtnAriaLabel]=\"upSecondButtonLabel\"\n    [upBtnDisabled]=\"!upSecondEnabled()\"\n    [value]=\"secondValue\"\n    (inputChange)=\"setSecondValue($event)\"\n    (valueChange)=\"setSecondValue($event)\"></owl-date-time-timer-box>\n}\n\n@if (hour12Timer) {\n  <div class=\"owl-dt-timer-hour12\">\n    <button\n      (click)=\"setMeridiem($event)\"\n      class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n      tabindex=\"0\"\n      type=\"button\">\n      <span\n        class=\"owl-dt-control-button-content\"\n        tabindex=\"-1\">\n        {{ hour12ButtonLabel }}\n      </span>\n    </button>\n  </div>\n}\n","/**\n * date-time-picker-container.component\n */\n\nimport { AnimationEvent } from '@angular/animations';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Optional,\n  ViewChild\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { owlDateTimePickerAnimations } from './date-time-picker.animations';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { OwlTimerComponent } from './timer.component';\n\n@Component({\n  standalone: false,\n  exportAs: 'owlDateTimeContainer',\n  selector: 'owl-date-time-container',\n  templateUrl: './date-time-picker-container.component.html',\n  styleUrls: ['./date-time-picker-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  animations: [owlDateTimePickerAnimations.transformPicker, owlDateTimePickerAnimations.fadeInPicker],\n  host: {\n    '(@transformPicker.start)': 'handleContainerAnimationStart($event)',\n    '(@transformPicker.done)': 'handleContainerAnimationDone($event)',\n    '[class.owl-dt-container]': 'owlDTContainerClass',\n    '[class.owl-dt-popup-container]': 'owlDTPopupContainerClass',\n    '[class.owl-dt-dialog-container]': 'owlDTDialogContainerClass',\n    '[class.owl-dt-inline-container]': 'owlDTInlineContainerClass',\n    '[class.owl-dt-container-disabled]': 'owlDTContainerDisabledClass',\n    '[attr.id]': 'owlDTContainerId',\n    '[@transformPicker]': 'owlDTContainerAnimation'\n  }\n})\nexport class OwlDateTimeContainerComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\n  @ViewChild(OwlCalendarComponent)\n  calendar: OwlCalendarComponent<T>;\n  @ViewChild(OwlTimerComponent)\n  timer: OwlTimerComponent<T>;\n\n  public picker: OwlDateTime<T>;\n  public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n  // retain start and end time\n  private retainStartTime: T;\n  private retainEndTime: T;\n\n  /**\n   * Stream emits when try to hide picker\n   */\n  private hidePicker$ = new Subject<any>();\n\n  @Input()\n  public showTodayButton: boolean = false;\n\n  get hidePickerStream(): Observable<any> {\n    return this.hidePicker$.asObservable();\n  }\n\n  /**\n   * Stream emits when try to confirm the selected value\n   */\n  private confirmSelected$ = new Subject<any>();\n\n  get confirmSelectedStream(): Observable<any> {\n    return this.confirmSelected$.asObservable();\n  }\n\n  private beforePickerOpened$ = new Subject<any>();\n\n  get beforePickerOpenedStream(): Observable<any> {\n    return this.beforePickerOpened$.asObservable();\n  }\n\n  private pickerOpened$ = new Subject<any>();\n\n  get pickerOpenedStream(): Observable<any> {\n    return this.pickerOpened$.asObservable();\n  }\n\n  /**\n   * The current picker moment. This determines which time period is shown and which date is\n   * highlighted when using keyboard navigation.\n   */\n  private _clamPickerMoment: T;\n\n  get pickerMoment() {\n    return this._clamPickerMoment;\n  }\n\n  set pickerMoment(value: T) {\n    if (value) {\n      this._clamPickerMoment = this.dateTimeAdapter.clampDate(value, this.picker.minDateTime, this.picker.maxDateTime);\n    }\n    this.cdRef.markForCheck();\n  }\n\n  get pickerType(): PickerType {\n    return this.picker.pickerType;\n  }\n\n  get cancelLabel(): string {\n    return this.pickerIntl.cancelBtnLabel;\n  }\n\n  get setLabel(): string {\n    return this.pickerIntl.setBtnLabel;\n  }\n\n  /**\n   * The range 'from' label\n   */\n  get fromLabel(): string {\n    return this.pickerIntl.rangeFromLabel;\n  }\n\n  /**\n   * The range 'to' label\n   */\n  get toLabel(): string {\n    return this.pickerIntl.rangeToLabel;\n  }\n\n  /**\n   * The range 'from' formatted value\n   */\n  get fromFormattedValue(): string {\n    const value = this.picker.selecteds[0];\n    return value ? this.dateTimeAdapter.format(value, this.picker.formatString) : '';\n  }\n\n  /**\n   * The range 'to' formatted value\n   */\n  get toFormattedValue(): string {\n    const value = this.picker.selecteds[1];\n    return value ? this.dateTimeAdapter.format(value, this.picker.formatString) : '';\n  }\n\n  /**\n   * Cases in which the control buttons show in the picker\n   * 1) picker mode is 'dialog'\n   * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n   */\n  get showControlButtons(): boolean {\n    return (\n      this.picker.pickerMode === 'dialog' ||\n      (this.picker.pickerType !== 'calendar' && this.picker.pickerMode !== 'inline')\n    );\n  }\n\n  get containerElm(): HTMLElement {\n    return this.elmRef.nativeElement;\n  }\n\n  get owlDTContainerClass(): boolean {\n    return true;\n  }\n\n  get owlDTPopupContainerClass(): boolean {\n    return this.picker.pickerMode === 'popup';\n  }\n\n  get owlDTDialogContainerClass(): boolean {\n    return this.picker.pickerMode === 'dialog';\n  }\n\n  get owlDTInlineContainerClass(): boolean {\n    return this.picker.pickerMode === 'inline';\n  }\n\n  get owlDTContainerDisabledClass(): boolean {\n    return this.picker.disabled;\n  }\n\n  get owlDTContainerId(): string {\n    return this.picker.id;\n  }\n\n  get owlDTContainerAnimation(): any {\n    return this.picker.pickerMode === 'inline' ? '' : 'enter';\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private elmRef: ElementRef,\n    private pickerIntl: OwlDateTimeIntl,\n    @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n  ) {}\n\n  public ngOnInit() {\n    if (this.picker.selectMode === 'range') {\n      if (this.picker.selecteds[0]) {\n        this.retainStartTime = this.dateTimeAdapter.clone(this.picker.selecteds[0]);\n      }\n      if (this.picker.selecteds[1]) {\n        this.retainEndTime = this.dateTimeAdapter.clone(this.picker.selecteds[1]);\n      }\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    this.initPicker();\n  }\n\n  public ngAfterViewInit(): void {\n    this.focusPicker();\n  }\n\n  public handleContainerAnimationStart(event: AnimationEvent): void {\n    const toState = event.toState;\n    if (toState === 'enter') {\n      this.beforePickerOpened$.next(null);\n    }\n  }\n  public handleContainerAnimationDone(event: AnimationEvent): void {\n    const toState = event.toState;\n    if (toState === 'enter') {\n      this.pickerOpened$.next(null);\n    }\n  }\n\n  public dateSelected(date: T): void {\n    let result;\n\n    if (this.picker.isInSingleMode) {\n      result = this.dateSelectedInSingleMode(date);\n      if (result) {\n        this.pickerMoment = result;\n        this.picker.select(result);\n      } else {\n        // we close the picker when result is null and pickerType is calendar.\n        if (this.pickerType === 'calendar') {\n          this.hidePicker$.next(null);\n        }\n      }\n      return;\n    }\n\n    if (this.picker.isInRangeMode) {\n      result = this.dateSelectedInRangeMode(date);\n      if (result) {\n        this.pickerMoment = result[this.activeSelectedIndex];\n        this.picker.select(result);\n      }\n    }\n  }\n\n  public timeSelected(time: T): void {\n    this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n    if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n      return;\n    }\n\n    if (this.picker.isInSingleMode) {\n      this.picker.select(this.pickerMoment);\n      return;\n    }\n\n    if (this.picker.isInRangeMode) {\n      const selecteds = [...this.picker.selecteds];\n\n      // check if the 'from' is after 'to' or 'to'is before 'from'\n      // In this case, we set both the 'from' and 'to' the same value\n      if (\n        (this.activeSelectedIndex === 0 &&\n          selecteds[1] &&\n          this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) === 1) ||\n        (this.activeSelectedIndex === 1 &&\n          selecteds[0] &&\n          this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n      ) {\n        selecteds[0] = this.pickerMoment;\n        selecteds[1] = this.pickerMoment;\n      } else {\n        selecteds[this.activeSelectedIndex] = this.pickerMoment;\n      }\n\n      if (selecteds[0]) {\n        this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n      }\n      if (selecteds[1]) {\n        this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\n      }\n      this.picker.select(selecteds);\n    }\n  }\n\n  /**\n   * Handle click on cancel button\n   */\n  public onCancelClicked(event: any): void {\n    this.hidePicker$.next(null);\n    event.preventDefault();\n    return;\n  }\n\n  /**\n   * Handle click on set button\n   */\n  public onSetClicked(event: any): void {\n    if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n      this.hidePicker$.next(null);\n      event.preventDefault();\n      return;\n    }\n\n    this.confirmSelected$.next(event);\n    event.preventDefault();\n    return;\n  }\n\n  /**\n   * Handle click on inform radio group\n   */\n  public handleClickOnInfoGroup(event: any, index: number): void {\n    this.setActiveSelectedIndex(index);\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  /**\n   * Handle click on inform radio group\n   */\n  public handleKeydownOnInfoGroup(event: any, next: any, index: number): void {\n    switch (event.keyCode) {\n      case DOWN_ARROW:\n      case RIGHT_ARROW:\n      case UP_ARROW:\n      case LEFT_ARROW:\n        next.focus();\n        this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n        event.preventDefault();\n        event.stopPropagation();\n        break;\n\n      case SPACE:\n        this.setActiveSelectedIndex(index);\n        event.preventDefault();\n        event.stopPropagation();\n        break;\n\n      default:\n        return;\n    }\n  }\n\n  /**\n   * Set the value of activeSelectedIndex\n   */\n  private setActiveSelectedIndex(index: number): void {\n    if (this.picker.selectMode === 'range' && this.activeSelectedIndex !== index) {\n      this.activeSelectedIndex = index;\n\n      const selected = this.picker.selecteds[this.activeSelectedIndex];\n      if (this.picker.selecteds && selected) {\n        this.pickerMoment = this.dateTimeAdapter.clone(selected);\n      }\n    }\n    return;\n  }\n\n  private initPicker(): void {\n    this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n    this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n  }\n\n  /**\n   * Select calendar date in single mode,\n   * it returns null when date is not selected.\n   */\n  private dateSelectedInSingleMode(date: T): T | null {\n    if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n      return null;\n    }\n\n    return this.updateAndCheckCalendarDate(date);\n  }\n\n  /**\n   * Select dates in range Mode\n   */\n  private dateSelectedInRangeMode(date: T): Array<T> | null {\n    let from = this.picker.selecteds[0];\n    let to = this.picker.selecteds[1];\n\n    const result = this.updateAndCheckCalendarDate(date);\n\n    if (!result) {\n      return null;\n    }\n\n    // if the given calendar day is after or equal to 'from',\n    // set ths given date as 'to'\n    // otherwise, set it as 'from' and set 'to' to null\n    if (this.picker.selectMode === 'range') {\n      if (\n        this.picker.selecteds &&\n        this.picker.selecteds.length &&\n        !to &&\n        from &&\n        this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n      ) {\n        if (this.picker.endAt && !this.retainEndTime) {\n          to = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(result),\n            this.dateTimeAdapter.getMonth(result),\n            this.dateTimeAdapter.getDate(result),\n            this.dateTimeAdapter.getHours(this.picker.endAt),\n            this.dateTimeAdapter.getMinutes(this.picker.endAt),\n            this.dateTimeAdapter.getSeconds(this.picker.endAt)\n          );\n        } else if (this.retainEndTime) {\n          to = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(result),\n            this.dateTimeAdapter.getMonth(result),\n            this.dateTimeAdapter.getDate(result),\n            this.dateTimeAdapter.getHours(this.retainEndTime),\n            this.dateTimeAdapter.getMinutes(this.retainEndTime),\n            this.dateTimeAdapter.getSeconds(this.retainEndTime)\n          );\n        } else {\n          to = result;\n        }\n        this.activeSelectedIndex = 1;\n      } else {\n        if (this.picker.startAt && !this.retainStartTime) {\n          from = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(result),\n            this.dateTimeAdapter.getMonth(result),\n            this.dateTimeAdapter.getDate(result),\n            this.dateTimeAdapter.getHours(this.picker.startAt),\n            this.dateTimeAdapter.getMinutes(this.picker.startAt),\n            this.dateTimeAdapter.getSeconds(this.picker.startAt)\n          );\n        } else if (this.retainStartTime) {\n          from = this.dateTimeAdapter.createDate(\n            this.dateTimeAdapter.getYear(result),\n            this.dateTimeAdapter.getMonth(result),\n            this.dateTimeAdapter.getDate(result),\n            this.dateTimeAdapter.getHours(this.retainStartTime),\n            this.dateTimeAdapter.getMinutes(this.retainStartTime),\n            this.dateTimeAdapter.getSeconds(this.retainStartTime)\n          );\n        } else {\n          from = result;\n        }\n        to = null;\n        this.activeSelectedIndex = 0;\n      }\n    } else if (this.picker.selectMode === 'rangeFrom') {\n      from = result;\n\n      // if the from value is after the to value, set the to value as null\n      if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n        to = null;\n      }\n    } else if (this.picker.selectMode === 'rangeTo') {\n      to = result;\n\n      // if the from value is after the to value, set the from value as null\n      if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n        from = null;\n      }\n    }\n\n    return [from, to];\n  }\n\n  /**\n   * Update the given calendar date's time and check if it is valid\n   * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n   * we need to update the given calendar date's time before selecting it.\n   * if it is valid, return the updated dateTime\n   * if it is not valid, return null\n   */\n  private updateAndCheckCalendarDate(date: T): T {\n    let result;\n\n    // if the picker is 'both', update the calendar date's time value\n    if (this.picker.pickerType === 'both') {\n      result = this.dateTimeAdapter.createDate(\n        this.dateTimeAdapter.getYear(date),\n        this.dateTimeAdapter.getMonth(date),\n        this.dateTimeAdapter.getDate(date),\n        this.dateTimeAdapter.getHours(this.pickerMoment),\n        this.dateTimeAdapter.getMinutes(this.pickerMoment),\n        this.dateTimeAdapter.getSeconds(this.pickerMoment)\n      );\n      result = this.dateTimeAdapter.clampDate(result, this.picker.minDateTime, this.picker.maxDateTime);\n    } else {\n      result = this.dateTimeAdapter.clone(date);\n    }\n\n    // check the updated dateTime\n    return this.picker.dateTimeChecker(result) ? result : null;\n  }\n\n  /**\n   * Focus to the picker\n   */\n  private focusPicker(): void {\n    if (this.picker.pickerMode === 'inline') {\n      return;\n    }\n\n    if (this.calendar) {\n      this.calendar.focusActiveCell();\n    } else if (this.timer) {\n      this.timer.focus();\n    }\n  }\n}\n","<div\n  [@fadeInPicker]=\"picker.pickerMode === 'inline' ? '' : 'enter'\"\n  [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n  class=\"owl-dt-container-inner\">\n  @if (pickerType === 'both' || pickerType === 'calendar') {\n    <owl-date-time-calendar\n      [dateFilter]=\"picker.dateTimeFilter\"\n      [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n      [hideOtherMonths]=\"picker.hideOtherMonths\"\n      [maxDate]=\"picker.maxDateTime\"\n      [minDate]=\"picker.minDateTime\"\n      [multiyearOnly]=\"picker.multiyearOnly\"\n      [selectMode]=\"picker.selectMode\"\n      [selected]=\"picker.selected\"\n      [selecteds]=\"picker.selecteds\"\n      [showTodayButton]=\"showTodayButton\"\n      [startView]=\"picker.startView\"\n      [yearOnly]=\"picker.yearOnly\"\n      [(pickerMoment)]=\"pickerMoment\"\n      (dateClicked)=\"picker.selectDate($event)\"\n      (monthSelected)=\"picker.selectMonth($event)\"\n      (selectedChange)=\"dateSelected($event)\"\n      (yearSelected)=\"picker.selectYear($event)\"\n      class=\"owl-dt-container-row\"></owl-date-time-calendar>\n  }\n\n  @if (pickerType === 'both' || pickerType === 'timer') {\n    <owl-date-time-timer\n      [hour12Timer]=\"picker.hour12Timer\"\n      [maxDateTime]=\"picker.maxDateTime\"\n      [minDateTime]=\"picker.minDateTime\"\n      [pickerMoment]=\"pickerMoment\"\n      [showSecondsTimer]=\"picker.showSecondsTimer\"\n      [stepHour]=\"picker.stepHour\"\n      [stepMinute]=\"picker.stepMinute\"\n      [stepSecond]=\"picker.stepSecond\"\n      (selectedChange)=\"timeSelected($event)\"\n      class=\"owl-dt-container-row\"></owl-date-time-timer>\n  }\n\n  @if (picker.isInRangeMode) {\n    <div\n      class=\"owl-dt-container-info owl-dt-container-row\"\n      role=\"radiogroup\">\n      <div\n        #from\n        [attr.aria-checked]=\"activeSelectedIndex === 0\"\n        [class.owl-dt-container-info-active]=\"activeSelectedIndex === 0\"\n        [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n        (click)=\"handleClickOnInfoGroup($event, 0)\"\n        (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n        class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n        role=\"radio\">\n        <span\n          class=\"owl-dt-control-content owl-dt-container-range-content\"\n          tabindex=\"-1\">\n          <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n          <span class=\"owl-dt-container-info-value\">{{ fromFormattedValue }}</span>\n        </span>\n      </div>\n      <div\n        #to\n        [attr.aria-checked]=\"activeSelectedIndex === 1\"\n        [class.owl-dt-container-info-active]=\"activeSelectedIndex === 1\"\n        [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n        (click)=\"handleClickOnInfoGroup($event, 1)\"\n        (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n        class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n        role=\"radio\">\n        <span\n          class=\"owl-dt-control-content owl-dt-container-range-content\"\n          tabindex=\"-1\">\n          <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n          <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n        </span>\n      </div>\n    </div>\n  }\n\n  @if (showControlButtons) {\n    <div class=\"owl-dt-container-buttons owl-dt-container-row\">\n      <button\n        (click)=\"onCancelClicked($event)\"\n        class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n        tabindex=\"0\"\n        type=\"button\">\n        <span\n          class=\"owl-dt-control-content owl-dt-control-button-content\"\n          tabindex=\"-1\">\n          {{ cancelLabel }}\n        </span>\n      </button>\n      <button\n        (click)=\"onSetClicked($event)\"\n        class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n        tabindex=\"0\"\n        type=\"button\">\n        <span\n          class=\"owl-dt-control-content owl-dt-control-button-content\"\n          tabindex=\"-1\">\n          {{ setLabel }}\n        </span>\n      </button>\n    </div>\n  }\n</div>\n","/**\n * date-time-inline.component\n */\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  output,\n  ViewChild,\n  type Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTime, PickerMode, PickerType, SelectMode } from './date-time.class';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n  multi: true\n};\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time-inline',\n  templateUrl: './date-time-inline.component.html',\n  styleUrls: ['./date-time-inline.component.scss'],\n  host: {\n    '[class.owl-dt-inline]': 'owlDTInlineClass'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T> implements OnInit, ControlValueAccessor {\n  @ViewChild(OwlDateTimeContainerComponent, { static: true })\n  protected container: OwlDateTimeContainerComponent<T>;\n\n  /**\n   * Set the type of the dateTime picker\n   *      'both' -- show both calendar and timer\n   *      'calendar' -- show only calendar\n   *      'timer' -- show only timer\n   */\n  private _pickerType: PickerType = 'both';\n  @Input()\n  public get pickerType(): PickerType {\n    return this._pickerType;\n  }\n  public set pickerType(val: PickerType) {\n    if (val !== this._pickerType) {\n      this._pickerType = val;\n    }\n  }\n\n  private _disabled = false;\n  @Input()\n  public override get disabled(): boolean {\n    return !!this._disabled;\n  }\n  public override set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  public get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n  public set selectMode(mode: SelectMode) {\n    if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n      throw Error('OwlDateTime Error: invalid selectMode value!');\n    }\n\n    this._selectMode = mode;\n  }\n\n  /** The date to open the calendar to initially. */\n  private _startAt: T | null;\n  @Input()\n  public get startAt(): T | null {\n    if (this._startAt) {\n      return this._startAt;\n    }\n\n    if (this.selectMode === 'single') {\n      return this.value || null;\n    } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n      return this.values[0] || null;\n    } else if (this.selectMode === 'rangeTo') {\n      return this.values[1] || null;\n    } else {\n      return null;\n    }\n  }\n  public set startAt(date: T | null) {\n    this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  /** The date to open for range calendar. */\n  private _endAt: T | null;\n  @Input()\n  public get endAt(): T | null {\n    if (this._endAt) {\n      return this._endAt;\n    }\n\n    if (this.selectMode === 'single') {\n      return this.value || null;\n    } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n      return this.values[1] || null;\n    } else {\n      return null;\n    }\n  }\n  public set endAt(date: T | null) {\n    this._endAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  private _dateTimeFilter: (date: T | null) => boolean;\n  @Input('owlDateTimeFilter')\n  public get dateTimeFilter(): (date: T | null) => boolean {\n    return this._dateTimeFilter;\n  }\n  public set dateTimeFilter(filter: (date: T | null) => boolean) {\n    this._dateTimeFilter = filter;\n  }\n\n  /** The minimum valid date. */\n  private _min: T | null;\n\n  @Input('min')\n  public get minDateTime(): T | null {\n    return this._min || null;\n  }\n  public set minDateTime(value: T | null) {\n    this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.changeDetector.markForCheck();\n  }\n\n  /** The maximum valid date. */\n  private _max: T | null;\n\n  @Input('max')\n  public get maxDateTime(): T | null {\n    return this._max || null;\n  }\n  public set maxDateTime(value: T | null) {\n    this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.changeDetector.markForCheck();\n  }\n\n  private _value: T | null;\n  @Input()\n  public get value(): T | null {\n    return this._value;\n  }\n  public set value(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    value = this.getValidDate(value);\n    this._value = value;\n    this.selected = value;\n  }\n\n  private _values: Array<T> = [];\n  @Input()\n  public get values(): Array<T> {\n    return this._values;\n  }\n  public set values(values: Array<T>) {\n    if (values && values.length > 0) {\n      values = values.map((v) => {\n        v = this.dateTimeAdapter.deserialize(v);\n        v = this.getValidDate(v);\n        return v ? this.dateTimeAdapter.clone(v) : null;\n      });\n      this._values = [...values];\n      this.selecteds = [...values];\n    } else {\n      this._values = [];\n      this.selecteds = [];\n    }\n  }\n\n  /**\n   * Limit to the amount of days that can be selected at once.\n   */\n  @Input()\n  public rangeLimit: number | null = null;\n\n  /**\n   * Flag to show today button to jump to today's date. Defaults to `false`.\n   */\n  @Input({ transform: booleanAttribute })\n  public showTodayButton = false;\n\n  /**\n   * Variable to hold the old max date time value for when we override it with rangeLimit\n   */\n  private _initialMaxDateTime: T | null;\n\n  /**\n   * Emits selected year in multi-year view\n   * This doesn't imply a change on the selected date.\n   */\n  public readonly yearSelected = output<T>();\n\n  /**\n   * Emits selected month in year view\n   * This doesn't imply a change on the selected date.\n   */\n  public readonly monthSelected = output<T>();\n\n  /**\n   * Emits selected date\n   */\n  public readonly dateSelected = output<T>();\n\n  private _selected: T | null;\n  public get selected(): T | null {\n    return this._selected;\n  }\n  public set selected(value: T | null) {\n    this._selected = value;\n    this.changeDetector.markForCheck();\n  }\n\n  private _selecteds: Array<T> = [];\n  public get selecteds(): Array<T> {\n    return this._selecteds;\n  }\n\n  public set selecteds(values: Array<T>) {\n    this._selecteds = values;\n    this.changeDetector.markForCheck();\n  }\n\n  public get opened(): boolean {\n    return true;\n  }\n\n  public get pickerMode(): PickerMode {\n    return 'inline';\n  }\n\n  public get isInSingleMode(): boolean {\n    return this._selectMode === 'single';\n  }\n\n  public get isInRangeMode(): boolean {\n    return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n  }\n\n  public get owlDTInlineClass(): boolean {\n    return true;\n  }\n\n  private onModelChange: (v: T | Array<T>) => void = () => {\n    /* noop */\n  };\n\n  private onModelTouched: () => void = () => {\n    /* noop */\n  };\n\n  constructor(\n    protected changeDetector: ChangeDetectorRef,\n    @Optional() protected override dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional() @Inject(OWL_DATE_TIME_FORMATS) protected override dateTimeFormats: OwlDateTimeFormats\n  ) {\n    super(dateTimeAdapter, dateTimeFormats);\n  }\n\n  public ngOnInit(): void {\n    this.container.picker = this;\n  }\n\n  public writeValue(value: any): void {\n    if (this.isInSingleMode) {\n      this.value = value;\n      this.container.pickerMoment = value;\n    } else {\n      this.values = value;\n      this.container.pickerMoment = this._values[this.container.activeSelectedIndex];\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public select(date: Array<T> | T): void {\n    if (this.disabled) {\n      return;\n    }\n\n    if (Array.isArray(date)) {\n      this.values = [...date];\n    } else {\n      this.value = date;\n    }\n\n    // If range limit is set, we need to set the max date time to the range limit, so days after the max range are not selectable\n    if (this.rangeLimit && !this.values[1] && this.values[0]) {\n      const rangeLimitDate = this.dateTimeAdapter.addCalendarDays(this.values[0], this.rangeLimit - 1);\n      if (!this.maxDateTime || this.dateTimeAdapter.compare(this.maxDateTime, rangeLimitDate) > 0) {\n        this._initialMaxDateTime = this.maxDateTime;\n        this.maxDateTime = rangeLimitDate;\n      }\n    }\n\n    // Reset the max date time to the initial value after a full range is selected\n    if (this.rangeLimit && this.values[1]) {\n      this.maxDateTime = this._initialMaxDateTime;\n    }\n\n    this.onModelChange(date);\n    this.onModelTouched();\n  }\n\n  /**\n   * Emits the selected year in multi-year view\n   */\n  public selectYear(normalizedYear: T): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /**\n   * Emits selected month in year view\n   */\n  public selectMonth(normalizedMonth: T): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Emits the selected date\n   */\n  public selectDate(normalizedDate: T): void {\n    this.dateSelected.emit(normalizedDate);\n  }\n}\n","<owl-date-time-container [showTodayButton]=\"showTodayButton\"></owl-date-time-container>\n","/**\n * date-time-picker-input.directive\n */\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  output,\n  Renderer2\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { SelectMode } from './date-time.class';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => OwlDateTimeInputDirective),\n  multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => OwlDateTimeInputDirective),\n  multi: true\n};\n\n@Directive({\n  standalone: false,\n  selector: 'input[owlDateTime]',\n  exportAs: 'owlDateTimeInput',\n  host: {\n    '(keydown)': 'handleKeydownOnHost($event)',\n    '(blur)': 'handleBlurOnHost($event)',\n    '(input)': 'handleInputOnHost($event)',\n    '(change)': 'handleChangeOnHost($event)',\n    '[attr.aria-haspopup]': 'owlDateTimeInputAriaHaspopup',\n    '[attr.aria-owns]': 'owlDateTimeInputAriaOwns',\n    '[attr.min]': 'minIso8601',\n    '[attr.max]': 'maxIso8601',\n    '[disabled]': 'owlDateTimeInputDisabled'\n  },\n  providers: [OWL_DATETIME_VALUE_ACCESSOR, OWL_DATETIME_VALIDATORS]\n})\nexport class OwlDateTimeInputDirective<T>\n  implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor, Validator\n{\n  static ngAcceptInputType_disabled: boolean | '';\n\n  /**\n   * Required flag to be used for range of [null, null]\n   */\n  private _required: boolean;\n  @Input()\n  public get required() {\n    return this._required;\n  }\n\n  public set required(value: any) {\n    this._required = value === '' || value;\n    this.validatorOnChange();\n  }\n\n  /**\n   * The date time picker that this input is associated with.\n   */\n  @Input()\n  public set owlDateTime(value: OwlDateTimeComponent<T>) {\n    this.registerDateTimePicker(value);\n  }\n\n  /**\n   * A function to filter date time\n   */\n  @Input()\n  public set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n    this._dateTimeFilter = filter;\n    this.validatorOnChange();\n  }\n\n  private _dateTimeFilter: (date: T | null) => boolean;\n  public get dateTimeFilter(): (date: T | null) => boolean {\n    return this._dateTimeFilter;\n  }\n\n  /** Whether the date time picker's input is disabled. */\n  @Input()\n  private _disabled: boolean;\n  public get disabled(): boolean {\n    return !!this._disabled;\n  }\n\n  public set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this.elmRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this.disabledChange.emit(newValue);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    if (newValue && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n\n  /** The minimum valid date. */\n  private _min: T | null;\n  @Input()\n  public get min(): T | null {\n    return this._min;\n  }\n\n  public set min(value: T | null) {\n    this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.validatorOnChange();\n  }\n\n  /** The maximum valid date. */\n  private _max: T | null;\n  @Input()\n  public get max(): T | null {\n    return this._max;\n  }\n\n  public set max(value: T | null) {\n    this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n    this.validatorOnChange();\n  }\n\n  /**\n   * The picker's select mode\n   */\n  private _selectMode: SelectMode = 'single';\n  @Input()\n  public get selectMode(): SelectMode {\n    return this._selectMode;\n  }\n  public set selectMode(mode: SelectMode) {\n    if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n      throw Error('OwlDateTime Error: invalid selectMode value!');\n    }\n\n    this._selectMode = mode;\n  }\n\n  /**\n   * The character to separate the 'from' and 'to' in input value\n   */\n  @Input()\n  public rangeSeparator = '-';\n\n  private _value: T | null;\n  @Input()\n  public get value(): T | null {\n    return this._value;\n  }\n  public set value(value: T | null) {\n    value = this.dateTimeAdapter.deserialize(value);\n    this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n    value = this.getValidDate(value);\n    const oldDate = this._value;\n    this._value = value;\n\n    // set the input property 'value'\n    this.formatNativeInputValue();\n\n    // check if the input value changed\n    if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\n      this.valueChange.emit(value);\n    }\n  }\n\n  private _values: Array<T> = [];\n  @Input()\n  public get values(): Array<T> {\n    return this._values;\n  }\n  public set values(values: Array<T>) {\n    if (values && values.length > 0) {\n      this._values = values.map((v) => {\n        v = this.dateTimeAdapter.deserialize(v);\n        return this.getValidDate(v);\n      });\n      this.lastValueValid =\n        (!this._values[0] || this.dateTimeAdapter.isValid(this._values[0])) &&\n        (!this._values[1] || this.dateTimeAdapter.isValid(this._values[1]));\n    } else {\n      this._values = [];\n      this.lastValueValid = true;\n    }\n\n    // set the input property 'value'\n    this.formatNativeInputValue();\n\n    this.valueChange.emit(this._values);\n  }\n\n  /**\n   * Callback to invoke when `change` event is fired on this `<input>`\n   */\n  public readonly dateTimeChange = output<{\n    source: OwlDateTimeInputDirective<T>;\n    value: T | Array<T | null> | null;\n    input: HTMLInputElement;\n  }>();\n\n  /**\n   * Callback to invoke when an `input` event is fired on this `<input>`.\n   */\n  public readonly dateTimeInput = output<{\n    source: OwlDateTimeInputDirective<T>;\n    value: T | Array<T | null> | null;\n    input: HTMLInputElement;\n  }>();\n\n  get elementRef(): ElementRef {\n    return this.elmRef;\n  }\n\n  get isInSingleMode(): boolean {\n    return this._selectMode === 'single';\n  }\n\n  get isInRangeMode(): boolean {\n    return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n  }\n\n  /** The date-time-picker that this input is associated with. */\n  public dtPicker: OwlDateTimeComponent<T>;\n\n  private dtPickerSub: Subscription = Subscription.EMPTY;\n  private localeSub: Subscription = Subscription.EMPTY;\n\n  private lastValueValid = true;\n\n  private onModelChange: (v: T | Array<T>) => void = () => {\n    /* noop */\n  };\n  private onModelTouched: () => void = () => {\n    /* noop */\n  };\n  private validatorOnChange: () => void = () => {\n    /* noop */\n  };\n\n  /** The form control validator for whether the input parses. */\n  private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this.lastValueValid ? null : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n  };\n\n  /** The form control validator for the min date. */\n  private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    if (this.isInSingleMode) {\n      const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n      return !this.min || !controlValue || this.dateTimeAdapter.compare(this.min, controlValue) <= 0 ?\n          null\n        : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n    } else if (this.isInRangeMode && control.value) {\n      const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n      const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n      return (\n          !this.min ||\n            !controlValueFrom ||\n            !controlValueTo ||\n            this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n        ) ?\n          null\n        : {\n            owlDateTimeMin: {\n              min: this.min,\n              actual: [controlValueFrom, controlValueTo]\n            }\n          };\n    }\n    return null;\n  };\n\n  /** The form control validator for the max date. */\n  private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    if (this.isInSingleMode) {\n      const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n      return !this.max || !controlValue || this.dateTimeAdapter.compare(this.max, controlValue) >= 0 ?\n          null\n        : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n    } else if (this.isInRangeMode && control.value) {\n      const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n      const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n      return (\n          !this.max ||\n            !controlValueFrom ||\n            !controlValueTo ||\n            this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n        ) ?\n          null\n        : {\n            owlDateTimeMax: {\n              max: this.max,\n              actual: [controlValueFrom, controlValueTo]\n            }\n          };\n    }\n    return null;\n  };\n\n  /** The form control validator for the date filter. */\n  private filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const controlValue = this.getValidDate(this.dateTimeAdapter.deserialize(control.value));\n    return !this._dateTimeFilter || !controlValue || this._dateTimeFilter(controlValue) ?\n        null\n      : { owlDateTimeFilter: true };\n  };\n\n  /**\n   * The form control validator for the range.\n   * Check whether the 'before' value is before the 'to' value\n   */\n  private rangeValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    if (this.isInSingleMode || !control.value) {\n      return null;\n    }\n\n    const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n    const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n\n    return !controlValueFrom || !controlValueTo || this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0 ?\n        null\n      : { owlDateTimeRange: true };\n  };\n\n  /**\n   * The form control validator for the range when required.\n   * Check whether the 'before' and 'to' values are present\n   */\n  private requiredRangeValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    if (this.isInSingleMode || !control.value || !this.required) {\n      return null;\n    }\n\n    const controlValueFrom = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[0]));\n    const controlValueTo = this.getValidDate(this.dateTimeAdapter.deserialize(control.value[1]));\n\n    return !controlValueFrom || !controlValueTo ?\n        { owlRequiredDateTimeRange: [controlValueFrom, controlValueTo] }\n      : null;\n  };\n\n  /** The combined form control validator for this input. */\n  private validator: ValidatorFn | null = Validators.compose([\n    this.parseValidator,\n    this.minValidator,\n    this.maxValidator,\n    this.filterValidator,\n    this.rangeValidator,\n    this.requiredRangeValidator\n  ]);\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  public valueChange = new EventEmitter<Array<T> | T | null>();\n\n  /** Emits when the disabled state has changed */\n  public disabledChange = new EventEmitter<boolean>();\n\n  get owlDateTimeInputAriaHaspopup(): boolean {\n    return true;\n  }\n\n  get owlDateTimeInputAriaOwns(): string {\n    return (this.dtPicker.opened && this.dtPicker.id) || null;\n  }\n\n  get minIso8601(): string {\n    return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n  }\n\n  get maxIso8601(): string {\n    return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n  }\n\n  get owlDateTimeInputDisabled(): boolean {\n    return this.disabled;\n  }\n\n  constructor(\n    private elmRef: ElementRef,\n    private renderer: Renderer2,\n    @Optional()\n    private dateTimeAdapter: DateTimeAdapter<T>,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    private dateTimeFormats: OwlDateTimeFormats\n  ) {\n    if (!this.dateTimeAdapter) {\n      throw Error(\n        `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n          `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n          `custom implementation.`\n      );\n    }\n\n    if (!this.dateTimeFormats) {\n      throw Error(\n        `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n          `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n          `custom implementation.`\n      );\n    }\n\n    this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n      this.value = this.value;\n    });\n  }\n\n  public ngOnInit(): void {\n    if (!this.dtPicker) {\n      throw Error(`OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`);\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe((selecteds: Array<T> | T) => {\n      if (Array.isArray(selecteds)) {\n        this.values = selecteds;\n      } else {\n        this.value = selecteds;\n      }\n\n      this.onModelChange(selecteds);\n      this.onModelTouched();\n      this.dateTimeChange.emit({\n        source: this,\n        value: selecteds,\n        input: this.elmRef.nativeElement\n      });\n      this.dateTimeInput.emit({\n        source: this,\n        value: selecteds,\n        input: this.elmRef.nativeElement\n      });\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.dtPickerSub.unsubscribe();\n    this.localeSub.unsubscribe();\n    this.valueChange.complete();\n    this.disabledChange.complete();\n  }\n\n  public writeValue(value: any): void {\n    if (this.isInSingleMode) {\n      this.value = value;\n    } else {\n      this.values = value;\n    }\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onModelChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onModelTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public validate(c: AbstractControl): { [key: string]: any } {\n    return this.validator ? this.validator(c) : null;\n  }\n\n  public registerOnValidatorChange(fn: () => void): void {\n    this.validatorOnChange = fn;\n  }\n\n  /**\n   * Open the picker when user hold alt + DOWN_ARROW\n   */\n  public handleKeydownOnHost(event: KeyboardEvent): void {\n    if (event.altKey && event.keyCode === DOWN_ARROW) {\n      this.dtPicker.open();\n      event.preventDefault();\n    }\n  }\n\n  public handleBlurOnHost(event: Event): void {\n    this.onModelTouched();\n  }\n\n  public handleInputOnHost(event: any): void {\n    const value = event.target.value;\n    if (this._selectMode === 'single') {\n      this.changeInputInSingleMode(value);\n    } else if (this._selectMode === 'range') {\n      this.changeInputInRangeMode(value);\n    } else {\n      this.changeInputInRangeFromToMode(value);\n    }\n  }\n\n  public handleChangeOnHost(event: any): void {\n    let v;\n    if (this.isInSingleMode) {\n      v = this.value;\n    } else if (this.isInRangeMode) {\n      v = this.values;\n    }\n\n    this.dateTimeChange.emit({\n      source: this,\n      value: v,\n      input: this.elmRef.nativeElement\n    });\n  }\n\n  /**\n   * Set the native input property 'value'\n   */\n  public formatNativeInputValue(): void {\n    if (this.isInSingleMode) {\n      this.renderer.setProperty(\n        this.elmRef.nativeElement,\n        'value',\n        this._value ? this.dateTimeAdapter.format(this._value, this.dtPicker.formatString) : ''\n      );\n    } else if (this.isInRangeMode) {\n      if (this._values && this.values.length > 0) {\n        const from = this._values[0];\n        const to = this._values[1];\n\n        const fromFormatted = from ? this.dateTimeAdapter.format(from, this.dtPicker.formatString) : '';\n        const toFormatted = to ? this.dateTimeAdapter.format(to, this.dtPicker.formatString) : '';\n\n        if (!fromFormatted && !toFormatted) {\n          this.renderer.setProperty(this.elmRef.nativeElement, 'value', null);\n        } else {\n          if (this._selectMode === 'range') {\n            this.renderer.setProperty(\n              this.elmRef.nativeElement,\n              'value',\n              `${fromFormatted} ${this.rangeSeparator} ${toFormatted}`\n            );\n          } else if (this._selectMode === 'rangeFrom') {\n            this.renderer.setProperty(this.elmRef.nativeElement, 'value', fromFormatted);\n          } else if (this._selectMode === 'rangeTo') {\n            this.renderer.setProperty(this.elmRef.nativeElement, 'value', toFormatted);\n          }\n        }\n      } else {\n        this.renderer.setProperty(this.elmRef.nativeElement, 'value', '');\n      }\n    }\n\n    return;\n  }\n\n  /**\n   * Register the relationship between this input and its picker component\n   */\n  private registerDateTimePicker(picker: OwlDateTimeComponent<T>) {\n    if (picker) {\n      this.dtPicker = picker;\n      this.dtPicker.registerInput(this);\n    }\n  }\n\n  /**\n   * Convert a given obj to a valid date object\n   */\n  private getValidDate(obj: any): T | null {\n    return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n  }\n\n  /**\n   * Convert a time string to a date-time string\n   * When pickerType is 'timer', the value in the picker's input is a time string.\n   * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n   * Therefore we need this fn to convert a time string to a date-time string.\n   */\n  private convertTimeStringToDateTimeString(timeString: string, dateTime: T): string | null {\n    if (timeString) {\n      const v = dateTime || this.dateTimeAdapter.now();\n      const dateString = this.dateTimeAdapter.format(v, this.dateTimeFormats.datePickerInput);\n      return `${dateString} ${timeString}`;\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Handle input change in single mode\n   */\n  private changeInputInSingleMode(inputValue: string): void {\n    let value = inputValue;\n    if (this.dtPicker.pickerType === 'timer') {\n      value = this.convertTimeStringToDateTimeString(value, this.value);\n    }\n\n    let result = this.dateTimeAdapter.parse(value, this.dateTimeFormats.parseInput);\n    this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n    result = this.getValidDate(result);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    // result equals to null means there is input event, but the input value is invalid\n    if (!this.isSameValue(result, this._value) || result === null) {\n      this._value = result;\n      this.valueChange.emit(result);\n      this.onModelChange(result);\n      this.dateTimeInput.emit({\n        source: this,\n        value: result,\n        input: this.elmRef.nativeElement\n      });\n    }\n  }\n\n  /**\n   * Handle input change in rangeFrom or rangeTo mode\n   */\n  private changeInputInRangeFromToMode(inputValue: string): void {\n    const originalValue = this._selectMode === 'rangeFrom' ? this._values[0] : this._values[1];\n\n    if (this.dtPicker.pickerType === 'timer') {\n      inputValue = this.convertTimeStringToDateTimeString(inputValue, originalValue);\n    }\n\n    let result = this.dateTimeAdapter.parse(inputValue, this.dateTimeFormats.parseInput);\n    this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n    result = this.getValidDate(result);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    if (\n      (this._selectMode === 'rangeFrom' && this.isSameValue(result, this._values[0]) && result) ||\n      (this._selectMode === 'rangeTo' && this.isSameValue(result, this._values[1]) && result)\n    ) {\n      return;\n    }\n\n    this._values = this._selectMode === 'rangeFrom' ? [result, this._values[1]] : [this._values[0], result];\n    this.valueChange.emit(this._values);\n    this.onModelChange(this._values);\n    this.dateTimeInput.emit({\n      source: this,\n      value: this._values,\n      input: this.elmRef.nativeElement\n    });\n  }\n\n  /**\n   * Handle input change in range mode\n   */\n  private changeInputInRangeMode(inputValue: string): void {\n    const selecteds = inputValue.split(this.rangeSeparator);\n    let fromString = selecteds[0];\n    let toString = selecteds[1];\n\n    if (this.dtPicker.pickerType === 'timer') {\n      fromString = this.convertTimeStringToDateTimeString(fromString, this.values[0]);\n      toString = this.convertTimeStringToDateTimeString(toString, this.values[1]);\n    }\n\n    let from = this.dateTimeAdapter.parse(fromString, this.dateTimeFormats.parseInput);\n    let to = this.dateTimeAdapter.parse(toString, this.dateTimeFormats.parseInput);\n    this.lastValueValid = (!from || this.dateTimeAdapter.isValid(from)) && (!to || this.dateTimeAdapter.isValid(to));\n    from = this.getValidDate(from);\n    to = this.getValidDate(to);\n\n    // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n    if (\n      !this.isSameValue(from, this._values[0]) ||\n      !this.isSameValue(to, this._values[1]) ||\n      (from === null && to === null)\n    ) {\n      this._values = [from, to];\n      this.valueChange.emit(this._values);\n      this.onModelChange(this._values);\n      this.dateTimeInput.emit({\n        source: this,\n        value: this._values,\n        input: this.elmRef.nativeElement\n      });\n    }\n  }\n\n  /**\n   * Check if the two value is the same\n   */\n  private isSameValue(first: T | null, second: T | null): boolean {\n    if (first && second) {\n      return this.dateTimeAdapter.compare(first, second) === 0;\n    }\n\n    return first === second;\n  }\n}\n","/**\n * date-time-picker-trigger.directive\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges\n} from '@angular/core';\nimport { Subscription, merge, of } from 'rxjs';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\n\n@Directive({\n  standalone: false,\n  selector: '[owlDateTimeTrigger]',\n  host: {\n    '(click)': 'handleClickOnHost($event)',\n    '[class.owl-dt-trigger-disabled]': 'owlDTTriggerDisabledClass'\n  }\n})\nexport class OwlDateTimeTriggerDirective<T> implements OnChanges, AfterContentInit, OnDestroy {\n  @Input('owlDateTimeTrigger') public dtPicker: OwlDateTimeComponent<T>;\n\n  private _disabled: boolean;\n  @Input()\n  public get disabled(): boolean {\n    return this._disabled === undefined ? this.dtPicker.disabled : !!this._disabled;\n  }\n  public set disabled(value: boolean) {\n    this._disabled = value;\n  }\n\n  protected get owlDTTriggerDisabledClass(): boolean {\n    return this.disabled;\n  }\n\n  private stateChanges = Subscription.EMPTY;\n\n  constructor(protected changeDetector: ChangeDetectorRef) {}\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if ('datepicker' in changes) {\n      this.watchStateChanges();\n    }\n  }\n\n  public ngAfterContentInit(): void {\n    this.watchStateChanges();\n  }\n\n  public ngOnDestroy(): void {\n    this.stateChanges.unsubscribe();\n  }\n\n  public handleClickOnHost(event: Event): void {\n    if (this.dtPicker) {\n      this.dtPicker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private watchStateChanges(): void {\n    this.stateChanges.unsubscribe();\n\n    const inputDisabled = this.dtPicker?.dtInput?.disabledChange ?? of();\n    const pickerDisabled = this.dtPicker?.disabledChange ?? of();\n\n    this.stateChanges = merge([pickerDisabled, inputDisabled]).subscribe(() => {\n      this.changeDetector.markForCheck();\n    });\n  }\n}\n","/**\n * date-time-picker.component\n */\n\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  BlockScrollStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  ViewContainerRef,\n  output\n} from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTime, PickerMode, PickerType, SelectMode } from './date-time.class';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => BlockScrollStrategy {\n  const fn = (): BlockScrollStrategy => overlay.scrollStrategies.block();\n  return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n  provide: OWL_DTPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n  standalone: false,\n  selector: 'owl-date-time',\n  exportAs: 'owlDateTime',\n  templateUrl: './date-time-picker.component.html',\n  styleUrls: ['./date-time-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false\n})\nexport class OwlDateTimeComponent<T> extends OwlDateTime<T> implements OnDestroy {\n  /** Custom class for the picker backdrop. */\n  @Input()\n  public backdropClass: string | Array<string> = [];\n\n  /** Custom class for the picker overlay pane. */\n  @Input()\n  public panelClass: string | Array<string> = [];\n\n  /** The date to open the calendar to initially. */\n  private _startAt: T | null;\n  @Input()\n  public get startAt(): T | null {\n    // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n    // selected value is.\n    if (this._startAt) {\n      return this._startAt;\n    }\n\n    if (this._dtInput) {\n      if (this._dtInput.selectMode === 'single') {\n        return this._dtInput.value || null;\n      } else if (this._dtInput.selectMode === 'range' || this._dtInput.selectMode === 'rangeFrom') {\n        return this._dtInput.values[0] || null;\n      } else if (this._dtInput.selectMode === 'rangeTo') {\n        return this._dtInput.values[1] || null;\n      }\n    }\n\n    return null;\n  }\n\n  public set startAt(date: T | null) {\n    this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  /** The end date to set for range calendar. */\n  private _endAt: T | null;\n  @Input()\n  public get endAt(): T | null {\n    if (this._endAt) {\n      return this._endAt;\n    }\n\n    if (this._dtInput) {\n      if (this._dtInput.selectMode === 'single') {\n        return this._dtInput.value || null;\n      } else if (this._dtInput.selectMode === 'range' || this._dtInput.selectMode === 'rangeFrom') {\n        return this._dtInput.values[1] || null;\n      }\n    }\n    return null;\n  }\n\n  public set endAt(date: T | null) {\n    this._endAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n  }\n\n  /**\n   * Set the type of the dateTime picker\n   *      'both' -- show both calendar and timer\n   *      'calendar' -- show only calendar\n   *      'timer' -- show only timer\n   */\n  private _pickerType: PickerType = 'both';\n  @Input()\n  public get pickerType(): PickerType {\n    return this._pickerType;\n  }\n\n  public set pickerType(val: PickerType) {\n    if (val !== this._pickerType) {\n      this._pickerType = val;\n      if (this._dtInput) {\n        this._dtInput.formatNativeInputValue();\n      }\n    }\n  }\n\n  /**\n   * Whether the picker open as a dialog\n   */\n  private _pickerMode: PickerMode = 'popup';\n  @Input()\n  public get pickerMode(): PickerMode {\n    return this._pickerMode;\n  }\n\n  public set pickerMode(mode: PickerMode) {\n    if (mode === 'popup') {\n      this._pickerMode = mode;\n    } else {\n      this._pickerMode = 'dialog';\n    }\n  }\n\n  /** Whether the date time picker should be disabled. */\n  private _disabled: boolean;\n  @Input()\n  public override get disabled(): boolean {\n    return this._disabled === undefined && this._dtInput ? this._dtInput.disabled : !!this._disabled;\n  }\n\n  public override set disabled(value: boolean) {\n    value = coerceBooleanProperty(value);\n    if (value !== this._disabled) {\n      this._disabled = value;\n      this.disabledChange.next(value);\n    }\n  }\n\n  /** Whether the calendar is open. */\n  private _opened = false;\n  @Input()\n  public get opened(): boolean {\n    return this._opened;\n  }\n\n  public set opened(val: boolean) {\n    if (val) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  /**\n   * The scroll strategy when the picker is open\n   * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n   */\n  @Input()\n  public scrollStrategy: ScrollStrategy;\n\n  /**\n   * Callback when the picker is closed\n   */\n  public readonly afterPickerClosed = output<T | Array<T> | null>();\n\n  /**\n   * Callback before the picker is open\n   */\n  public readonly beforePickerOpen = output<void>();\n\n  /**\n   * Callback when the picker is open\n   */\n  public readonly afterPickerOpen = output<void>();\n\n  /**\n   * Emits selected year in multi-year view\n   * This doesn't imply a change on the selected date.\n   */\n  public readonly yearSelected = output<T>();\n\n  /**\n   * Emits selected month in year view\n   * This doesn't imply a change on the selected date.\n   */\n  public readonly monthSelected = output<T>();\n\n  /**\n   * Emits selected date\n   */\n  public readonly dateSelected = output<T>();\n\n  /**\n   * Emit when the selected value has been confirmed\n   */\n  public confirmSelectedChange = new EventEmitter<Array<T> | T>();\n\n  /**\n   * Emits when the date time picker is disabled.\n   */\n  public disabledChange = new EventEmitter<boolean>();\n\n  private pickerContainerPortal: ComponentPortal<OwlDateTimeContainerComponent<T>>;\n  private pickerContainer: OwlDateTimeContainerComponent<T>;\n  private popupRef: OverlayRef;\n  private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n  private dtInputSub = Subscription.EMPTY;\n  private hidePickerStreamSub = Subscription.EMPTY;\n  private confirmSelectedStreamSub = Subscription.EMPTY;\n  private pickerOpenedStreamSub = Subscription.EMPTY;\n  private pickerBeforeOpenedStreamSub = Subscription.EMPTY;\n\n  private _dtInput: OwlDateTimeInputDirective<T>;\n  get dtInput() {\n    return this._dtInput;\n  }\n\n  private _selected: T | null;\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(value: T | null) {\n    this._selected = value;\n    this.changeDetector.markForCheck();\n  }\n\n  private _selecteds: Array<T> = [];\n  get selecteds() {\n    return this._selecteds;\n  }\n\n  set selecteds(values: Array<T>) {\n    this._selecteds = values;\n    this.changeDetector.markForCheck();\n  }\n\n  /** The minimum selectable date. */\n  get minDateTime(): T | null {\n    return this._dtInput && this._dtInput.min;\n  }\n\n  /** The maximum selectable date. */\n  get maxDateTime(): T | null {\n    return this._dtInput && this._dtInput.max;\n  }\n\n  get dateTimeFilter(): (date: T | null) => boolean {\n    return this._dtInput && this._dtInput.dateTimeFilter;\n  }\n\n  get selectMode(): SelectMode {\n    return this._dtInput.selectMode;\n  }\n\n  get isInSingleMode(): boolean {\n    return this._dtInput.isInSingleMode;\n  }\n\n  get isInRangeMode(): boolean {\n    return this._dtInput.isInRangeMode;\n  }\n\n  private readonly defaultScrollStrategy: () => ScrollStrategy;\n\n  constructor(\n    public overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    private dialogService: OwlDialogService,\n    private ngZone: NgZone,\n    protected changeDetector: ChangeDetectorRef,\n    @Optional() protected override dateTimeAdapter: DateTimeAdapter<T>,\n    @Inject(OWL_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n    @Optional()\n    @Inject(OWL_DATE_TIME_FORMATS)\n    protected override dateTimeFormats: OwlDateTimeFormats,\n    @Optional()\n    @Inject(DOCUMENT)\n    private document: any\n  ) {\n    super(dateTimeAdapter, dateTimeFormats);\n    this.defaultScrollStrategy = defaultScrollStrategy;\n  }\n\n  public ngOnDestroy(): void {\n    this.close();\n    this.dtInputSub.unsubscribe();\n    this.disabledChange.complete();\n\n    if (this.popupRef) {\n      this.popupRef.dispose();\n    }\n  }\n\n  public registerInput(input: OwlDateTimeInputDirective<T>): void {\n    if (this._dtInput) {\n      throw Error('A Owl DateTimePicker can only be associated with a single input.');\n    }\n\n    this._dtInput = input;\n    this.dtInputSub = this._dtInput.valueChange.subscribe((value: Array<T> | T | null) => {\n      if (Array.isArray(value)) {\n        this.selecteds = value;\n      } else {\n        this.selected = value;\n      }\n    });\n  }\n\n  public open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n\n    if (!this._dtInput) {\n      throw Error('Attempted to open an DateTimePicker with no associated input.');\n    }\n\n    // reset the picker selected value\n    if (this.isInSingleMode) {\n      this.selected = this._dtInput.value;\n    } else if (this.isInRangeMode) {\n      this.selecteds = this._dtInput.values;\n    }\n\n    // when the picker is open , we make sure the picker's current selected time value\n    // is the same as the _startAt time value.\n    if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n      this.selected = this.dateTimeAdapter.createDate(\n        this.dateTimeAdapter.getYear(this.selected),\n        this.dateTimeAdapter.getMonth(this.selected),\n        this.dateTimeAdapter.getDate(this.selected),\n        this.dateTimeAdapter.getHours(this._startAt),\n        this.dateTimeAdapter.getMinutes(this._startAt),\n        this.dateTimeAdapter.getSeconds(this._startAt)\n      );\n    }\n\n    if (this.pickerMode === 'dialog') {\n      this.openAsDialog();\n    } else {\n      this.openAsPopup();\n    }\n\n    this.pickerContainer.picker = this;\n\n    // Listen to picker container's hidePickerStream\n    this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(() => {\n      this.close();\n    });\n\n    // Listen to picker container's confirmSelectedStream\n    this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(() => {\n      this.confirmSelect();\n    });\n  }\n\n  /**\n   * Selects the given date\n   */\n  public select(date: Array<T> | T): void {\n    if (Array.isArray(date)) {\n      this.selecteds = [...date];\n    } else {\n      this.selected = date;\n    }\n\n    /**\n     * Cases in which automatically confirm the select when date or dates are selected:\n     * 1) picker mode is NOT 'dialog'\n     * 2) picker type is 'calendar' and selectMode is 'single'.\n     * 3) picker type is 'calendar' and selectMode is 'range' and\n     *    the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n     * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n     * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n     */\n    if (\n      this.pickerMode !== 'dialog' &&\n      this.pickerType === 'calendar' &&\n      ((this.selectMode === 'single' && this.selected) ||\n        (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n        (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n        (this.selectMode === 'range' && this.selecteds[0] && this.selecteds[1]))\n    ) {\n      this.confirmSelect();\n    }\n  }\n\n  /**\n   * Emits the selected year in multi-year view\n   */\n  public selectYear(normalizedYear: T): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /**\n   * Emits selected month in year view\n   */\n  public selectMonth(normalizedMonth: T): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Emits the selected date\n   */\n  public selectDate(normalizedDate: T): void {\n    this.dateSelected.emit(normalizedDate);\n  }\n\n  /**\n   * Hide the picker\n   */\n  public close(): void {\n    if (!this._opened) {\n      return;\n    }\n\n    if (this.hidePickerStreamSub) {\n      this.hidePickerStreamSub.unsubscribe();\n      this.hidePickerStreamSub = null;\n    }\n\n    if (this.confirmSelectedStreamSub) {\n      this.confirmSelectedStreamSub.unsubscribe();\n      this.confirmSelectedStreamSub = null;\n    }\n\n    if (this.pickerBeforeOpenedStreamSub) {\n      this.pickerBeforeOpenedStreamSub.unsubscribe();\n      this.pickerBeforeOpenedStreamSub = null;\n    }\n\n    if (this.pickerOpenedStreamSub) {\n      this.pickerOpenedStreamSub.unsubscribe();\n      this.pickerOpenedStreamSub = null;\n    }\n\n    const selected = this.selected || this.selecteds;\n    this.afterPickerClosed.emit(selected);\n\n    if (this.popupRef?.hasAttached()) {\n      this.popupRef.detach();\n    }\n\n    if (this.pickerContainerPortal?.isAttached) {\n      this.pickerContainerPortal.detach();\n    }\n\n    if (this.dialogRef) {\n      this.dialogRef.close();\n      this.dialogRef = null;\n    }\n\n    this._opened = false;\n  }\n\n  /**\n   * Confirm the selected value\n   */\n  public confirmSelect(): void {\n    if (this.isInSingleMode) {\n      const selected = this.selected || this.startAt || this.dateTimeAdapter.now();\n      this.confirmSelectedChange.emit(selected);\n    } else if (this.isInRangeMode) {\n      this.confirmSelectedChange.emit(this.selecteds);\n    }\n\n    this.close();\n    return;\n  }\n\n  /**\n   * Open the picker as a dialog\n   */\n  private openAsDialog(): void {\n    this.dialogRef = this.dialogService.open(OwlDateTimeContainerComponent, {\n      autoFocus: false,\n      backdropClass: ['cdk-overlay-dark-backdrop', ...coerceArray(this.backdropClass)],\n      paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass)],\n      viewContainerRef: this.viewContainerRef,\n      scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy()\n    });\n    this.pickerContainer = this.dialogRef.componentInstance;\n\n    this.dialogRef.beforeOpen().subscribe(() => {\n      this.beforePickerOpen.emit();\n    });\n    this.dialogRef.afterOpen().subscribe(() => {\n      this.afterPickerOpen.emit();\n      this._opened = true;\n    });\n    this.dialogRef.afterClosed().subscribe(() => this.close());\n  }\n\n  /**\n   * Open the picker as popup\n   */\n  private openAsPopup(): void {\n    if (!this.pickerContainerPortal) {\n      this.pickerContainerPortal = new ComponentPortal<OwlDateTimeContainerComponent<T>>(\n        OwlDateTimeContainerComponent,\n        this.viewContainerRef\n      );\n    }\n\n    if (!this.popupRef) {\n      this.createPopup();\n    }\n\n    if (!this.popupRef.hasAttached()) {\n      const componentRef: ComponentRef<OwlDateTimeContainerComponent<T>> = this.popupRef.attach(\n        this.pickerContainerPortal\n      );\n      this.pickerContainer = componentRef.instance;\n\n      // Update the position once the calendar has rendered.\n      this.ngZone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this.popupRef.updatePosition();\n        });\n\n      this.pickerBeforeOpenedStreamSub = this.pickerContainer.beforePickerOpenedStream.pipe(take(1)).subscribe(() => {\n        this.beforePickerOpen.emit();\n      });\n\n      // emit open stream\n      this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream.pipe(take(1)).subscribe(() => {\n        this.afterPickerOpen.emit();\n        this._opened = true;\n      });\n    }\n  }\n\n  private createPopup(): void {\n    const overlayConfig = new OverlayConfig({\n      positionStrategy: this.createPopupPositionStrategy(),\n      hasBackdrop: true,\n      backdropClass: ['cdk-overlay-transparent-backdrop', ...coerceArray(this.backdropClass)],\n      scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n      panelClass: ['owl-dt-popup', ...coerceArray(this.panelClass)]\n    });\n\n    this.popupRef = this.overlay.create(overlayConfig);\n\n    merge(\n      this.popupRef.backdropClick(),\n      this.popupRef.detachments(),\n      this.popupRef\n        .keydownEvents()\n        .pipe(\n          filter((event) => event.keyCode === ESCAPE || (this._dtInput && event.altKey && event.keyCode === UP_ARROW))\n        )\n    ).subscribe(() => this.close());\n  }\n\n  /**\n   * Create the popup PositionStrategy.\n   */\n  private createPopupPositionStrategy(): PositionStrategy {\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(this._dtInput.elementRef)\n      .withTransformOriginOn('.owl-dt-container')\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top'\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom'\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top'\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom'\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: -176\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: -352\n        }\n      ]);\n  }\n}\n","","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  standalone: false,\n  name: 'numberFixedLen'\n})\nexport class NumberFixedLenPipe implements PipeTransform {\n  public transform(num: number, len: number): string | number {\n    const number = Math.floor(num);\n    const length = Math.floor(len);\n\n    if (num === null || isNaN(number) || isNaN(length)) {\n      return num;\n    }\n\n    let numString = number.toString();\n\n    while (numString.length < length) {\n      numString = `0${numString}`;\n    }\n\n    return numString;\n  }\n}\n","/**\n * date-time.module\n */\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport { OwlDialogModule } from '../dialog/dialog.module';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { optionsProviders } from './options-provider';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\n\n@NgModule({\n  imports: [OverlayModule, OwlDialogModule, A11yModule],\n  exports: [\n    OwlCalendarComponent,\n    OwlTimerComponent,\n    OwlDateTimeTriggerDirective,\n    OwlDateTimeInputDirective,\n    OwlDateTimeComponent,\n    OwlDateTimeInlineComponent,\n    OwlMultiYearViewComponent,\n    OwlYearViewComponent,\n    OwlMonthViewComponent\n  ],\n  declarations: [\n    OwlDateTimeTriggerDirective,\n    OwlDateTimeInputDirective,\n    OwlDateTimeComponent,\n    OwlDateTimeContainerComponent,\n    OwlMultiYearViewComponent,\n    OwlYearViewComponent,\n    OwlMonthViewComponent,\n    OwlTimerComponent,\n    OwlTimerBoxComponent,\n    OwlCalendarComponent,\n    OwlCalendarBodyComponent,\n    NumberFixedLenPipe,\n    OwlDateTimeInlineComponent\n  ],\n  providers: [OwlDateTimeIntl, OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, ...optionsProviders]\n})\nexport class OwlDateTimeModule {}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { range } from '../../utils/array.utils';\nimport {\n  DEFAULT_DATE_NAMES,\n  DEFAULT_DAY_OF_WEEK_NAMES,\n  DEFAULT_MONTH_NAMES,\n  SUPPORTS_INTL_API\n} from '../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from './date-time-adapter.class';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?)?$/;\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   */\n  public useUtcForDisplay: boolean;\n\n  constructor(\n    @Optional()\n    @Inject(OWL_DATE_TIME_LOCALE)\n    private owlDateTimeLocale: string,\n    platform: Platform\n  ) {\n    super();\n    super.setLocale(owlDateTimeLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  public getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  public getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  public getDay(date: Date): number {\n    return date.getDay();\n  }\n\n  public getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  public getHours(date: Date): number {\n    return date.getHours();\n  }\n\n  public getMinutes(date: Date): number {\n    return date.getMinutes();\n  }\n\n  public getSeconds(date: Date): number {\n    return date.getSeconds();\n  }\n\n  public getTime(date: Date): number {\n    return date.getTime();\n  }\n\n  public getNumDaysInMonth(date: Date): number {\n    return getNumDaysInMonth(date);\n  }\n\n  public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = this.createDate(\n        this.getYear(dateLeft),\n        this.getMonth(dateLeft),\n        this.getDate(dateLeft)\n      );\n      const dateRightStartOfDay = this.createDate(\n        this.getYear(dateRight),\n        this.getMonth(dateRight),\n        this.getDate(dateRight)\n      );\n\n      const timeStampLeft =\n        this.getTime(dateLeftStartOfDay) - dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n      const timeStampRight =\n        this.getTime(dateRightStartOfDay) - dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n      return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n    } else {\n      return null;\n    }\n  }\n\n  public getYearName(date: Date): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n        year: 'numeric',\n        timeZone: 'utc'\n      });\n      return this.stripDirectionalityCharacters(this._format(dtf, date));\n    }\n    return String(this.getYear(date));\n  }\n\n  public getMonthNames(style: 'long' | 'short' | 'narrow'): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n        month: style,\n        timeZone: 'utc'\n      });\n      return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n        weekday: style,\n        timeZone: 'utc'\n      });\n      return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  public getDateNames(): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n        day: 'numeric',\n        timeZone: 'utc'\n      });\n      return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  public toIso8601(date: Date): string {\n    return date.toISOString();\n  }\n\n  public isEqual(dateLeft: Date, dateRight: Date): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      return dateLeft.getTime() === dateRight.getTime();\n    } else {\n      return false;\n    }\n  }\n\n  public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = this.clone(dateLeft);\n      const dateRightStartOfDay = this.clone(dateRight);\n      dateLeftStartOfDay.setHours(0, 0, 0, 0);\n      dateRightStartOfDay.setHours(0, 0, 0, 0);\n      return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n    } else {\n      return false;\n    }\n  }\n\n  public isValid(date: Date): boolean {\n    return date && !isNaN(date.getTime());\n  }\n\n  public invalid(): Date {\n    return new Date(NaN);\n  }\n\n  public isDateInstance(obj: unknown): obj is Date {\n    return obj instanceof Date;\n  }\n\n  public addCalendarYears(date: Date, amount: number): Date {\n    return this.addCalendarMonths(date, amount * 12);\n  }\n\n  public addCalendarMonths(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    amount = Number(amount);\n\n    const desiredMonth = result.getMonth() + amount;\n    const dateWithDesiredMonth = new Date(0);\n    dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n    dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n    const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n    // Set the last day of the new month\n    // if the original date was the last day of the longer month\n    result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n    return result;\n  }\n\n  public addCalendarDays(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    amount = Number(amount);\n    result.setDate(result.getDate() + amount);\n    return result;\n  }\n\n  public setHours(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setHours(amount);\n    return result;\n  }\n\n  public setMinutes(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setMinutes(amount);\n    return result;\n  }\n\n  public setSeconds(date: Date, amount: number): Date {\n    const result = this.clone(date);\n    result.setSeconds(amount);\n    return result;\n  }\n\n  public createDate(\n    year: number,\n    month: number,\n    date: number,\n    hours: number = 0,\n    minutes: number = 0,\n    seconds: number = 0\n  ): Date {\n    return createDate(year, month, date, hours, minutes, seconds);\n  }\n\n  public clone(date: Date): Date {\n    return this.createDate(\n      this.getYear(date),\n      this.getMonth(date),\n      this.getDate(date),\n      this.getHours(date),\n      this.getMinutes(date),\n      this.getSeconds(date)\n    );\n  }\n\n  public now(): Date {\n    return new Date();\n  }\n\n  public format(date: Date, displayFormat: Intl.DateTimeFormatOptions): string {\n    if (!this.isValid(date)) {\n      throw Error('JSNativeDate: Cannot format invalid date.');\n    }\n\n    if (SUPPORTS_INTL_API) {\n      if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n        date = this.clone(date);\n        date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n      }\n\n      displayFormat = { ...displayFormat, timeZone: 'utc' };\n      const dtf = new Intl.DateTimeFormat(this.getLocale(), displayFormat);\n      return this.stripDirectionalityCharacters(this._format(dtf, date));\n    }\n\n    return this.stripDirectionalityCharacters(date.toDateString());\n  }\n\n  public parse(value: any, parseFormat: any): Date | null {\n    // There is no way using the native JS Date to set the parse format or locale\n    if (typeof value === 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  public override deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        const date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   */\n  private stripDirectionalityCharacters(str: string): string {\n    return str.replace(/[\\u200e\\u200f]/g, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date): string {\n    const d = new Date(\n      Date.UTC(\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds()\n      )\n    );\n    return dtf.format(d);\n  }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n  parseInput: null,\n  fullPickerInput: {\n    year: 'numeric',\n    month: 'numeric',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric'\n  },\n  datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n  timePickerInput: { hour: 'numeric', minute: 'numeric' },\n  monthYearLabel: { year: 'numeric', month: 'short' },\n  dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n  monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * native-date-time.module\n */\n\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n  imports: [PlatformModule],\n  providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n  imports: [NativeDateTimeModule],\n  providers: [\n    {\n      provide: OWL_DATE_TIME_FORMATS,\n      useValue: OWL_NATIVE_DATE_TIME_FORMATS\n    }\n  ]\n})\nexport class OwlNativeDateTimeModule {}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { range } from '../../../utils/array.utils';\nimport {\n  DEFAULT_DATE_NAMES,\n  DEFAULT_DAY_OF_WEEK_NAMES,\n  DEFAULT_MONTH_NAMES,\n  SUPPORTS_INTL_API\n} from '../../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '../date-time-adapter.class';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n  constructor(\n    @Optional()\n    @Inject(OWL_DATE_TIME_LOCALE)\n    private owlDateTimeLocale: string,\n    platform: Platform\n  ) {\n    super();\n    super.setLocale(owlDateTimeLocale);\n\n    // IE does its own time zone correction, so we disable this on IE.\n    this.useUtcForDisplay = !platform.TRIDENT;\n    this._clampDate = platform.TRIDENT || platform.EDGE;\n  }\n\n  /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n  private readonly _clampDate: boolean;\n\n  /**\n   * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n   * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n   * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n   * will produce `'8/13/1800'`.\n   */\n  public useUtcForDisplay: boolean;\n\n  /**\n   * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n   * other browsers do not. We remove them to make output consistent and because they interfere with\n   * date parsing.\n   */\n  private static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n  private static stripDirectionalityCharacters(str: string): string {\n    return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   */\n  private static _format(dtf: Intl.DateTimeFormat, date: Date): string {\n    const d = new Date(\n      Date.UTC(\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        date.getHours(),\n        date.getMinutes(),\n        date.getSeconds(),\n        date.getMilliseconds()\n      )\n    );\n    return dtf.format(d);\n  }\n\n  public addCalendarDays(date: number, amount: number): number {\n    const result = new Date(date);\n    amount = Number(amount);\n    result.setDate(result.getDate() + amount);\n    return result.getTime();\n  }\n\n  public addCalendarMonths(date: number, amount: number): number {\n    const result = new Date(date);\n    amount = Number(amount);\n\n    const desiredMonth = result.getMonth() + amount;\n    const dateWithDesiredMonth = new Date(0);\n    dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n    dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n    const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth.getTime());\n    // Set the last day of the new month\n    // if the original date was the last day of the longer month\n    result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n    return result.getTime();\n  }\n\n  public addCalendarYears(date: number, amount: number): number {\n    return this.addCalendarMonths(date, amount * 12);\n  }\n\n  public clone(date: number): number {\n    return date;\n  }\n\n  public createDate(\n    year: number,\n    month: number,\n    date: number,\n    hours: number = 0,\n    minutes: number = 0,\n    seconds: number = 0\n  ): number {\n    return createDate(year, month, date, hours, minutes, seconds).getTime();\n  }\n\n  public differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = this.createDate(\n        this.getYear(dateLeft),\n        this.getMonth(dateLeft),\n        this.getDate(dateLeft)\n      );\n      const dateRightStartOfDay = this.createDate(\n        this.getYear(dateRight),\n        this.getMonth(dateRight),\n        this.getDate(dateRight)\n      );\n\n      const timeStampLeft =\n        this.getTime(dateLeftStartOfDay) - new Date(dateLeftStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n      const timeStampRight =\n        this.getTime(dateRightStartOfDay) -\n        new Date(dateRightStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n      return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n    } else {\n      return null;\n    }\n  }\n\n  public format(date: number, displayFormat: Intl.DateTimeFormatOptions): string {\n    if (!this.isValid(date)) {\n      throw Error('JSNativeDate: Cannot format invalid date.');\n    }\n\n    const jsDate = new Date(date);\n\n    if (SUPPORTS_INTL_API) {\n      if (this._clampDate && (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n        jsDate.setFullYear(Math.max(1, Math.min(9999, jsDate.getFullYear())));\n      }\n\n      displayFormat = { ...displayFormat, timeZone: 'utc' };\n      const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n      return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n        UnixTimestampDateTimeAdapter._format(dtf, jsDate)\n      );\n    }\n\n    return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n  }\n\n  public getDate(date: number): number {\n    return new Date(date).getDate();\n  }\n\n  public getDateNames(): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        day: 'numeric',\n        timeZone: 'utc'\n      });\n      return range(31, (i) =>\n        UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n          UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n        )\n      );\n    }\n    return DEFAULT_DATE_NAMES;\n  }\n\n  public getDay(date: number): number {\n    return new Date(date).getDay();\n  }\n\n  public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        weekday: style,\n        timeZone: 'utc'\n      });\n      return range(7, (i) =>\n        UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n          UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n        )\n      );\n    }\n\n    return DEFAULT_DAY_OF_WEEK_NAMES[style];\n  }\n\n  public getHours(date: number): number {\n    return new Date(date).getHours();\n  }\n\n  public getMinutes(date: number): number {\n    return new Date(date).getMinutes();\n  }\n\n  public getMonth(date: number): number {\n    return new Date(date).getMonth();\n  }\n\n  public getMonthNames(style: 'long' | 'short' | 'narrow'): Array<string> {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        month: style,\n        timeZone: 'utc'\n      });\n      return range(12, (i) =>\n        UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n          UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n        )\n      );\n    }\n    return DEFAULT_MONTH_NAMES[style];\n  }\n\n  public getNumDaysInMonth(date: number): number {\n    return getNumDaysInMonth(new Date(date));\n  }\n\n  public getSeconds(date: number): number {\n    return new Date(date).getSeconds();\n  }\n\n  public getTime(date: number): number {\n    return date;\n  }\n\n  public getYear(date: number): number {\n    return new Date(date).getFullYear();\n  }\n\n  public getYearName(date: number): string {\n    if (SUPPORTS_INTL_API) {\n      const dtf = new Intl.DateTimeFormat(this.locale, {\n        year: 'numeric',\n        timeZone: 'utc'\n      });\n      return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n        UnixTimestampDateTimeAdapter._format(dtf, new Date(date))\n      );\n    }\n    return String(this.getYear(date));\n  }\n\n  public invalid(): number {\n    return NaN;\n  }\n\n  public isDateInstance(obj: unknown): obj is number {\n    return typeof obj === 'number';\n  }\n\n  public isEqual(dateLeft: number, dateRight: number): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      return dateLeft === dateRight;\n    } else {\n      return false;\n    }\n  }\n\n  public isSameDay(dateLeft: number, dateRight: number): boolean {\n    if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n      const dateLeftStartOfDay = new Date(dateLeft);\n      const dateRightStartOfDay = new Date(dateRight);\n      dateLeftStartOfDay.setHours(0, 0, 0, 0);\n      dateRightStartOfDay.setHours(0, 0, 0, 0);\n      return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n    } else {\n      return false;\n    }\n  }\n\n  public isValid(date: number): boolean {\n    return (date || date === 0) && !isNaN(date);\n  }\n\n  public now(): number {\n    return new Date().getTime();\n  }\n\n  public parse(value: any, parseFormat: any): number | null {\n    // There is no way using the native JS Date to set the parse format or locale\n    if (typeof value === 'number') {\n      return value;\n    }\n    return value ? new Date(Date.parse(value)).getTime() : null;\n  }\n\n  public setHours(date: number, amount: number): number {\n    const result = new Date(date);\n    result.setHours(amount);\n    return result.getTime();\n  }\n\n  public setMinutes(date: number, amount: number): number {\n    const result = new Date(date);\n    result.setMinutes(amount);\n    return result.getTime();\n  }\n\n  public setSeconds(date: number, amount: number): number {\n    const result = new Date(date);\n    result.setSeconds(amount);\n    return result.getTime();\n  }\n\n  public toIso8601(date: number): string {\n    return new Date(date).toISOString();\n  }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n  parseInput: null,\n  fullPickerInput: {\n    year: 'numeric',\n    month: 'numeric',\n    day: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric'\n  },\n  datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n  timePickerInput: { hour: 'numeric', minute: 'numeric' },\n  monthYearLabel: { year: 'numeric', month: 'short' },\n  dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n  monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","take","i2.OwlCalendarBodyComponent","i1.OwlDateTimeIntl","i2.DateTimeAdapter","i3.OwlCalendarBodyComponent","i3","i4.OwlMultiYearViewComponent","i5.OwlYearViewComponent","i6.OwlMonthViewComponent","i3.OwlTimerBoxComponent","i4.OwlTimerComponent","i5.OwlCalendarComponent","OWL_DATETIME_VALUE_ACCESSOR","i2.OwlDateTimeContainerComponent","filter","i2.OwlDialogService","i3.DateTimeAdapter"],"mappings":"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"}