{"version":3,"file":"bimeister-pupakit.forms.mjs","sources":["../../src/components/control-text/components/control-text/control-text.component.ts","../../src/components/control-text/components/control-text/control-text.component.html","../../src/components/control-text/control-text.module.ts","../../src/declarations/constants/day-in-ms.const.ts","../../src/declarations/enums/day-of-week.enum.ts","../../src/declarations/functions/is-date.function.ts","../../src/declarations/functions/date-clear-time.function.ts","../../src/declarations/functions/get-days-in-month.function.ts","../../src/declarations/functions/sanitize-date.function.ts","../../src/declarations/functions/get-range-end-date.function.ts","../../src/declarations/functions/get-range-start-date.function.ts","../../src/components/date-time-picker/services/date-picker-state.service.ts","../../src/components/date-time-picker/components/date-picker-years/date-picker-years.component.ts","../../src/components/date-time-picker/components/date-picker-years/date-picker-years.component.html","../../src/components/date-time-picker/components/date-picker-months/date-picker-months.component.ts","../../src/components/date-time-picker/components/date-picker-months/date-picker-months.component.html","../../src/components/date-time-picker/components/date-picker-simple/date-picker-simple.component.ts","../../src/components/date-time-picker/components/date-picker-simple/date-picker-simple.component.html","../../src/components/date-time-picker/components/date-picker-double/date-picker-double.component.ts","../../src/components/date-time-picker/components/date-picker-double/date-picker-double.component.html","../../src/components/date-time-picker/services/time-picker-state.service.ts","../../src/components/date-time-picker/components/time-picker-digits/time-picker-digits.component.ts","../../src/components/date-time-picker/components/time-picker-digits/time-picker-digits.component.html","../../src/components/date-time-picker/components/time-picker-simple/time-picker-simple.component.ts","../../src/components/date-time-picker/components/time-picker-simple/time-picker-simple.component.html","../../src/components/date-time-picker/components/date-picker-simple-time/date-picker-simple-time.component.ts","../../src/components/date-time-picker/components/date-picker-simple-time/date-picker-simple-time.component.html","../../src/components/date-time-picker/components/date-picker/date-picker.component.ts","../../src/components/date-time-picker/components/date-picker/date-picker.component.html","../../src/components/date-time-picker/components/time-picker/time-picker.component.ts","../../src/components/date-time-picker/components/time-picker/time-picker.component.html","../../src/components/date-time-picker/date-time-picker.module.ts","../../src/components/day-selector/services/day-selector-state.service.ts","../../src/declarations/constants/default-day-selector-config.const.ts","../../src/declarations/tokens/day-selector-config.token.ts","../../src/components/day-selector/services/locale-day-formatter.service.ts","../../src/components/day-selector/components/day-selector-item/day-selector-item.component.ts","../../src/components/day-selector/components/day-selector-item/day-selector-item.component.html","../../src/components/day-selector/components/day-selector/day-selector.component.ts","../../src/components/day-selector/components/day-selector/day-selector.component.html","../../src/components/day-selector/day-selector.module.ts","../../src/components/droppable/components/droppable/droppable.component.ts","../../src/components/droppable/components/droppable/droppable.component.html","../../src/components/droppable/declarations/classes/abstract/droppable-content.abstract.ts","../../src/components/droppable/components/droppable-content/droppable-content.component.ts","../../src/components/droppable/components/droppable-content/droppable-content.component.html","../../src/components/droppable/components/droppable-legacy/droppable-legacy.component.ts","../../src/components/droppable/components/droppable-legacy/droppable-legacy.component.html","../../src/components/droppable/components/droppable-native-content/droppable-native-content.component.ts","../../src/components/droppable/components/droppable-native-content/droppable-native-content.component.html","../../src/components/droppable/components/droppable-trigger/droppable-trigger.component.ts","../../src/components/droppable/components/droppable-trigger/droppable-trigger.component.html","../../src/components/droppable/droppable.module.ts","../../src/components/form-layout/components/form-layout/form-layout.component.ts","../../src/components/form-layout/components/form-layout/form-layout.component.html","../../src/components/form-layout/components/form-elements-group/form-elements-group.component.ts","../../src/components/form-layout/components/form-elements-group/form-elements-group.component.html","../../src/components/form-layout/components/form-element/form-element.component.ts","../../src/components/form-layout/components/form-element/form-element.component.html","../../src/components/form-layout/form-layout.module.ts","../../src/declarations/classes/input-date-time-helper.class.ts","../../src/declarations/functions/is-form-control-valid-status.function.ts","../../src/declarations/classes/abstract/input-base-control-value-accessor.abstract.ts","../../src/declarations/classes/abstract/input-base.abstract.ts","../../src/declarations/classes/abstract/input-date-time-base.abstract.ts","../../src/components/input/components/input-date-range-double/input-date-range-double.component.ts","../../src/components/input/components/input-date-range-double/input-date-range-double.component.html","../../src/components/input/components/input-date-range/input-date-range.component.ts","../../src/components/input/components/input-date-range/input-date-range.component.html","../../src/components/input/components/input-date-time-seconds/input-date-time-seconds.component.ts","../../src/components/input/components/input-date-time-seconds/input-date-time-seconds.component.html","../../src/components/input/components/input-date-time/input-date-time.component.ts","../../src/components/input/components/input-date-time/input-date-time.component.html","../../src/components/input/components/input-date/input-date.component.ts","../../src/components/input/components/input-date/input-date.component.html","../../src/components/input/components/input-number/input-number.component.ts","../../src/components/input/components/input-number/input-number.component.html","../../src/components/input/components/input-password/input-password.component.ts","../../src/components/input/components/input-password/input-password.component.html","../../src/components/input/components/input-text/input-text.component.ts","../../src/components/input/components/input-text/input-text.component.html","../../src/components/input/components/input-time/input-time.component.ts","../../src/components/input/components/input-time/input-time.component.html","../../src/components/input/input.module.ts","../../src/components/label/components/label/label.component.ts","../../src/components/label/components/label/label.component.html","../../src/components/label/label.module.ts","../../src/components/radio-group/services/radio-group.service.ts","../../src/components/radio-group/components/radio-control/radio-control.component.ts","../../src/components/radio-group/components/radio-control/radio-control.component.html","../../src/components/radio-group/components/radio-group/radio-group.component.ts","../../src/components/radio-group/components/radio-group/radio-group.component.html","../../src/components/radio-group/radio-group.module.ts","../../src/components/rating/components/rating/rating.component.ts","../../src/components/rating/components/rating/rating.component.html","../../src/components/rating/rating.module.ts","../../src/components/search-field/components/search-field/search-field.component.ts","../../src/components/search-field/components/search-field/search-field.component.html","../../src/components/search-field/search-field.module.ts","../../src/components/select/components/select-dropdown-footer/select-dropdown-footer.component.ts","../../src/components/select/components/select-dropdown-footer/select-dropdown-footer.component.html","../../src/components/select/components/select-dropdown-header/select-dropdown-header.component.ts","../../src/components/select/components/select-dropdown-header/select-dropdown-header.component.html","../../src/declarations/classes/abstract/select-dropdown-base.abstract.ts","../../src/components/select/services/select-state.service.ts","../../src/components/select/components/select-dropdown/select-dropdown.component.ts","../../src/components/select/components/select-dropdown/select-dropdown.component.html","../../src/components/select/components/select-option-icon/select-option-icon.component.ts","../../src/components/select/components/select-option-icon/select-option-icon.component.html","../../src/declarations/classes/abstract/select-option-base.abstract.ts","../../src/components/select/components/select-option/select-option.component.ts","../../src/components/select/components/select-option/select-option.component.html","../../src/declarations/classes/abstract/select-options-container-base.abstract.ts","../../src/components/select/components/select-options-container/select-options-container.component.ts","../../src/components/select/components/select-options-container/select-options-container.component.html","../../src/declarations/classes/abstract/select-trigger-base.abstract.ts","../../src/components/select/components/select-trigger-extra-case/select-trigger-extra-case.component.ts","../../src/components/select/components/select-trigger-extra-case/select-trigger-extra-case.component.html","../../src/components/select/components/select-trigger-input/select-trigger-input.component.ts","../../src/components/select/components/select-trigger-input/select-trigger-input.component.html","../../src/components/select/components/select-trigger-tag/select-trigger-tag.component.ts","../../src/components/select/components/select-trigger-tag/select-trigger-tag.component.html","../../src/components/select/directives/select-trigger-tag-template.directive.ts","../../src/components/select/components/select-trigger-tags/select-trigger-tags.component.ts","../../src/components/select/components/select-trigger-tags/select-trigger-tags.component.html","../../src/components/select/components/select-trigger/select-trigger.component.ts","../../src/components/select/components/select-trigger/select-trigger.component.html","../../src/declarations/classes/abstract/select-base.abstract.ts","../../src/components/select/components/select/select.component.ts","../../src/components/select/components/select/select.component.html","../../src/components/select/select.module.ts","../../src/components/switcher/components/switcher/switcher.component.ts","../../src/components/switcher/components/switcher/switcher.component.html","../../src/components/switcher/switcher.module.ts","../../src/declarations/classes/abstract/textarea-base.abstract.ts","../../src/components/textarea/components/textarea-inline/textarea-inline.component.ts","../../src/components/textarea/components/textarea-inline/textarea-inline.component.html","../../src/components/textarea/components/textarea/textarea.component.ts","../../src/components/textarea/components/textarea/textarea.component.html","../../src/components/textarea/textarea.module.ts","../../src/forms.module.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-control-text',\n  templateUrl: './control-text.component.html',\n  styleUrls: ['./control-text.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ControlTextComponent {\n  @Input() public isError: boolean = false;\n}\n","<p class=\"control-text\" [class.control-text_error]=\"isError\">\n  <ng-content></ng-content>\n</p>\n","import { NgModule } from '@angular/core';\nimport { ControlTextComponent } from './components/control-text/control-text.component';\n\n@NgModule({\n  declarations: [ControlTextComponent],\n  imports: [],\n  exports: [ControlTextComponent],\n})\nexport class PupaControlTextModule {}\n","export const dayInMs: number = 86400000;\n","export enum DayOfWeek {\n  Sunday,\n  Monday,\n  Tuesday,\n  Wednesday,\n  Thursday,\n  Friday,\n  Saturday,\n}\n","export function isDate(date: unknown): boolean {\n  return !Number.isNaN(Date.parse(String(date)));\n}\n","import { isNil } from '@bimeister/utilities';\nimport { isDate } from './is-date.function';\n\nexport function dateClearTime(date: Date): Date {\n  if (isNil(date) || !isDate(date)) {\n    return date;\n  }\n  const sanitizedDate: Date = date;\n  sanitizedDate.setHours(0, 0, 0, 0);\n  return sanitizedDate;\n}\n","import { dateClearTime } from './date-clear-time.function';\n\nexport function getDaysInMonth(date: Date): number {\n  // https://habr.com/ru/post/177059/\n  const maxDaysInMonth: number = 33;\n  return maxDaysInMonth - dateClearTime(new Date(date.getFullYear(), date.getMonth(), maxDaysInMonth)).getDate();\n}\n","export function sanitizeDate(date: Date): Date {\n  return new Date(Date.parse(String(date)));\n}\n","import { isNil } from '@bimeister/utilities';\n\nexport function getRangeEndDate(range: Date[]): Date {\n  if (!Array.isArray(range)) {\n    return undefined;\n  }\n  const rangeEndDateIndex: number = range.findIndex(\n    (rangeItem: Date, rangeItemIndex: number, rangeItemOrigin: [Date, Date]) => {\n      const nextItem: Date = rangeItemOrigin[rangeItemIndex + 1];\n      const previousItem: Date = rangeItemOrigin[rangeItemIndex - 1];\n\n      if (isNil(rangeItem)) {\n        return false;\n      }\n\n      if (isNil(previousItem)) {\n        return rangeItem.valueOf() > nextItem.valueOf();\n      }\n      return rangeItem.valueOf() > previousItem.valueOf();\n    }\n  );\n  if (Object.is(rangeEndDateIndex, -1)) {\n    return range[0];\n  }\n  return range[rangeEndDateIndex];\n}\n","import { isNil } from '@bimeister/utilities';\n\nexport function getRangeStartDate(range: Date[]): Date {\n  if (!Array.isArray(range)) {\n    return undefined;\n  }\n  const rangeStartDateIndex: number = range.findIndex(\n    (rangeItem: Date, rangeItemIndex: number, rangeItemOrigin: [Date, Date]) => {\n      const nextItem: Date = rangeItemOrigin[rangeItemIndex + 1];\n      const previousItem: Date = rangeItemOrigin[rangeItemIndex - 1];\n\n      if (isNil(rangeItem)) {\n        return false;\n      }\n\n      if (isNil(previousItem)) {\n        return rangeItem.valueOf() < nextItem.valueOf();\n      }\n      return rangeItem.valueOf() < previousItem.valueOf();\n    }\n  );\n  if (Object.is(rangeStartDateIndex, -1)) {\n    return range[0];\n  }\n  return range[rangeStartDateIndex];\n}\n","import { Injectable } from '@angular/core';\nimport { filterFalsy, filterNotNil, isNil, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, NEVER, Observable } from 'rxjs';\nimport { filter, map, switchMap, take } from 'rxjs/operators';\nimport { dateClearTime } from '../../../declarations/functions/date-clear-time.function';\nimport { getRangeEndDate } from '../../../declarations/functions/get-range-end-date.function';\nimport { getRangeStartDate } from '../../../declarations/functions/get-range-start-date.function';\nimport { DatePickerPreviewMode } from '../../../declarations/types/date-picker-preview-mode.type';\nimport { DatePickerSelectionMode } from '../../../declarations/types/date-picker-selection-mode.type';\n\nconst WEEK_DAY_NAMES: string[] = ['ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС'];\nconst INVALID_RANGE_SIZE: number = 2;\nconst VALID_RANGE_SIZE: number = 2;\n\nconst DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME: Date = dateClearTime(new Date());\n\n@Injectable({ providedIn: 'any' })\nexport class DatePickerStateService {\n  public readonly weekDayNames: string[] = WEEK_DAY_NAMES;\n  public readonly currentDate: Date = DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME;\n\n  public readonly hours$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n  public readonly minutes$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n  public readonly seconds$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  public readonly isBackDating$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n  public readonly availableEndDate$: BehaviorSubject<Date | number> = new BehaviorSubject<Date | number>(Infinity);\n\n  public readonly selectionMode$: BehaviorSubject<DatePickerSelectionMode> =\n    new BehaviorSubject<DatePickerSelectionMode>('range');\n\n  public readonly previewMode$: BehaviorSubject<DatePickerPreviewMode> = new BehaviorSubject<DatePickerPreviewMode>(\n    'simple'\n  );\n\n  public readonly withSeconds$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly selectedDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(null);\n  public readonly selectedRange$: BehaviorSubject<Date[]> = new BehaviorSubject<Date[]>([]);\n\n  public readonly isSelectionModeDate$: Observable<boolean> = this.selectionMode$.pipe(\n    map((selectionMode: DatePickerSelectionMode) => selectionMode === 'date'),\n    shareReplayWithRefCount()\n  );\n\n  public readonly hoveredDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(null);\n\n  public readonly hoveredRange$: Observable<Date[]> = combineLatest([this.selectedRange$, this.hoveredDate$]).pipe(\n    filter((aggregatedDates: [Date[], Date]) => {\n      const selectedRange: Date[] = aggregatedDates[0];\n      return !Object.is(selectedRange.length, INVALID_RANGE_SIZE);\n    }),\n    map((aggregatedDates: [Date[], Date]) => {\n      const selectedRange: Date[] = aggregatedDates[0];\n      if (Object.is(selectedRange.length, 0)) {\n        return [];\n      }\n      const selectedDateFromRange: Date = selectedRange[selectedRange.length - 1];\n      const hoveredDate: Date = aggregatedDates[1];\n      return [selectedDateFromRange, hoveredDate];\n    }),\n    shareReplayWithRefCount()\n  );\n\n  public processDateSelection(date: Date): void {\n    this.isSelectionModeDate$\n      .pipe(\n        filterNotNil(),\n        take(1),\n        switchMap((isSelectionModeDate: boolean) => {\n          if (isSelectionModeDate) {\n            this.selectedDate$.next(date);\n            return NEVER;\n          }\n\n          return this.selectedRange$;\n        }),\n        take(1),\n        map((alreadySelectedDates: Date[]) =>\n          Object.is(alreadySelectedDates.length, 1) ? [alreadySelectedDates[alreadySelectedDates.length - 1]] : []\n        )\n      )\n      .subscribe((alreadySelectedDates: Date[]) => this.selectedRange$.next([...alreadySelectedDates, date]));\n  }\n\n  public processDateHover(date: Date): void {\n    this.isSelectionModeDate$.pipe(filterNotNil(), take(1), filterFalsy()).subscribe(() => {\n      this.hoveredDate$.next(date);\n    });\n  }\n\n  public isSameDate(dateA: Date, dateB: Date): boolean {\n    return !isNil(dateA) && !isNil(dateB) && Object.is(dateA.valueOf(), dateB.valueOf());\n  }\n\n  public dateIsInDateRange(date: Date, dateRange: Date[]): boolean {\n    if (isNil(date) || !Array.isArray(dateRange) || Object.is(dateRange.length, 0)) {\n      return false;\n    }\n    const uniqueRangeItemsMs: Set<number> = new Set<number>(\n      dateRange.filter((rangeItem: Date) => !isNil(rangeItem)).map((rangeItem: Date) => rangeItem.valueOf())\n    );\n    const rangeIsInvalid: boolean = !Object.is(uniqueRangeItemsMs.size, VALID_RANGE_SIZE);\n    if (rangeIsInvalid) {\n      return false;\n    }\n    const rangeStartDate: Date = getRangeStartDate(dateRange);\n    const rangeEndDate: Date = getRangeEndDate(dateRange);\n    const rangeStartDateMs: number = rangeStartDate.valueOf();\n    const rangeEndDateMs: number = rangeEndDate.valueOf();\n    const dateToTestMs: number = date.valueOf();\n\n    return rangeStartDateMs < dateToTestMs && rangeEndDateMs > dateToTestMs;\n  }\n\n  public dateIsInDateArray(date: Date, dateArray: Date[]): boolean {\n    if (isNil(date) || !Array.isArray(dateArray) || Object.is(dateArray.length, 0)) {\n      return false;\n    }\n    return dateArray.some((dateFromRange: Date) => this.isSameDate(dateFromRange, date));\n  }\n\n  public dateIsRangeStartDate(date: Date, dateRange: Date[]): boolean {\n    if (isNil(date) || !Array.isArray(dateRange) || Object.is(dateRange.length, 0)) {\n      return false;\n    }\n    const uniqueRangeItemsMs: Set<number> = new Set<number>(\n      dateRange.filter((rangeItem: Date) => !isNil(rangeItem)).map((rangeItem: Date) => rangeItem.valueOf())\n    );\n    const rangeIsInvalid: boolean = !Object.is(uniqueRangeItemsMs.size, VALID_RANGE_SIZE);\n    if (rangeIsInvalid) {\n      return false;\n    }\n    const rangeStartDate: Date = getRangeStartDate(dateRange);\n    return this.isSameDate(rangeStartDate, date);\n  }\n\n  public dateIsRangeEndDate(date: Date, dateRange: Date[]): boolean {\n    if (isNil(date) || !Array.isArray(dateRange) || Object.is(dateRange.length, 0)) {\n      return false;\n    }\n    const uniqueRangeItemsMs: Set<number> = new Set<number>(\n      dateRange.filter((rangeItem: Date) => !isNil(rangeItem)).map((rangeItem: Date) => rangeItem.valueOf())\n    );\n    const rangeIsInvalid: boolean = !Object.is(uniqueRangeItemsMs.size, VALID_RANGE_SIZE);\n    if (rangeIsInvalid) {\n      return false;\n    }\n    const rangeEndDate: Date = getRangeEndDate(dateRange);\n    return this.isSameDate(rangeEndDate, date);\n  }\n\n  public dateIsNotAvailable(date: Date, isBackDating: boolean, availableEndDate: Date | number): boolean {\n    return (!isBackDating && date < DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME) || date > availableEndDate;\n  }\n\n  public isDateStartInHoveredAndSelectedRange(date: Date, hoveredRange: Date[], selectedRange: Date[]): boolean {\n    return this.dateIsRangeStartDate(date, hoveredRange) || this.dateIsRangeStartDate(date, selectedRange);\n  }\n\n  public isDateEndInHoveredAndSelectedRange(date: Date, hoveredRange: Date[], selectedRange: Date[]): boolean {\n    return this.dateIsRangeEndDate(date, hoveredRange) || this.dateIsRangeEndDate(date, selectedRange);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\n\nconst DEFAULT_YEAR: number = dateClearTime(new Date()).getFullYear();\nconst YEARS_IN_SECTION: number = 30;\nconst DEFAULT_YEARS: number[] = Array(YEARS_IN_SECTION)\n  .fill(0)\n  .map((_year: number, index: number) => DEFAULT_YEAR + index);\n\n@Component({\n  selector: 'pupa-date-picker-years',\n  templateUrl: './date-picker-years.component.html',\n  styleUrls: ['./date-picker-years.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerYearsComponent implements OnChanges {\n  @Input() public readonly years: number[] = DEFAULT_YEARS;\n  public readonly years$: BehaviorSubject<number[]> = new BehaviorSubject<number[]>(DEFAULT_YEARS);\n\n  public readonly currentYear: number = DEFAULT_YEAR;\n\n  @Output() private readonly selectedYear: EventEmitter<number> = new EventEmitter<number>();\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processYearsChange(changes?.years);\n  }\n\n  public selectYear(year: number): void {\n    this.selectedYear.emit(year);\n  }\n\n  private processYearsChange(change: ComponentChange<this, number[]>): void {\n    const updatedValue: number[] | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.years$.next(updatedValue);\n  }\n}\n","<div class=\"year\" *ngFor=\"let year of years$ | async\" [class.current]=\"year === currentYear\" (click)=\"selectYear(year)\">\n  {{ year }}\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\n\nconst DEFAULT_MONTH: number = dateClearTime(new Date()).getMonth();\nconst MONTH_COUNT: number = 12;\n\n@Component({\n  selector: 'pupa-date-picker-months',\n  templateUrl: './date-picker-months.component.html',\n  styleUrls: ['./date-picker-months.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerMonthsComponent {\n  public readonly currentMonth: number = DEFAULT_MONTH;\n\n  public readonly months: Date[] = Array(MONTH_COUNT)\n    .fill(new Date())\n    .map((date: Date, index: number) => {\n      date.setMonth(index, 1);\n      return dateClearTime(new Date(date));\n    });\n\n  @Output() private readonly selectedMonth: EventEmitter<number> = new EventEmitter<number>();\n\n  public selectMonth(month: number): void {\n    this.selectedMonth.emit(month);\n  }\n}\n","<div class=\"month\" *ngFor=\"let month of months; let index = index\" (click)=\"selectMonth(index)\">\n  {{ month | date : 'LLLL' | titlecase }}\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterFalsy, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { dayInMs } from '../../../../declarations/constants/day-in-ms.const';\nimport { DayOfWeek } from '../../../../declarations/enums/day-of-week.enum';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\nimport { getDaysInMonth } from '../../../../declarations/functions/get-days-in-month.function';\nimport { isDate } from '../../../../declarations/functions/is-date.function';\nimport { sanitizeDate } from '../../../../declarations/functions/sanitize-date.function';\nimport { DatePickerStateService } from '../../services/date-picker-state.service';\nimport { DatePickerPreviewMode } from '../../../../declarations/types/date-picker-preview-mode.type';\n\nconst DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME: Date = dateClearTime(new Date());\nconst YEARS_IN_SECTION: number = 30;\nconst YEARS_START_OFFSET: number = 19;\n\nconst MIN_DAYS_MONTH: number = 28;\n\nenum DatePickerState {\n  Years,\n  Months,\n  Days,\n}\n\n@Component({\n  selector: 'pupa-date-picker-simple',\n  templateUrl: './date-picker-simple.component.html',\n  styleUrls: ['./date-picker-simple.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerSimpleComponent implements OnChanges {\n  @Input() public readonly baseDate: Date = DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME;\n  public readonly baseDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME);\n\n  @Input() public readonly isLeftDoubleDatePicker: boolean = false;\n  public readonly isLeftDoubleDatePicker$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly isRightDoubleDatePicker: boolean = false;\n  public readonly isRightDoubleDatePicker$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly needAddedWeek: boolean = false;\n  public readonly needAddedWeek$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Output() public readonly nextMonthClicked: EventEmitter<void> = new EventEmitter<void>();\n  @Output() public readonly previousMonthClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  public readonly weekDayNames: string[] = this.datePickerStateService.weekDayNames;\n\n  public readonly datePickerPreviewMode: typeof DatePickerState = DatePickerState;\n  public readonly datePickerPreviewMode$: BehaviorSubject<DatePickerState> = new BehaviorSubject<DatePickerState>(\n    DatePickerState.Days\n  );\n\n  public readonly previewMode$: BehaviorSubject<DatePickerPreviewMode> = this.datePickerStateService.previewMode$;\n\n  public readonly selectedDate$: BehaviorSubject<Date> = this.datePickerStateService.selectedDate$;\n  public readonly selectedRange$: BehaviorSubject<Date[]> = this.datePickerStateService.selectedRange$;\n\n  public readonly isSelectionModeDate$: Observable<boolean> = this.datePickerStateService.isSelectionModeDate$;\n  public readonly isDatePickerDoubleModeEnabled$: Observable<boolean> = combineLatest([\n    this.isLeftDoubleDatePicker$,\n    this.isRightDoubleDatePicker$,\n  ]).pipe(\n    map(([isLeftDoubleDatePicker, isRightDoubleDatePicker]: [boolean, boolean]) =>\n      [isLeftDoubleDatePicker, isRightDoubleDatePicker].includes(true)\n    )\n  );\n\n  public readonly hoveredDate$: BehaviorSubject<Date> = this.datePickerStateService.hoveredDate$;\n  public readonly hoveredRange$: Observable<Date[]> = this.datePickerStateService.hoveredRange$;\n\n  public readonly isBackDating$: BehaviorSubject<boolean> = this.datePickerStateService.isBackDating$;\n  public readonly availableEndDate$: BehaviorSubject<Date | number> = this.datePickerStateService.availableEndDate$;\n\n  public readonly primarySectionStartDate$: Observable<Date> = this.baseDate$.pipe(\n    distinctUntilChanged(),\n    filter((baseDate: Date) => isDate(baseDate)),\n    map((baseDate: Date) => {\n      const baseMonthDay: number = baseDate.getDate();\n      const baseDateMs: number = baseDate.valueOf();\n      return baseDateMs - (baseMonthDay - 1) * dayInMs;\n    }),\n    map((sectionStartDateMs: number) => dateClearTime(new Date(sectionStartDateMs)))\n  );\n\n  public readonly baseYear$: Observable<number> = this.primarySectionStartDate$.pipe(\n    distinctUntilChanged(),\n    map((primarySectionStartDate: Date) => primarySectionStartDate.getFullYear())\n  );\n\n  public readonly primarySectionEndDate$: Observable<Date> = this.baseDate$.pipe(\n    distinctUntilChanged(),\n    filter((baseDate: Date) => isDate(baseDate)),\n    map((baseDate: Date) => {\n      const baseMonthDay: number = baseDate.getDate();\n      const baseDateMs: number = baseDate.valueOf();\n      const daysInMonth: number = getDaysInMonth(baseDate);\n\n      return Object.is(baseMonthDay, daysInMonth) ? baseDateMs : baseDateMs + (daysInMonth - baseMonthDay) * dayInMs;\n    }),\n    map((sectionStartDateMs: number) => dateClearTime(new Date(sectionStartDateMs)))\n  );\n\n  public readonly primarySectionDates$: Observable<Date[]> = this.primarySectionStartDate$.pipe(\n    distinctUntilChanged(),\n    map((sectionStartDate: Date) => {\n      const daysInMonth: number = getDaysInMonth(sectionStartDate);\n      const sectionStartDateMs: number = sectionStartDate.valueOf();\n      return new Array(daysInMonth)\n        .fill(sectionStartDateMs)\n        .map((startDateMs: number, dayInMonth: number) => startDateMs + dayInMonth * dayInMs);\n    }),\n    map((sectionDatesMs: number[]) => sectionDatesMs.map((dateMs: number) => dateClearTime(new Date(dateMs))))\n  );\n\n  public readonly primarySectionLeftOffsetDates$: Observable<Date[]> = this.primarySectionStartDate$.pipe(\n    distinctUntilChanged(),\n    map((sectionStartDate: Date) => {\n      const sectionStartDateMs: number = sectionStartDate.valueOf();\n      const lastDayOfPreviousMonthMs: number = sectionStartDateMs - dayInMs;\n      return dateClearTime(new Date(lastDayOfPreviousMonthMs));\n    }),\n    map((previousMonthLastDate: Date) => {\n      const previousMonthLastDateDayOfWeek: DayOfWeek = previousMonthLastDate.getDay();\n      if (previousMonthLastDateDayOfWeek === DayOfWeek.Sunday) {\n        return [];\n      }\n      const previousMonthLastDateMs: number = previousMonthLastDate.valueOf();\n      const visibleDaysCount: number = previousMonthLastDateDayOfWeek;\n      return new Array(visibleDaysCount)\n        .fill(previousMonthLastDateMs)\n        .map((lastMonthDateMs: number, multiplier: number) => lastMonthDateMs - multiplier * dayInMs);\n    }),\n    map((previousMonthDatesMs: number[]) => [...previousMonthDatesMs].reverse()),\n    map((reversedPreviousMonthDatesMs: number[]) =>\n      reversedPreviousMonthDatesMs.map((dateMs: number) => dateClearTime(new Date(dateMs)))\n    )\n  );\n\n  public readonly primarySectionRightOffsetDates$: Observable<Date[]> = this.needAddedWeek$.pipe(\n    switchMap((needAddedWeek: boolean) =>\n      this.primarySectionEndDate$.pipe(\n        distinctUntilChanged(),\n        map((sectionEndDate: Date) => {\n          const currentSectionDate: Date = new Date(sectionEndDate);\n          const month: number = currentSectionDate.getMonth() + 1;\n          currentSectionDate.setDate(1);\n          currentSectionDate.setMonth(month);\n\n          return [sectionEndDate, dateClearTime(new Date(currentSectionDate))];\n        }),\n        withLatestFrom(this.previewMode$),\n        map(([[currentSectionEndDate, nextMonthFirstDate], previewMode]: [[Date, Date], DatePickerPreviewMode]) => {\n          const nextMonthFirstDateDayOfWeek: DayOfWeek = nextMonthFirstDate.getDay();\n          const nextMonthFirstDateMs: number = nextMonthFirstDate.valueOf();\n\n          const currentDaysInMonth: number = getDaysInMonth(currentSectionEndDate);\n          const currentMonthIsSmall: boolean = currentDaysInMonth === MIN_DAYS_MONTH;\n          const currentMonthPreviewModeIsDouble: boolean = previewMode === 'double';\n          const nextMonthFirstDateDayIsMonday: boolean = nextMonthFirstDateDayOfWeek === DayOfWeek.Monday;\n          const nextMonthFirstDateDayIsSunday: boolean = nextMonthFirstDateDayOfWeek === DayOfWeek.Sunday;\n\n          const currentMonthIsSmallAndInDouble: boolean = currentMonthIsSmall && currentMonthPreviewModeIsDouble;\n\n          if (nextMonthFirstDateDayIsMonday && !currentMonthIsSmallAndInDouble) {\n            return [];\n          }\n          const visibleDaysCount: number = nextMonthFirstDateDayIsSunday ? 1 : 8 - nextMonthFirstDateDayOfWeek;\n\n          const resultDaysCount: number = needAddedWeek ? visibleDaysCount + 7 : visibleDaysCount;\n\n          return new Array(resultDaysCount)\n            .fill(nextMonthFirstDateMs)\n            .map((lastMonthDateMs: number, multiplier: number) => lastMonthDateMs + multiplier * dayInMs);\n        }),\n        map((reversedPreviousMonthDatesMs: number[]) =>\n          reversedPreviousMonthDatesMs.map((dateMs: number) => dateClearTime(new Date(dateMs)))\n        )\n      )\n    )\n  );\n\n  public readonly primarySectionYears$: Observable<number[]> = this.primarySectionStartDate$.pipe(\n    distinctUntilChanged(),\n    map((sectionStartDate: Date) => sectionStartDate.getFullYear()),\n    map((currentYear: number) => {\n      const startYearInSection: number =\n        Math.floor(currentYear / YEARS_IN_SECTION) * YEARS_IN_SECTION - YEARS_START_OFFSET;\n\n      const resultStartYearInSection: number =\n        startYearInSection + YEARS_IN_SECTION > currentYear ? startYearInSection : currentYear;\n\n      return Array(YEARS_IN_SECTION)\n        .fill(0)\n        .map((_year: number, index: number) => resultStartYearInSection + index);\n    })\n  );\n\n  public readonly primarySectionYearsStartYear$: Observable<number> = this.primarySectionYears$.pipe(\n    map((years: number[]) => years[0])\n  );\n  public readonly primarySectionYearsEndYear$: Observable<number> = this.primarySectionYears$.pipe(\n    map((years: number[]) => years[years.length - 1])\n  );\n\n  constructor(private readonly datePickerStateService: DatePickerStateService) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processBaseDateChange(changes?.baseDate);\n    this.processIsLeftDoubleDatePickerChange(changes?.isLeftDoubleDatePicker);\n    this.processIsRightDoubleDatePickerChange(changes?.isRightDoubleDatePicker);\n    this.processNeedAddedWeekChange(changes?.needAddedWeek);\n  }\n\n  public switchToPreviousMonth(): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => {\n          const month: number = currentBaseDate.getMonth() - 1;\n          currentBaseDate.setMonth(month, 1);\n          return currentBaseDate;\n        }),\n        map((newBaseDateMs: Date) => dateClearTime(new Date(newBaseDateMs)))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n        this.previousMonthClicked.emit();\n      });\n  }\n\n  public switchToNextMonth(): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => {\n          const month: number = currentBaseDate.getMonth() + 1;\n          currentBaseDate.setMonth(month, 1);\n          return currentBaseDate;\n        }),\n        map((newBaseDateMs: Date) => dateClearTime(new Date(newBaseDateMs)))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n        this.nextMonthClicked.emit();\n      });\n  }\n\n  public switchToNextYear(): void {\n    this.baseYear$.pipe(take(1)).subscribe((year: number) => this.switchToYear(year + 1));\n  }\n\n  public switchToPreviousYear(): void {\n    this.baseYear$.pipe(take(1)).subscribe((year: number) => this.switchToYear(year - 1));\n  }\n\n  public switchToYear(year: number): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => dateClearTime(new Date(currentBaseDate.setFullYear(year))))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.datePickerPreviewMode$.next(DatePickerState.Months);\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public switchToMonth(month: number): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => dateClearTime(new Date(currentBaseDate.setMonth(month, 1))))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.datePickerPreviewMode$.next(DatePickerState.Days);\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public switchToPreviousYearsPeriod(): void {\n    this.primarySectionYearsStartYear$\n      .pipe(\n        take(1),\n        switchMap((primarySectionYearsStartYear: number) => {\n          const nextSectionYearsStartYear: number = primarySectionYearsStartYear - YEARS_IN_SECTION;\n\n          return this.baseDate$.pipe(\n            take(1),\n            map((currentBaseDate: Date) =>\n              dateClearTime(new Date(currentBaseDate.setFullYear(nextSectionYearsStartYear)))\n            )\n          );\n        })\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public switchToNextYearsPeriod(): void {\n    this.primarySectionYearsStartYear$\n      .pipe(\n        take(1),\n        switchMap((primarySectionYearsStartYear: number) => {\n          const nextSectionYearsStartYear: number = primarySectionYearsStartYear + YEARS_IN_SECTION;\n\n          return this.baseDate$.pipe(\n            take(1),\n            map((currentBaseDate: Date) =>\n              dateClearTime(new Date(currentBaseDate.setFullYear(nextSectionYearsStartYear)))\n            )\n          );\n        })\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public switchDatePickerPreviewMode(mode: DatePickerState): void {\n    this.isDatePickerDoubleModeEnabled$\n      .pipe(take(1), filterFalsy())\n      .subscribe(() => this.datePickerPreviewMode$.next(mode));\n  }\n\n  public processDateSelection(date: Date): void {\n    this.datePickerStateService.processDateSelection(date);\n  }\n\n  public processDateHover(date: Date): void {\n    this.datePickerStateService.processDateHover(date);\n  }\n\n  public isSameDate(dateA: Date, dateB: Date): boolean {\n    return this.datePickerStateService.isSameDate(dateA, dateB);\n  }\n\n  public dateIsInDateRange(date: Date, dateRange: Date[]): boolean {\n    return this.datePickerStateService.dateIsInDateRange(date, dateRange);\n  }\n\n  public dateIsInDateArray(date: Date, dateArray: Date[]): boolean {\n    return this.datePickerStateService.dateIsInDateArray(date, dateArray);\n  }\n\n  public dateIsRangeStartDate(date: Date, dateRange: Date[]): boolean {\n    return this.datePickerStateService.dateIsRangeStartDate(date, dateRange);\n  }\n\n  public dateIsRangeEndDate(date: Date, dateRange: Date[]): boolean {\n    return this.datePickerStateService.dateIsRangeEndDate(date, dateRange);\n  }\n\n  public dateIsNotAvailable(date: Date, isBackDating: boolean, availableEndDate: Date | number): boolean {\n    return this.datePickerStateService.dateIsNotAvailable(date, isBackDating, availableEndDate);\n  }\n\n  public isDateStartInHoveredAndSelectedRange(date: Date, hoveredRange: Date[], selectedRange: Date[]): boolean {\n    return this.datePickerStateService.isDateStartInHoveredAndSelectedRange(date, hoveredRange, selectedRange);\n  }\n\n  public isDateEndInHoveredAndSelectedRange(date: Date, hoveredRange: Date[], selectedRange: Date[]): boolean {\n    return this.datePickerStateService.isDateEndInHoveredAndSelectedRange(date, hoveredRange, selectedRange);\n  }\n\n  private processBaseDateChange(change: ComponentChange<this, Date>): void {\n    const updatedValue: Date | undefined = change?.currentValue;\n\n    if (isNil(updatedValue) || !isDate(updatedValue)) {\n      return;\n    }\n    const sanitizedDate: Date = sanitizeDate(updatedValue);\n    const sanitizedDateWithClearedTime: Date = dateClearTime(sanitizedDate);\n    this.baseDate$.next(sanitizedDateWithClearedTime);\n  }\n\n  private processIsLeftDoubleDatePickerChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.isLeftDoubleDatePicker$.next(updatedValue);\n  }\n\n  private processIsRightDoubleDatePickerChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.isRightDoubleDatePicker$.next(updatedValue);\n  }\n\n  private processNeedAddedWeekChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.needAddedWeek$.next(updatedValue);\n  }\n}\n","<ng-container [ngSwitch]=\"datePickerPreviewMode$ | async\">\n  <ng-container *ngSwitchCase=\"datePickerPreviewMode.Years\" [ngTemplateOutlet]=\"yearsTemplate\"></ng-container>\n  <ng-container *ngSwitchCase=\"datePickerPreviewMode.Months\" [ngTemplateOutlet]=\"monthsTemplate\"></ng-container>\n  <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"datesTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #datesTemplate>\n  <ng-container [ngTemplateOutlet]=\"headerDatesTemplate\"></ng-container>\n\n  <div class=\"date-picker__week-days\">\n    <span class=\"week-day\" *ngFor=\"let dayName of weekDayNames\">\n      {{ dayName }}\n    </span>\n  </div>\n\n  <div class=\"date-picker__wrapper\">\n    <ng-container\n      [ngTemplateOutlet]=\"dateButton\"\n      [ngTemplateOutletContext]=\"{\n        dateOrigin: primarySectionLeftOffsetDates$ | async,\n        disabled: true\n      }\"\n    ></ng-container>\n\n    <ng-container\n      [ngTemplateOutlet]=\"dateButton\"\n      [ngTemplateOutletContext]=\"{\n        dateOrigin: primarySectionDates$ | async,\n        disabled: false\n      }\"\n    ></ng-container>\n\n    <ng-container\n      [ngTemplateOutlet]=\"dateButton\"\n      [ngTemplateOutletContext]=\"{\n        dateOrigin: primarySectionRightOffsetDates$ | async,\n        disabled: true\n      }\"\n    ></ng-container>\n  </div>\n</ng-template>\n\n<ng-template #yearsTemplate>\n  <ng-container [ngTemplateOutlet]=\"headerYearsTemplate\"></ng-container>\n  <div class=\"date-picker__wrapper\">\n    <pupa-date-picker-years\n      [years]=\"primarySectionYears$ | async\"\n      (selectedYear)=\"switchToYear($event)\"\n    ></pupa-date-picker-years>\n  </div>\n</ng-template>\n\n<ng-template #monthsTemplate>\n  <ng-container [ngTemplateOutlet]=\"headerMonthsTemplate\"></ng-container>\n  <div class=\"date-picker__wrapper\">\n    <pupa-date-picker-months (selectedMonth)=\"switchToMonth($event)\"></pupa-date-picker-months>\n  </div>\n</ng-template>\n\n<ng-template #dateButton let-dateOrigin=\"dateOrigin\" let-disabled=\"disabled\">\n  <div\n    class=\"date-wrapper\"\n    *ngFor=\"let date of dateOrigin; index as index; last as last; first as first\"\n    [class.date-wrapper__disabled]=\"\n      disabled || dateIsNotAvailable(date, isBackDating$ | async, availableEndDate$ | async)\n    \"\n    [class.date-wrapper__range]=\"\n      !disabled &&\n      !(isSelectionModeDate$ | async) &&\n      (dateIsInDateRange(date, selectedRange$ | async) || dateIsInDateRange(date, hoveredRange$ | async))\n    \"\n    [class.date-wrapper__first]=\"!disabled && first\"\n    [class.date-wrapper__last]=\"!disabled && last\"\n  >\n    <div\n      class=\"date\"\n      [class.date__range-start]=\"\n        isDateStartInHoveredAndSelectedRange(date, hoveredRange$ | async, selectedRange$ | async)\n      \"\n      [class.date__range-end]=\"isDateEndInHoveredAndSelectedRange(date, hoveredRange$ | async, selectedRange$ | async)\"\n      (mouseover)=\"processDateHover(date)\"\n      (click)=\"processDateSelection(date)\"\n    >\n      <div\n        class=\"date-inner\"\n        [class.date-inner__selected]=\"\n          (isSelectionModeDate$ | async)\n            ? isSameDate(date, selectedDate$ | async)\n            : dateIsInDateArray(date, selectedRange$ | async)\n        \"\n        [class.date-inner__disabled]=\"\n          disabled || dateIsNotAvailable(date, isBackDating$ | async, availableEndDate$ | async)\n        \"\n      >\n        {{ date | date : 'd' }}\n      </div>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #headerDatesTemplate>\n  <div class=\"date-picker__header\">\n    <button\n      class=\"arrow-button\"\n      [class.not-showing]=\"isRightDoubleDatePicker$ | async\"\n      (click)=\"switchToPreviousMonth()\"\n    >\n      <pupa-icon name=\"ios-arrow-back\"></pupa-icon>\n    </button>\n    <span class=\"title\">\n      <div\n        class=\"title__month\"\n        [class.disable-hover]=\"isDatePickerDoubleModeEnabled$ | async\"\n        (click)=\"switchDatePickerPreviewMode(datePickerPreviewMode.Months)\"\n      >\n        {{ primarySectionStartDate$ | async | date : 'LLLL' | titlecase }}\n      </div>\n      &nbsp;&nbsp;\n      <div\n        class=\"title__year\"\n        [class.disable-hover]=\"isDatePickerDoubleModeEnabled$ | async\"\n        (click)=\"switchDatePickerPreviewMode(datePickerPreviewMode.Years)\"\n      >\n        {{ primarySectionStartDate$ | async | date : 'yyy' | titlecase }}\n      </div>\n    </span>\n    <button class=\"arrow-button\" [class.not-showing]=\"isLeftDoubleDatePicker$ | async\" (click)=\"switchToNextMonth()\">\n      <pupa-icon name=\"ios-arrow-forward\"></pupa-icon>\n    </button>\n  </div>\n</ng-template>\n\n<ng-template #headerYearsTemplate>\n  <div class=\"date-picker__header\">\n    <button class=\"arrow-button\" (click)=\"switchToPreviousYearsPeriod()\">\n      <pupa-icon name=\"ios-arrow-back\"></pupa-icon>\n    </button>\n    <span class=\"title selected\">\n      <div class=\"title__year\">\n        {{ primarySectionYearsStartYear$ | async }}\n      </div>\n      &nbsp;-&nbsp;\n      <div class=\"title__year\">\n        {{ primarySectionYearsEndYear$ | async }}\n      </div>\n    </span>\n    <button class=\"arrow-button\" (click)=\"switchToNextYearsPeriod()\">\n      <pupa-icon name=\"ios-arrow-forward\"></pupa-icon>\n    </button>\n  </div>\n</ng-template>\n\n<ng-template #headerMonthsTemplate>\n  <div class=\"date-picker__header\">\n    <button class=\"arrow-button\" (click)=\"switchToPreviousYear()\">\n      <pupa-icon name=\"ios-arrow-back\"></pupa-icon>\n    </button>\n    <span class=\"title selected\">\n      <div class=\"title__year\">\n        {{ baseYear$ | async }}\n      </div>\n    </span>\n    <button class=\"arrow-button\" (click)=\"switchToNextYear()\">\n      <pupa-icon name=\"ios-arrow-forward\"></pupa-icon>\n    </button>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators';\nimport { dayInMs } from '../../../../declarations/constants/day-in-ms.const';\nimport { DayOfWeek } from '../../../../declarations/enums/day-of-week.enum';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\nimport { getDaysInMonth } from '../../../../declarations/functions/get-days-in-month.function';\nimport { isDate } from '../../../../declarations/functions/is-date.function';\nimport { sanitizeDate } from '../../../../declarations/functions/sanitize-date.function';\n\nconst DEFAULT_CURRENT_DATE: Date = dateClearTime(new Date());\nconst DAYS_COUNT_IN_STANDARD_GRID: number = 35;\n\n@Component({\n  selector: 'pupa-date-picker-double',\n  templateUrl: './date-picker-double.component.html',\n  styleUrls: ['./date-picker-double.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerDoubleComponent implements OnChanges {\n  @Input() public baseDate: Date = DEFAULT_CURRENT_DATE;\n  public readonly baseDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(DEFAULT_CURRENT_DATE);\n\n  public readonly baseDateNextMonth$: Observable<Date> = this.baseDate$.pipe(\n    map((baseDate: Date) => {\n      const currentMonth: number = baseDate.getMonth();\n      const nextMonth: number = currentMonth + 1;\n      const currentYear: number = baseDate.getFullYear();\n      return dateClearTime(new Date(currentYear, nextMonth, 1));\n    })\n  );\n\n  public readonly needLeftCalendarAddedWeek$: Observable<boolean> = this.baseDateNextMonth$.pipe(\n    distinctUntilChanged(),\n    switchMap((date: Date) => this.needCalendarAddedWeek(date))\n  );\n\n  public readonly needRightCalendarAddedWeek$: Observable<boolean> = this.baseDate$.pipe(\n    distinctUntilChanged(),\n    switchMap((date: Date) => this.needCalendarAddedWeek(date))\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processBaseDateChange(changes?.baseDate);\n  }\n\n  public switchToPreviousMonth(): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => {\n          const baseDateMonthDay: number = currentBaseDate.getDate();\n          const currentBaseDateMs: number = currentBaseDate.valueOf();\n          return currentBaseDateMs - baseDateMonthDay * dayInMs;\n        }),\n        map((newBaseDateMs: number) => dateClearTime(new Date(newBaseDateMs)))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public switchToNextMonth(): void {\n    this.baseDate$\n      .pipe(\n        take(1),\n        map((currentBaseDate: Date) => {\n          const baseDateMonthDay: number = currentBaseDate.getDate();\n          const currentBaseDateMs: number = currentBaseDate.valueOf();\n          const currentBaseDateMonthDaysCount: number = getDaysInMonth(currentBaseDate);\n          return currentBaseDateMs + (currentBaseDateMonthDaysCount + 1 - baseDateMonthDay) * dayInMs;\n        }),\n        map((newBaseDateMs: number) => dateClearTime(new Date(newBaseDateMs)))\n      )\n      .subscribe((newBaseDate: Date) => {\n        this.baseDate$.next(newBaseDate);\n      });\n  }\n\n  public needCalendarAddedWeek(date: Date): Observable<boolean> {\n    return of(date).pipe(\n      filter((baseDate: Date) => isDate(baseDate)),\n      map((baseDate: Date) => {\n        const currentDate: Date = baseDate;\n        currentDate.setDate(1);\n        return currentDate.valueOf();\n      }),\n      map((sectionStartDateMs: number) => dateClearTime(new Date(sectionStartDateMs))),\n      map((startDate: Date) => {\n        const daysInMonth: number = getDaysInMonth(startDate);\n        const startDateDayOfWeek: DayOfWeek = startDate.getDay();\n        const countOfLeftDays: number = startDateDayOfWeek === DayOfWeek.Sunday ? 6 : startDateDayOfWeek - 1;\n\n        const resultDaysCount: number = countOfLeftDays + daysInMonth;\n\n        return resultDaysCount > DAYS_COUNT_IN_STANDARD_GRID;\n      })\n    );\n  }\n\n  private processBaseDateChange(change: ComponentChange<this, Date>): void {\n    const updatedValue: Date | undefined = change?.currentValue;\n\n    if (isNil(updatedValue) || !isDate(updatedValue)) {\n      return;\n    }\n    const sanitizedDate: Date = sanitizeDate(updatedValue);\n    const sanitizedDateWithClearedTime: Date = dateClearTime(sanitizedDate);\n    this.baseDate$.next(sanitizedDateWithClearedTime);\n  }\n}\n","<div class=\"container\">\n  <div class=\"calendar\">\n    <pupa-date-picker-simple\n      [baseDate]=\"baseDate$ | async\"\n      [isLeftDoubleDatePicker]=\"true\"\n      [needAddedWeek]=\"this.needLeftCalendarAddedWeek$ | async\"\n      (previousMonthClicked)=\"switchToPreviousMonth()\"\n    ></pupa-date-picker-simple>\n  </div>\n  <div class=\"calendar\">\n    <pupa-date-picker-simple\n      [baseDate]=\"baseDateNextMonth$ | async\"\n      [isRightDoubleDatePicker]=\"true\"\n      [needAddedWeek]=\"this.needRightCalendarAddedWeek$ | async\"\n      (nextMonthClicked)=\"switchToNextMonth()\"\n    ></pupa-date-picker-simple>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\n\nconst HOURS: number[] = Array(24)\n  .fill(0)\n  .map((_hour: number, index: number) => index);\nconst MINUTES: number[] = Array(60)\n  .fill(0)\n  .map((_hour: number, index: number) => index);\nconst SECONDS: number[] = MINUTES;\n\nconst ITEM_SIZE_PX: number = 28;\n\n@Injectable({ providedIn: 'any' })\nexport class TimePickerStateService {\n  public readonly hours: number[] = HOURS;\n  public readonly minutes: number[] = MINUTES;\n  public readonly seconds: number[] = SECONDS;\n\n  public readonly itemSizePx: number = ITEM_SIZE_PX;\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterNotNil, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime, filter, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { TimePickerStateService } from '../../services/time-picker-state.service';\n\n@Component({\n  selector: 'pupa-time-picker-digits',\n  templateUrl: './time-picker-digits.component.html',\n  styleUrls: ['./time-picker-digits.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePickerDigitsComponent implements OnChanges, OnInit, OnDestroy, AfterContentInit {\n  @Input() public readonly digits: number[] = [];\n  public readonly digits$: BehaviorSubject<number[]> = new BehaviorSubject<number[]>([]);\n\n  @Input() public readonly chosenDigit: number = null;\n\n  public readonly itemSizePx: number = this.timePickerStateService.itemSizePx;\n\n  @ViewChild('viewPort', { static: true }) private readonly viewPort: CdkVirtualScrollViewport;\n  private readonly viewPortReference$: ReplaySubject<CdkVirtualScrollViewport> = new ReplaySubject(1);\n\n  @Output() private readonly selectedDigit: EventEmitter<number> = new EventEmitter<number>();\n\n  private readonly scrolledIndex$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n  public readonly selectedDigit$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(private readonly timePickerStateService: TimePickerStateService) {}\n\n  @HostListener('wheel', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  public windowEventsHandler(event: Event): void {\n    event.stopPropagation();\n  }\n\n  public ngOnInit(): void {\n    this.subscription.add(this.handleViewPortScrolledIndexChanges()).add(this.handleChosenDigitChanges());\n  }\n\n  public ngAfterContentInit(): void {\n    this.viewPortReference$.next(this.viewPort);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processDigitsChange(changes?.digits);\n    this.processChosenDigitChange(changes?.chosenDigit);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public readonly trackByItem: TrackByFunction<number> = (index: number, item: number): string => `${index}-${item}`;\n\n  public selectDigit(digit: number, index: number): void {\n    this.viewPort.scrollToIndex(index, 'smooth');\n    this.selectedDigit$.next(digit);\n    this.selectedDigit.emit(digit);\n  }\n\n  private processDigitsChange(change: ComponentChange<this, number[]>): void {\n    const updatedValue: number[] | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.digits$.next([...updatedValue, ...updatedValue]);\n    this.viewPort.scrollToIndex(updatedValue.length);\n  }\n\n  private processChosenDigitChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.selectedDigit$.next(updatedValue);\n  }\n\n  private handleChosenDigitChanges(): Subscription {\n    return this.selectedDigit$\n      .pipe(\n        filterNotNil(),\n        filter((digit: number) => digit > 0),\n        debounceTime(300)\n      )\n      .subscribe((selectedIndex: number) => {\n        const digitsSize: number = this.digits.length;\n        const resultScrolledIndex: number = selectedIndex > digitsSize / 2 ? selectedIndex : digitsSize + selectedIndex;\n        this.viewPort.scrollToIndex(resultScrolledIndex, 'smooth');\n      });\n  }\n\n  /**\n   * @description\n   * Infinite loop scrolling function using virtual-scroll. Initially, the base array consists\n   * of two default arrays. The selected item is the middle one. If we scroll down,\n   * add array. As soon as the first array went out of visible area, then we remove it.\n   * When we scroll up, the logic is similar.\n   */\n  private handleViewPortScrolledIndexChanges(): Subscription {\n    return this.selectedDigit$\n      .pipe(switchMap(() => this.viewPortReference$))\n      .pipe(\n        switchMap((viewPort: CdkVirtualScrollViewport) => viewPort.scrolledIndexChange),\n        withLatestFrom(this.scrolledIndex$)\n      )\n      .subscribe(([scrolledIndex, prevScrolledIndex]: [number, number]) => {\n        const scrollDiff: number = Math.abs(scrolledIndex - prevScrolledIndex);\n\n        this.scrolledIndex$.next(scrolledIndex);\n\n        const viewPortSize: number = this.viewPort.getViewportSize();\n        const offset: number = this.viewPort.measureScrollOffset();\n        const total: number = this.digits.length;\n        const scrollingOffset: number = total * this.itemSizePx + offset;\n\n        const visibleItems: number = Math.ceil(viewPortSize / this.itemSizePx);\n\n        const digitsBaseSize: number = total * 2;\n\n        if (scrolledIndex === 0) {\n          this.viewPort.scrollToOffset(scrollingOffset);\n          return;\n        }\n\n        if (scrolledIndex + visibleItems === digitsBaseSize) {\n          const newDigits: number[] = [...this.digits, ...this.digits, ...this.digits];\n          this.digits$.next(newDigits);\n          return;\n        }\n\n        const scrolledIndexInScrolledArea: boolean =\n          scrolledIndex > digitsBaseSize && scrolledIndex - digitsBaseSize <= scrollDiff;\n\n        if (scrolledIndex === digitsBaseSize || scrolledIndexInScrolledArea) {\n          this.digits$.next([...this.digits, ...this.digits]);\n          this.viewPort.scrollToIndex(total);\n          return;\n        }\n      });\n  }\n}\n","<cdk-virtual-scroll-viewport [itemSize]=\"itemSizePx\" class=\"viewport\" #viewPort>\n  <div\n    class=\"digit\"\n    *cdkVirtualFor=\"let digit of digits$ | async; trackBy: trackByItem; let index = index\"\n    (click)=\"selectDigit(digit, index)\"\n    [class.selected]=\"(selectedDigit$ | async) === digit\"\n  >\n    {{ digit | timeDigitFormat }}\n  </div>\n</cdk-virtual-scroll-viewport>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { TimePickerStateService } from '../../services/time-picker-state.service';\n\n@Component({\n  selector: 'pupa-time-picker-simple',\n  templateUrl: './time-picker-simple.component.html',\n  styleUrls: ['./time-picker-simple.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePickerSimpleComponent implements OnChanges {\n  @Input() public readonly withSeconds: boolean = false;\n  public readonly withSeconds$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly withGradient: boolean = false;\n  public readonly withGradient$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly chosenHours: number = null;\n  public readonly chosenHours$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  @Input() public readonly chosenMinutes: number = null;\n  public readonly chosenMinutes$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  @Input() public readonly chosenSeconds: number = null;\n  public readonly chosenSeconds$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  public readonly hours: number[] = this.timePickerStateService.hours;\n  public readonly minutes: number[] = this.timePickerStateService.minutes;\n  public readonly seconds: number[] = this.timePickerStateService.seconds;\n\n  public readonly itemSizePx: number = this.timePickerStateService.itemSizePx;\n\n  @Output() private readonly selectedHours: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedMinutes: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedSeconds: EventEmitter<number> = new EventEmitter<number>();\n\n  constructor(private readonly timePickerStateService: TimePickerStateService) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processWithSecondsChange(changes?.withSeconds);\n    this.processWithGradientChange(changes?.withGradient);\n\n    this.processChosenHoursChange(changes?.chosenHours);\n    this.processChosenMinutesChange(changes?.chosenMinutes);\n    this.processChosenSecondsChange(changes?.chosenSeconds);\n  }\n\n  public selectHours(hour: number): void {\n    this.selectedHours.emit(hour);\n  }\n\n  public selectMinutes(minute: number): void {\n    this.selectedMinutes.emit(minute);\n  }\n\n  public selectSeconds(second: number): void {\n    this.selectedSeconds.emit(second);\n  }\n\n  private processWithSecondsChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.withSeconds$.next(updatedValue);\n  }\n\n  private processWithGradientChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.withGradient$.next(updatedValue);\n  }\n\n  private processChosenHoursChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.chosenHours$.next(updatedValue);\n  }\n\n  private processChosenMinutesChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.chosenMinutes$.next(updatedValue);\n  }\n\n  private processChosenSecondsChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.chosenSeconds$.next(updatedValue);\n  }\n}\n","<div class=\"time-picker__wrapper\">\n  <div class=\"time-picker__digits\">\n    <pupa-time-picker-digits\n      [digits]=\"hours\"\n      [chosenDigit]=\"chosenHours$ | async\"\n      (selectedDigit)=\"selectHours($event)\"\n    ></pupa-time-picker-digits>\n  </div>\n  <div class=\"time-picker__digits\">\n    <pupa-time-picker-digits\n      [digits]=\"minutes\"\n      [chosenDigit]=\"chosenMinutes$ | async\"\n      (selectedDigit)=\"selectMinutes($event)\"\n    ></pupa-time-picker-digits>\n  </div>\n  <div class=\"time-picker__digits\" *ngIf=\"withSeconds$ | async\">\n    <pupa-time-picker-digits\n      [digits]=\"seconds\"\n      [chosenDigit]=\"chosenSeconds$ | async\"\n      (selectedDigit)=\"selectSeconds($event)\"\n    ></pupa-time-picker-digits>\n  </div>\n  <div class=\"time-picker__gradient\" *ngIf=\"withGradient$ | async\"></div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\nimport { isDate } from '../../../../declarations/functions/is-date.function';\nimport { sanitizeDate } from '../../../../declarations/functions/sanitize-date.function';\nimport { DatePickerStateService } from '../../services/date-picker-state.service';\n\nconst DEFAULT_CURRENT_DATE: Date = dateClearTime(new Date());\n\n@Component({\n  selector: 'pupa-date-picker-simple-time',\n  templateUrl: './date-picker-simple-time.component.html',\n  styleUrls: ['./date-picker-simple-time.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerSimpleTimeComponent implements OnChanges {\n  @Input() public baseDate: Date = DEFAULT_CURRENT_DATE;\n  public readonly baseDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(DEFAULT_CURRENT_DATE);\n\n  public readonly hours$: BehaviorSubject<number> = this.datePickerStateService.hours$;\n  public readonly minutes$: BehaviorSubject<number> = this.datePickerStateService.minutes$;\n  public readonly seconds$: BehaviorSubject<number> = this.datePickerStateService.seconds$;\n\n  @Output() private readonly selectedHours: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedMinutes: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedSeconds: EventEmitter<number> = new EventEmitter<number>();\n\n  public readonly withSeconds$: BehaviorSubject<boolean> = this.datePickerStateService.withSeconds$;\n\n  public readonly baseDateNextMont$: Observable<Date> = this.baseDate$.pipe(\n    map((baseDate: Date) => {\n      const currentMonth: number = baseDate.getMonth();\n      const nextMonth: number = currentMonth + 1;\n      const currentYear: number = baseDate.getFullYear();\n      return dateClearTime(new Date(currentYear, nextMonth, 1));\n    })\n  );\n\n  constructor(private readonly datePickerStateService: DatePickerStateService) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processBaseDateChange(changes?.baseDate);\n  }\n\n  public selectHours(hour: number): void {\n    this.selectedHours.emit(hour);\n  }\n\n  public selectMinutes(minute: number): void {\n    this.selectedMinutes.emit(minute);\n  }\n\n  public selectSeconds(second: number): void {\n    this.selectedSeconds.emit(second);\n  }\n\n  private processBaseDateChange(change: ComponentChange<this, Date>): void {\n    const updatedValue: Date | undefined = change?.currentValue;\n\n    if (isNil(updatedValue) || !isDate(updatedValue)) {\n      return;\n    }\n    const sanitizedDate: Date = sanitizeDate(updatedValue);\n    const sanitizedDateWithClearedTime: Date = dateClearTime(sanitizedDate);\n    this.baseDate$.next(sanitizedDateWithClearedTime);\n  }\n}\n","<div class=\"container\">\n  <div class=\"calendar\">\n    <pupa-date-picker-simple [baseDate]=\"baseDate$ | async\"></pupa-date-picker-simple>\n  </div>\n  <div class=\"time\" [class.seconds]=\"withSeconds$ | async\">\n    <pupa-time-picker-simple\n      [withGradient]=\"true\"\n      [withSeconds]=\"withSeconds$ | async\"\n      [chosenHours]=\"hours$ | async\"\n      [chosenMinutes]=\"minutes$ | async\"\n      [chosenSeconds]=\"seconds$ | async\"\n      (selectedHours)=\"selectHours($event)\"\n      (selectedMinutes)=\"selectMinutes($event)\"\n      (selectedSeconds)=\"selectSeconds($event)\"\n    ></pupa-time-picker-simple>\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterFalsy, filterNotNil, filterTruthy, isEqual, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, skip, switchMap } from 'rxjs/operators';\nimport { DatePickerPreviewMode } from '../../../../declarations/types/date-picker-preview-mode.type';\nimport { DatePickerSelectionMode } from '../../../../declarations/types/date-picker-selection-mode.type';\nimport { dateClearTime } from '../../../../declarations/functions/date-clear-time.function';\nimport { isDate } from '../../../../declarations/functions/is-date.function';\nimport { sanitizeDate } from '../../../../declarations/functions/sanitize-date.function';\nimport { DatePickerStateService } from '../../services/date-picker-state.service';\n\nconst VALID_DATES_COUNT: number = 2;\nconst DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME: Date = dateClearTime(new Date());\n\n@Component({\n  selector: 'pupa-date-picker',\n  templateUrl: './date-picker.component.html',\n  styleUrls: ['./date-picker.component.scss'],\n  providers: [DatePickerStateService],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerComponent implements OnChanges, OnDestroy {\n  public readonly baseDate$: BehaviorSubject<Date> = new BehaviorSubject<Date>(DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME);\n\n  @Input() public selectionMode: DatePickerSelectionMode = 'range';\n  private readonly selectionMode$: BehaviorSubject<DatePickerSelectionMode> =\n    this.datePickerStateService.selectionMode$;\n\n  @Input() public readonly selectedDate: Date;\n  public readonly selectedDate$: BehaviorSubject<Date> = this.datePickerStateService.selectedDate$;\n\n  @Input() public readonly selectedRange: Date[];\n  public readonly selectedRange$: BehaviorSubject<Date[]> = this.datePickerStateService.selectedRange$;\n\n  @Input() public readonly previewMode: DatePickerPreviewMode;\n  public readonly previewMode$: BehaviorSubject<DatePickerPreviewMode> = this.datePickerStateService.previewMode$;\n\n  @Input() public readonly withSeconds: boolean = false;\n  public readonly withSeconds$: BehaviorSubject<boolean> = this.datePickerStateService.withSeconds$;\n\n  @Input() public readonly hours: number = null;\n  public readonly hours$: BehaviorSubject<number> = this.datePickerStateService.hours$;\n\n  @Input() public readonly minutes: number = null;\n  public readonly minutes$: BehaviorSubject<number> = this.datePickerStateService.minutes$;\n\n  @Input() public readonly seconds: number = null;\n  public readonly seconds$: BehaviorSubject<number> = this.datePickerStateService.seconds$;\n\n  @Input() public readonly isBackDating: boolean = true;\n  public readonly isBackDating$: BehaviorSubject<boolean> = this.datePickerStateService.isBackDating$;\n\n  @Input() public readonly availableEndDate: Date | number = Infinity;\n  public readonly availableEndDate$: BehaviorSubject<Date | number> = this.datePickerStateService.availableEndDate$;\n\n  @Output() public readonly date: EventEmitter<Date> = new EventEmitter<Date>();\n  @Output() public readonly range: EventEmitter<[Date, Date]> = new EventEmitter<[Date, Date]>();\n\n  @Output() private readonly selectedHours: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedMinutes: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedSeconds: EventEmitter<number> = new EventEmitter<number>();\n\n  public readonly isSelectionModeDate$: Observable<boolean> = this.datePickerStateService.isSelectionModeDate$;\n  public readonly hoveredDate$: BehaviorSubject<Date> = this.datePickerStateService.hoveredDate$;\n\n  private readonly subscription: Subscription = new Subscription();\n  constructor(private readonly datePickerStateService: DatePickerStateService) {\n    this.subscription.add(this.handleSelectedDateForEmitting()).add(this.handleSelectedRangeForEmitting());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSelectionModeChange(changes?.selectionMode);\n    this.processSelectedDateChange(changes?.selectedDate);\n    this.processSelectedRangeChange(changes?.selectedRange);\n    this.processPreviewModeChange(changes?.previewMode);\n    this.processWithSecondsChange(changes?.withSeconds);\n    this.processHoursChange(changes?.hours);\n    this.processMinutesChange(changes?.minutes);\n    this.processSecondsChange(changes?.seconds);\n    this.processIsBackDatingChange(changes?.isBackDating);\n    this.processAvailableEndDateChange(changes?.availableEndDate);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('mousedown', ['$event'])\n  @HostListener('mousemove', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  public mouseDownAndTouchStartHandler(event: Event): void {\n    event.stopPropagation();\n  }\n\n  @HostListener('window:mousemove')\n  @HostListener('window:click')\n  @HostListener('window:touchstart', ['$event'])\n  public processWindowClick(): void {\n    this.hoveredDate$.next(null);\n  }\n\n  public selectHours(hour: number): void {\n    this.selectedHours.emit(hour);\n  }\n\n  public selectMinutes(minute: number): void {\n    this.selectedMinutes.emit(minute);\n  }\n\n  public selectSeconds(second: number): void {\n    this.selectedSeconds.emit(second);\n  }\n\n  private processSelectionModeChange(change: ComponentChange<this, DatePickerSelectionMode>): void {\n    const updatedValue: DatePickerSelectionMode | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectionMode$.next(updatedValue);\n  }\n\n  private processPreviewModeChange(change: ComponentChange<this, DatePickerPreviewMode>): void {\n    const updatedValue: DatePickerPreviewMode | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.previewMode$.next(updatedValue);\n  }\n\n  private processWithSecondsChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.withSeconds$.next(updatedValue);\n  }\n\n  private processHoursChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.hours$.next(updatedValue);\n  }\n\n  private processMinutesChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.minutes$.next(updatedValue);\n  }\n\n  private processSecondsChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.seconds$.next(updatedValue);\n  }\n\n  private processIsBackDatingChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.isBackDating$.next(updatedValue);\n  }\n\n  private processAvailableEndDateChange(change: ComponentChange<this, Date | number>): void {\n    const updatedValue: Date | number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.availableEndDate$.next(updatedValue);\n  }\n\n  private processSelectedDateChange(change: ComponentChange<this, Date>): void {\n    const updatedValue: Date | undefined = change?.currentValue;\n\n    if (!isDate(updatedValue)) {\n      this.selectedDate$.next(null);\n      return;\n    }\n\n    const sanitizedDate: Date = sanitizeDate(updatedValue);\n    const sanitizedDateWithClearedTime: Date = dateClearTime(sanitizedDate);\n    this.selectedDate$.next(sanitizedDateWithClearedTime);\n    this.baseDate$.next(sanitizedDateWithClearedTime);\n  }\n\n  private processSelectedRangeChange(change: ComponentChange<this, Date[]>): void {\n    const updatedValue: Date[] | undefined = change?.currentValue;\n\n    const isNullValues: boolean = updatedValue?.every((value: Date) => isNil(value));\n    if (isNullValues) {\n      this.selectedRange$.next([]);\n      return;\n    }\n\n    const parsedArray: Date[] = String(updatedValue)\n      .split(',')\n      .map((arrayItem: string) => new Date(Date.parse(arrayItem)))\n      .filter((rangeDate: Date) => isDate(rangeDate));\n    if (!Array.isArray(parsedArray)) {\n      return;\n    }\n\n    const sanitizedRange: Date[] = parsedArray\n      .filter((rangeDate: Date) => isDate(rangeDate))\n      .map((rangeDate: Date) => dateClearTime(rangeDate));\n    if (Object.is(sanitizedRange.length, 0)) {\n      return;\n    }\n\n    this.selectedRange$.next(sanitizedRange);\n    this.baseDate$.next(sanitizedRange[0]);\n  }\n\n  private handleSelectedDateForEmitting(): Subscription {\n    return this.isSelectionModeDate$\n      .pipe(\n        filterNotNil(),\n        filterTruthy(),\n        switchMap(() => this.selectedDate$),\n        // this.date should emit values on user selection only.\n        // The first emitted value into this.selectedDate$ is BehaviorSubject's default value (null).\n        // The second emitted value into this.selectedDate$ is current value from the pupa-input-date control.\n        // Subsequent emitted values are those that the user has manually selected.\n        skip(2),\n        distinctUntilChanged(this.datePickerStateService.isSameDate),\n        filterNotNil()\n      )\n      .subscribe((selectedDate: Date) => this.date.emit(selectedDate));\n  }\n\n  private handleSelectedRangeForEmitting(): Subscription {\n    return this.isSelectionModeDate$\n      .pipe(\n        filterNotNil(),\n        filterFalsy(),\n        switchMap(() => this.selectedRange$),\n        map((range: [Date, Date]) => {\n          const sortFunction: (dateA: Date, dateB: Date) => number = (dateA: Date, dateB: Date) =>\n            dateA.valueOf() - dateB.valueOf();\n          return [...range].sort(sortFunction);\n        }),\n        distinctUntilChanged((previousValue: Date[], currentValue: Date[]) => isEqual(previousValue, currentValue)),\n        filter(\n          (selectedRangeDates: Date[]) =>\n            Array.isArray(selectedRangeDates) && Object.is(selectedRangeDates.length, VALID_DATES_COUNT)\n        )\n      )\n      .subscribe((selectedRange: [Date, Date]) => this.range.emit(selectedRange));\n  }\n}\n","<ng-container [ngSwitch]=\"previewMode$ | async\">\n  <ng-container *ngSwitchCase=\"'double'\" [ngTemplateOutlet]=\"doubleCalendar\"></ng-container>\n  <ng-container *ngSwitchCase=\"'simple-time'\" [ngTemplateOutlet]=\"simpleTimeCalendar\"></ng-container>\n  <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"simpleCalendar\"></ng-container>\n</ng-container>\n\n<ng-template #doubleCalendar>\n  <div class=\"date-picker double\">\n    <pupa-date-picker-double [baseDate]=\"baseDate$ | async\"></pupa-date-picker-double>\n  </div>\n</ng-template>\n\n<ng-template #simpleTimeCalendar>\n  <div class=\"date-picker simple-time\" [class.with-seconds]=\"withSeconds$ | async\">\n    <pupa-date-picker-simple-time\n      [baseDate]=\"baseDate$ | async\"\n      (selectedHours)=\"selectHours($event)\"\n      (selectedMinutes)=\"selectMinutes($event)\"\n      (selectedSeconds)=\"selectSeconds($event)\"\n    ></pupa-date-picker-simple-time>\n  </div>\n</ng-template>\n\n<ng-template #simpleCalendar>\n  <div class=\"date-picker simple\">\n    <pupa-date-picker-simple [baseDate]=\"baseDate$ | async\"></pupa-date-picker-simple>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { TimePickerStateService } from '../../services/time-picker-state.service';\n\n@Component({\n  selector: 'pupa-time-picker',\n  templateUrl: './time-picker.component.html',\n  styleUrls: ['./time-picker.component.scss'],\n  providers: [TimePickerStateService],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePickerComponent implements OnChanges {\n  @Input() public readonly withSeconds: boolean = false;\n  public readonly withSeconds$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly hours: number = null;\n  public readonly hours$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  @Input() public readonly minutes: number = null;\n  public readonly minutes$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  @Input() public readonly seconds: number = null;\n  public readonly seconds$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  @Output() private readonly selectedHours: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedMinutes: EventEmitter<number> = new EventEmitter<number>();\n  @Output() private readonly selectedSeconds: EventEmitter<number> = new EventEmitter<number>();\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processWithSecondsChange(changes?.withSeconds);\n    this.processHoursChange(changes?.hours);\n    this.processMinutesChange(changes?.minutes);\n    this.processSecondsChange(changes?.seconds);\n  }\n\n  @HostListener('click', ['$event'])\n  @HostListener('mousedown', ['$event'])\n  @HostListener('mousemove', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  public mouseDownAndTouchStartHandler(event: Event): void {\n    event.stopPropagation();\n  }\n\n  public selectHours(hour: number): void {\n    this.selectedHours.emit(hour);\n  }\n\n  public selectMinutes(minute: number): void {\n    this.selectedMinutes.emit(minute);\n  }\n\n  public selectSeconds(second: number): void {\n    this.selectedSeconds.emit(second);\n  }\n\n  private processWithSecondsChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.withSeconds$.next(updatedValue);\n  }\n\n  private processHoursChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.hours$.next(updatedValue);\n  }\n\n  private processMinutesChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.minutes$.next(updatedValue);\n  }\n\n  private processSecondsChange(change: ComponentChange<this, number>): void {\n    const updatedValue: number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.seconds$.next(updatedValue);\n  }\n}\n","<div class=\"time-picker\" [class.with-seconds]=\"withSeconds$ | async\">\n  <pupa-time-picker-simple\n    [withSeconds]=\"withSeconds$ | async\"\n    [chosenHours]=\"hours$ | async\"\n    [chosenMinutes]=\"minutes$ | async\"\n    [chosenSeconds]=\"seconds$ | async\"\n    (selectedHours)=\"selectHours($event)\"\n    (selectedMinutes)=\"selectMinutes($event)\"\n    (selectedSeconds)=\"selectSeconds($event)\"\n  ></pupa-time-picker-simple>\n</div>\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\nimport { PupaIconsModule, iosArrowBackIcon, iosArrowForwardIcon } from '@bimeister/pupakit.icons';\nimport { DatePickerDoubleComponent } from './components/date-picker-double/date-picker-double.component';\nimport { DatePickerMonthsComponent } from './components/date-picker-months/date-picker-months.component';\nimport { DatePickerSimpleTimeComponent } from './components/date-picker-simple-time/date-picker-simple-time.component';\nimport { DatePickerSimpleComponent } from './components/date-picker-simple/date-picker-simple.component';\nimport { DatePickerYearsComponent } from './components/date-picker-years/date-picker-years.component';\nimport { DatePickerComponent } from './components/date-picker/date-picker.component';\nimport { TimePickerDigitsComponent } from './components/time-picker-digits/time-picker-digits.component';\nimport { TimePickerSimpleComponent } from './components/time-picker-simple/time-picker-simple.component';\nimport { TimePickerComponent } from './components/time-picker/time-picker.component';\n\nconst EXPORTS: any[] = [DatePickerComponent, TimePickerComponent];\n\nconst DECLARATIONS: any[] = [\n  DatePickerComponent,\n  DatePickerSimpleComponent,\n  DatePickerDoubleComponent,\n  DatePickerYearsComponent,\n  DatePickerMonthsComponent,\n  TimePickerComponent,\n  TimePickerSimpleComponent,\n  TimePickerDigitsComponent,\n  DatePickerSimpleTimeComponent,\n];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [\n    CommonModule,\n    ScrollingModule,\n    PupaPipesModule,\n    PupaIconsModule.forFeature([iosArrowBackIcon, iosArrowForwardIcon]),\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [...EXPORTS],\n})\nexport class PupaDateTimePickerModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { DayOfWeek } from '../../../declarations/enums/day-of-week.enum';\n\n@Injectable()\nexport class DaySelectorStateService {\n  private readonly daySelectionStateMap: Map<DayOfWeek, boolean> = new Map<DayOfWeek, boolean>([\n    [DayOfWeek.Monday, false],\n    [DayOfWeek.Tuesday, false],\n    [DayOfWeek.Wednesday, false],\n    [DayOfWeek.Thursday, false],\n    [DayOfWeek.Friday, false],\n    [DayOfWeek.Saturday, false],\n    [DayOfWeek.Sunday, false],\n  ]);\n\n  private readonly daysWithSelectionStateChanged$: BehaviorSubject<DayOfWeek[]> = new BehaviorSubject<DayOfWeek[]>([]);\n\n  public readonly isDisabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly daysOfWeek$: Observable<Map<DayOfWeek, boolean>> = this.daysWithSelectionStateChanged$.pipe(\n    tap((selectionChangedDays: DayOfWeek[]) => {\n      selectionChangedDays.forEach((day: DayOfWeek) => {\n        this.daySelectionStateMap.set(day, !this.daySelectionStateMap.get(day));\n      });\n    }),\n    map(() => this.daySelectionStateMap)\n  );\n\n  public set disabled(isDisabled: boolean) {\n    this.isDisabled$.next(isDisabled);\n  }\n\n  public changeDaysSelectionState(days: DayOfWeek[]): void {\n    this.daysWithSelectionStateChanged$.next(days);\n  }\n}\n","import { DayOfWeek } from '../enums/day-of-week.enum';\nimport { DaySelectorConfig } from '../interfaces/day-selector-config.interface';\n\nexport const DEFAULT_DAY_SELECTOR_CONFIG: DaySelectorConfig = {\n  translates: {\n    en: {\n      [DayOfWeek.Monday]: 'Mo',\n      [DayOfWeek.Tuesday]: 'Tu',\n      [DayOfWeek.Wednesday]: 'We',\n      [DayOfWeek.Thursday]: 'Th',\n      [DayOfWeek.Friday]: 'Fr',\n      [DayOfWeek.Saturday]: 'Sa',\n      [DayOfWeek.Sunday]: 'Su',\n    },\n  },\n};\n","import { InjectionToken } from '@angular/core';\nimport { DaySelectorConfig } from '../../declarations/interfaces/day-selector-config.interface';\n\nexport const DAY_SELECTOR_CONFIG_TOKEN: InjectionToken<DaySelectorConfig> = new InjectionToken<DaySelectorConfig>(\n  'DAY_SELECTOR_CONFIG_TOKEN'\n);\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DEFAULT_LOCALE } from '@bimeister/pupakit.common';\nimport { DaySelectorConfig } from '../../../declarations/interfaces/day-selector-config.interface';\nimport { DayOfWeek } from '../../../declarations/enums/day-of-week.enum';\nimport { DEFAULT_DAY_SELECTOR_CONFIG } from '../../../declarations/constants/default-day-selector-config.const';\nimport { DAY_SELECTOR_CONFIG_TOKEN } from '../../../declarations/tokens/day-selector-config.token';\n\n@Injectable()\nexport class LocaleDayFormatterService {\n  private readonly translates: Record<string, Record<DayOfWeek, string>>;\n\n  private readonly currentLocale$: BehaviorSubject<string> = new BehaviorSubject<string>(DEFAULT_LOCALE);\n\n  public readonly localeNames$: Observable<Record<DayOfWeek, string>> = this.currentLocale$.pipe(\n    map((locale: string) => this.translates[locale])\n  );\n\n  constructor(@Optional() @Inject(DAY_SELECTOR_CONFIG_TOKEN) daySelectorConfig?: DaySelectorConfig) {\n    const config: DaySelectorConfig = !isNil(daySelectorConfig) ? daySelectorConfig : DEFAULT_DAY_SELECTOR_CONFIG;\n    this.translates = config.translates;\n  }\n\n  public set locale(value: string) {\n    if (isNil(this.translates[value])) throw new Error('No translates for current locale');\n\n    this.currentLocale$.next(value);\n  }\n}\n","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  OnChanges,\n  SimpleChanges,\n  Renderer2,\n  SimpleChange,\n} from '@angular/core';\nimport { DaySelectorSize } from '../../../../declarations/types/day-selector-size.type';\nimport { isNil } from '@bimeister/utilities';\n\n@Component({\n  selector: 'pupa-day-selector-item',\n  templateUrl: './day-selector-item.component.html',\n  styleUrls: ['./day-selector-item.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaySelectorItemComponent implements OnChanges {\n  @Input() public name: string;\n  @Input() public size: DaySelectorSize;\n\n  @Input() public selected: boolean = false;\n  @Output() public readonly selectedStateChange: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input() public disabled: boolean = false;\n\n  constructor(private readonly hostElement: ElementRef, private readonly renderer: Renderer2) {}\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    const size: SimpleChange = changes.size;\n    if (!isNil(size) && size.previousValue !== size.currentValue) {\n      const element: HTMLElement = this.hostElement.nativeElement;\n      this.renderer.removeClass(element, size.previousValue);\n      this.renderer.addClass(element, size.currentValue);\n    }\n  }\n\n  public onMouseDown(event: MouseEvent): void {\n    event.preventDefault();\n    if (this.disabled) {\n      return;\n    }\n    this.selectedStateChange.next();\n  }\n\n  public onKeyDown(event: KeyboardEvent): void {\n    const ENTER_EVENT_CODE: string = 'Enter';\n    if (this.disabled || event.code !== ENTER_EVENT_CODE) {\n      return;\n    }\n    this.selectedStateChange.next();\n  }\n}\n","<div\n  class=\"day-selector-item\"\n  tabindex=\"0\"\n  [class.selected]=\"selected\"\n  [class.disabled]=\"disabled\"\n  [class.day-selector-item_small]=\"size === 'small'\"\n  (mousedown)=\"onMouseDown($event)\"\n  (keydown)=\"onKeyDown($event)\"\n>\n  <div class=\"day-selector-item__content\">\n    {{ name }}\n  </div>\n</div>\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { combineLatest, Observable } from 'rxjs';\nimport { isNil } from '@bimeister/utilities';\nimport { isEmpty } from '@bimeister/utilities/common';\nimport { map, tap } from 'rxjs/operators';\nimport { DaySelectorStateService } from '../../services/day-selector-state.service';\nimport { LocaleDayFormatterService } from '../../services/locale-day-formatter.service';\nimport { DaySelectorSize } from '../../../../declarations/types/day-selector-size.type';\nimport { DaySelectorItem } from '../../../../declarations/interfaces/day-selector-item.interface';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\nimport { OnTouchedCallback } from '../../../../declarations/types/on-touched-callback.type';\nimport { DayOfWeek } from '../../../../declarations/enums/day-of-week.enum';\n\n@Component({\n  selector: 'pupa-day-selector',\n  templateUrl: './day-selector.component.html',\n  styleUrls: ['./day-selector.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [DaySelectorStateService, LocaleDayFormatterService],\n})\nexport class DaySelectorComponent implements ControlValueAccessor {\n  @Input() public size: DaySelectorSize = 'large';\n\n  @Input() public set locale(value: string) {\n    this.localeDateFormatter.locale = value;\n  }\n\n  public readonly isDisabled$: Observable<boolean> = this.daySelectorState.isDisabled$;\n  public readonly selectorItems$: Observable<DaySelectorItem[]> = combineLatest([\n    this.daySelectorState.daysOfWeek$,\n    this.localeDateFormatter.localeNames$,\n  ]).pipe(\n    map(([daysOfWeek, localeNames]: [Map<DayOfWeek, boolean>, Record<DayOfWeek, string>]) => {\n      const selectorItems: DaySelectorItem[] = [];\n      daysOfWeek.forEach((isSelected: boolean, day: DayOfWeek) => {\n        selectorItems.push({\n          isSelected,\n          key: day,\n          localeName: localeNames[day],\n        });\n      });\n      return selectorItems;\n    }),\n    tap(this.handleSelectedDaysChanged.bind(this))\n  );\n\n  private onChangeCallback: OnChangeCallback<DayOfWeek[]>;\n  private onTouchedCallback: OnTouchedCallback;\n\n  constructor(\n    private readonly daySelectorState: DaySelectorStateService,\n    private readonly localeDateFormatter: LocaleDayFormatterService,\n    ngControl: NgControl\n  ) {\n    if (!isNil(ngControl)) {\n      ngControl.valueAccessor = this;\n    }\n  }\n\n  public changeDaySelectionState(day: DayOfWeek): void {\n    this.daySelectorState.changeDaysSelectionState([day]);\n  }\n\n  public writeValue(days: DayOfWeek[]): void {\n    this.daySelectorState.changeDaysSelectionState(isEmpty(days) ? [] : days);\n  }\n\n  public registerOnChange(onChangeCallback: OnChangeCallback<DayOfWeek[]>): void {\n    this.onChangeCallback = onChangeCallback;\n  }\n\n  public registerOnTouched(onTouchedCallback: OnTouchedCallback): void {\n    this.onTouchedCallback = onTouchedCallback;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.daySelectorState.disabled = isDisabled;\n  }\n\n  public trackByFunc(_: number, item: DaySelectorItem): DayOfWeek {\n    return item.key;\n  }\n\n  private handleSelectedDaysChanged(selectorItems: DaySelectorItem[]): void {\n    if (typeof this.onTouchedCallback === 'function') {\n      this.onTouchedCallback();\n    }\n\n    if (typeof this.onChangeCallback === 'function') {\n      const selectedDays: DayOfWeek[] = selectorItems\n        .filter((item: DaySelectorItem) => item.isSelected)\n        .map((item: DaySelectorItem) => item.key);\n\n      this.onChangeCallback(selectedDays);\n    }\n  }\n}\n","<pupa-day-selector-item\n  *ngFor=\"let item of selectorItems$ | async; trackBy: trackByFunc\"\n  [name]=\"item.localeName\"\n  [selected]=\"item.isSelected\"\n  (selectedStateChange)=\"changeDaySelectionState(item.key)\"\n  [disabled]=\"isDisabled$ | async\"\n  [size]=\"size\"\n></pupa-day-selector-item>\n","import { NgModule } from '@angular/core';\nimport { DaySelectorComponent } from './components/day-selector/day-selector.component';\nimport { DaySelectorItemComponent } from './components/day-selector-item/day-selector-item.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  declarations: [DaySelectorComponent, DaySelectorItemComponent],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule],\n  exports: [DaySelectorComponent],\n})\nexport class PupaDaySelectorModule {}\n","import { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { CdkPortal } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  ViewEncapsulation,\n  ViewRef,\n} from '@angular/core';\nimport { isNil, VOID } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\nimport { DroppableHorizontalPosition } from '../../declarations/types/droppable-horizontal-position.type';\nimport { DroppableVerticalPosition } from '../../declarations/types/droppable-vertical-position.type';\nimport { DroppableWidth } from '../../declarations/types/droppable-width.type';\n\n@Component({\n  selector: 'pupa-droppable',\n  styleUrls: ['./droppable.component.scss'],\n  templateUrl: './droppable.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DroppableComponent implements OnDestroy {\n  @Input() public closeOnContentClick: boolean = false;\n  @Input() public horizontalPosition: DroppableHorizontalPosition = 'start';\n  @Input() public verticalPosition: DroppableVerticalPosition = 'bottom';\n  @Input() public offsetYPx: number = 10;\n  @Input() public viewportMarginPx: number = 15;\n  @Input() public hasBackdrop: boolean = false;\n  @Input() public widthType: DroppableWidth = 'fit-content';\n\n  public triggerRef: ElementRef<HTMLElement>;\n  public contentRef: CdkPortal;\n  private overlayRef: OverlayRef;\n  private viewRef: ViewRef;\n\n  public isOpened: boolean = false;\n  public readonly isNativeClick$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  constructor(private readonly overlay: Overlay) {}\n\n  public beforeOpen: () => Observable<void> = () => of(VOID);\n  public beforeClose: () => Observable<void> = () => of(VOID);\n\n  public ngOnDestroy(): void {\n    this.close();\n  }\n\n  @HostListener('click')\n  public open(): void {\n    if (isNil(this.triggerRef) || isNil(this.contentRef)) {\n      return;\n    }\n\n    this.isNativeClick$.next(true);\n\n    this.beforeOpen()\n      .pipe(\n        take(1),\n        switchMap(() => {\n          this.overlayRef = this.overlay.create(this.getOverlayConfig());\n          this.viewRef = this.overlayRef.attach(this.contentRef);\n\n          this.isOpened = true;\n          this.viewRef.markForCheck();\n          return this.overlayRef.backdropClick();\n        })\n      )\n      .subscribe(() => this.close());\n  }\n\n  @HostListener('document:wheel')\n  @HostListener('document:mousedown')\n  @HostListener('document:click')\n  public mouseEventsHandler(): void {\n    this.isNativeClick$.pipe(take(1)).subscribe((isNativeClick: boolean) => {\n      if (isNativeClick) {\n        this.isNativeClick$.next(false);\n        return;\n      }\n\n      if (this.hasBackdrop) {\n        return;\n      }\n\n      this.close();\n    });\n  }\n\n  public close(): void {\n    if (isNil(this.overlayRef) || isNil(this.viewRef)) {\n      return;\n    }\n\n    this.beforeClose()\n      .pipe(take(1))\n      .subscribe(() => {\n        this.isOpened = false;\n        this.viewRef.markForCheck();\n        this.overlayRef.dispose();\n      });\n  }\n\n  private getOverlayConfig(): OverlayConfig {\n    const positionStrategy: PositionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.triggerRef)\n      .withPush(true)\n      .withViewportMargin(this.viewportMarginPx)\n      .withPositions([\n        {\n          originX: this.horizontalPosition,\n          originY: this.verticalPosition,\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: this.offsetYPx,\n        },\n      ]);\n\n    return new OverlayConfig({\n      positionStrategy,\n      hasBackdrop: this.hasBackdrop,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n    });\n  }\n}\n","<ng-content></ng-content>\n","import { CdkPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, Host, ViewChild } from '@angular/core';\nimport { DroppableComponent } from '../../../components/droppable/droppable.component';\n\n@Directive()\nexport abstract class DroppableContent implements AfterViewInit {\n  @ViewChild(CdkPortal) public contentRef: CdkPortal;\n\n  public get isOpened(): boolean {\n    return this.droppable.isOpened;\n  }\n\n  constructor(@Host() protected readonly droppable: DroppableComponent) {}\n\n  public ngAfterViewInit(): void {\n    this.droppable.contentRef = this.contentRef;\n  }\n\n  public mouseDownHandler(event: MouseEvent): void {\n    if (!this.droppable.closeOnContentClick) {\n      event.stopPropagation();\n    }\n  }\n\n  public mouseWheelHandler(event: WheelEvent): void {\n    event.stopPropagation();\n  }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\nimport { DroppableContent } from '../../declarations/classes/abstract/droppable-content.abstract';\nimport { DroppableWidth } from '../../declarations/types/droppable-width.type';\n\n@Component({\n  selector: 'pupa-droppable-content',\n  styleUrls: ['./droppable-content.component.scss'],\n  templateUrl: './droppable-content.component.html',\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('openClose', [\n      state('open', style({ transform: 'translateY(0)', opacity: 1 })),\n      state('closed', style({ transform: 'translateY(-10px)', opacity: 0 })),\n      transition('closed => open', [animate('150ms')]),\n    ]),\n  ],\n})\nexport class DroppableContentComponent extends DroppableContent {\n  public get widthType(): DroppableWidth {\n    return this.droppable.widthType;\n  }\n\n  public get widthClassName(): string {\n    return `width-${this.widthType}`;\n  }\n\n  public get triggerWidthPx(): number {\n    return this.droppable.triggerRef.nativeElement.getBoundingClientRect().width;\n  }\n}\n","<ng-template cdk-portal>\n  <div\n    class=\"droppable-content\"\n    [ngClass]=\"widthClassName\"\n    [style.width.px]=\"widthType === 'fit-content' ? 'fit-content' : triggerWidthPx\"\n    (mousedown)=\"mouseDownHandler($event)\"\n    (wheel)=\"mouseWheelHandler($event)\"\n    [@openClose]=\"isOpened ? 'open' : 'closed'\"\n  >\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { Observable, Subscription } from 'rxjs';\nimport { DroppableLegacyHorizontalPosition } from '../../declarations/types/droppable-legacy-horizontal-position.type';\n\nconst OFFSET_TOP_PX: number = 4;\n\n@Component({\n  selector: 'pupa-droppable-legacy',\n  templateUrl: './droppable-legacy.component.html',\n  styleUrls: ['./droppable-legacy.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DroppableLegacyComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('dropdown', { static: false }) public dropdownRef: ElementRef<HTMLDivElement>;\n  public get dropdown(): HTMLDivElement | null {\n    return !isNil(this.dropdownRef) && !isNil(this.dropdownRef.nativeElement) ? this.dropdownRef.nativeElement : null;\n  }\n\n  @Input() public anchor: HTMLElement;\n  @Input() public positionChange$: Observable<void>;\n  @Input() public horizontalPosition: DroppableLegacyHorizontalPosition = 'left';\n  @Input() public maxWidth: number = null;\n  @Input() public set open(value: boolean) {\n    this._open = value;\n    globalThis.requestAnimationFrame(() => {\n      this.shown = value;\n      this.checkPosition();\n    });\n  }\n  public get open(): boolean {\n    return this._open;\n  }\n\n  public shown: boolean = false;\n  public topPx: number = 0;\n  public leftPx: number = 0;\n\n  private readonly subscription: Subscription = new Subscription();\n  private anchorOnClickHandlerUnlistener: VoidFunction;\n  private _open: boolean = false;\n  private isMouseTargetWheel: boolean = false;\n  private anchorClientRect: DOMRect;\n  private dropdownClientRect: DOMRect;\n\n  constructor(protected readonly changeDetectorRef: ChangeDetectorRef, protected readonly renderer: Renderer2) {}\n\n  public ngAfterViewInit(): void {\n    if (isNil(this.anchor)) {\n      return;\n    }\n\n    this.anchorOnClickHandlerUnlistener = this.renderer.listen(this.anchor, 'click', this.anchorOnClickHandler);\n\n    if (!isNil(this.positionChange$)) {\n      this.subscription.add(this.positionChange$.subscribe(() => globalThis.requestAnimationFrame(this.checkPosition)));\n    }\n    this.checkPosition();\n  }\n\n  public ngOnDestroy(): void {\n    if (isNil(this.anchor)) {\n      return;\n    }\n    this.anchorOnClickHandlerUnlistener();\n    this.subscription.unsubscribe();\n  }\n\n  public anchorOnClickHandler = (): void => {\n    this.toggle(true);\n  };\n\n  public toggle(value?: boolean): void {\n    this.open = isNil(value) ? !this.open : value;\n    this.changeDetectorRef.markForCheck();\n    this.checkPosition();\n  }\n\n  @HostListener('wheel')\n  public targetWheelEvent(): void {\n    this.isMouseTargetWheel = true;\n  }\n\n  @HostListener('window:resize')\n  @HostListener('window:wheel')\n  public close(): void {\n    if (!this.open) {\n      return;\n    }\n\n    if (this.isMouseTargetWheel) {\n      this.isMouseTargetWheel = false;\n      return;\n    }\n    this.toggle(false);\n  }\n\n  @HostListener('document:mouseup', ['$event'])\n  public clickOutsideCheck(event: MouseEvent): void {\n    if (isNil(this.anchor) || isNil(this.dropdown)) {\n      return;\n    }\n\n    const clickedInside: boolean =\n      this.anchor.contains(event.target as Node) || this.dropdownRef.nativeElement.contains(event.target as Node);\n\n    if (!clickedInside) {\n      this.toggle(false);\n    }\n  }\n\n  public readonly checkPosition = (): void => {\n    if (isNil(this.anchor) || isNil(this.dropdown)) {\n      return;\n    }\n\n    this.anchorClientRect = this.anchor.getBoundingClientRect();\n    this.dropdownClientRect = this.dropdown.getBoundingClientRect();\n\n    this.setMaxWidth();\n    this.setTopPx();\n    this.setLeftPx();\n\n    this.changeDetectorRef.markForCheck();\n  };\n\n  private setMaxWidth(): void {\n    if (!isNil(this.maxWidth)) {\n      this.renderer.setStyle(this.dropdown, 'maxWidth', `${this.maxWidth}px`);\n      return;\n    }\n\n    this.renderer.setStyle(this.dropdown, 'width', `${this.anchorClientRect.width}px`);\n  }\n\n  private setTopPx(): void {\n    const dropDownBottom: number =\n      this.anchorClientRect.top + this.anchorClientRect.height + OFFSET_TOP_PX + this.dropdownClientRect.height;\n\n    this.topPx = dropDownBottom < window.innerHeight ? this.getTopVerticalPosition() : this.getBottomVerticalPosition();\n  }\n\n  private setLeftPx(): void {\n    const dropDownRight: number =\n      this.anchorClientRect.left + this.anchorClientRect.width + this.dropdownClientRect.width;\n\n    switch (this.horizontalPosition) {\n      case 'right':\n        this.leftPx = this.getRightHorizontalPosition();\n        break;\n      case 'left':\n      default:\n        this.leftPx =\n          dropDownRight < window.innerWidth ? this.getLeftHorizontalPosition() : this.getRightHorizontalPosition();\n    }\n  }\n\n  private getTopVerticalPosition(): number {\n    return this.anchorClientRect.top + this.anchorClientRect.height + OFFSET_TOP_PX;\n  }\n\n  private getBottomVerticalPosition(): number {\n    return this.anchorClientRect.top + this.anchorClientRect.height - this.dropdownClientRect.height;\n  }\n\n  private getRightHorizontalPosition(): number {\n    return this.anchorClientRect.left + this.anchorClientRect.width - this.dropdown.offsetWidth;\n  }\n\n  private getLeftHorizontalPosition(): number {\n    return this.anchorClientRect.left;\n  }\n}\n","<div\n  class=\"pupa-dropdown\"\n  *ngIf=\"open\"\n  [class.pupa-dropdown_open]=\"shown\"\n  [style.top.px]=\"topPx\"\n  [style.left.px]=\"leftPx\"\n  (wheel)=\"$event.stopPropagation()\"\n  #dropdown\n>\n  <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { DroppableContent } from '../../declarations/classes/abstract/droppable-content.abstract';\n\n@Component({\n  selector: 'pupa-droppable-native-content',\n  templateUrl: './droppable-native-content.component.html',\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DroppableNativeContentComponent extends DroppableContent {}\n","<ng-template cdk-portal>\n  <div (mousedown)=\"mouseDownHandler($event)\" (wheel)=\"mouseWheelHandler($event)\">\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import { Component, ElementRef, Host } from '@angular/core';\n\nimport { DroppableComponent } from '../droppable/droppable.component';\n\n@Component({\n  selector: 'pupa-droppable-trigger',\n  templateUrl: './droppable-trigger.component.html',\n  styleUrls: ['./droppable-trigger.component.scss'],\n})\nexport class DroppableTriggerComponent {\n  constructor(\n    @Host() private readonly droppable: DroppableComponent,\n    private readonly hostRef: ElementRef<HTMLElement>\n  ) {\n    this.droppable.triggerRef = this.hostRef;\n  }\n}\n","<ng-content></ng-content>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DroppableContentComponent } from './components/droppable-content/droppable-content.component';\nimport { DroppableLegacyComponent } from './components/droppable-legacy/droppable-legacy.component';\nimport { DroppableNativeContentComponent } from './components/droppable-native-content/droppable-native-content.component';\nimport { DroppableTriggerComponent } from './components/droppable-trigger/droppable-trigger.component';\nimport { DroppableComponent } from './components/droppable/droppable.component';\n\n@NgModule({\n  declarations: [\n    DroppableLegacyComponent,\n    DroppableTriggerComponent,\n    DroppableContentComponent,\n    DroppableComponent,\n    DroppableNativeContentComponent,\n  ],\n  imports: [CommonModule, OverlayModule, PortalModule],\n  exports: [\n    DroppableLegacyComponent,\n    DroppableTriggerComponent,\n    DroppableContentComponent,\n    DroppableComponent,\n    DroppableNativeContentComponent,\n  ],\n})\nexport class PupaDroppableModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-form-layout',\n  templateUrl: './form-layout.component.html',\n  styleUrls: ['./form-layout.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormLayoutComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-form-elements-group',\n  templateUrl: './form-elements-group.component.html',\n  styleUrls: ['./form-elements-group.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormElementsGroupComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-form-element',\n  templateUrl: './form-element.component.html',\n  styleUrls: ['./form-element.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormElementComponent {}\n","<ng-content></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { FormLayoutComponent } from './components/form-layout/form-layout.component';\nimport { FormElementsGroupComponent } from './components/form-elements-group/form-elements-group.component';\nimport { FormElementComponent } from './components/form-element/form-element.component';\n\nconst EXPORT_COMPONENTS: Type<unknown>[] = [FormLayoutComponent, FormElementsGroupComponent, FormElementComponent];\n\n@NgModule({\n  declarations: EXPORT_COMPONENTS,\n  imports: [],\n  exports: EXPORT_COMPONENTS,\n})\nexport class PupaFormLayoutModule {}\n","import { isNil } from '@bimeister/utilities';\nimport { getFormattedTimeDigit } from '@bimeister/pupakit.common';\nimport { ParsedTimeData } from '../interfaces/parsed-time-data.interface';\nimport { ParsedDateData } from '../interfaces/parsed-date-data.interface';\nimport { NumericParsedTimeData } from '../types/numeric-parsed-time-data.type';\n\nexport class InputDateTimeHelper {\n  public static getUpdatedValueStringAfterSelectHours(hours: number, inputCurrentValue: string): string {\n    const parsedHours: string = getFormattedTimeDigit(hours);\n    const { minutes, seconds }: Partial<ParsedTimeData> = this.getParsedTimeData(inputCurrentValue);\n\n    return `${parsedHours}:${minutes}:${seconds}`;\n  }\n\n  public static getUpdatedValueStringAfterSelectMinutes(minutes: number, inputCurrentValue: string): string {\n    const parsedMinutes: string = getFormattedTimeDigit(minutes);\n    const { hours, seconds }: Partial<ParsedTimeData> = this.getParsedTimeData(inputCurrentValue);\n\n    return `${hours}:${parsedMinutes}:${seconds}`;\n  }\n\n  public static getUpdatedValueStringAfterSelectSeconds(seconds: number, inputCurrentValue: string): string {\n    const parsedSeconds: string = getFormattedTimeDigit(seconds);\n    const { hours, minutes }: Partial<ParsedTimeData> = this.getParsedTimeData(inputCurrentValue);\n\n    return `${hours}:${minutes}:${parsedSeconds}`;\n  }\n\n  public static getParsedDateData(inputValue: string): ParsedDateData {\n    const defaultDateParts: string[] = ['00', '00', '0000'];\n    const allowedTimePartsLength: number = defaultDateParts.length;\n\n    const convertedDefaultDateParts: string = defaultDateParts.join('.');\n\n    const serializedValue: string = isNil(inputValue) ? convertedDefaultDateParts : inputValue;\n    const parsedDateParts: string[] = serializedValue.split('.');\n\n    const dateParts: string[] = [...parsedDateParts, ...defaultDateParts].slice(0, allowedTimePartsLength);\n\n    return { day: dateParts[0], month: dateParts[1], year: dateParts[2] };\n  }\n\n  public static getParsedNumericTimeData(inputValue: string): NumericParsedTimeData {\n    const { hours, minutes, seconds }: ParsedTimeData = InputDateTimeHelper.getParsedTimeData(inputValue);\n\n    return {\n      hours: Number(hours),\n      minutes: Number(minutes),\n      seconds: Number(seconds),\n    };\n  }\n\n  public static getParsedTimeData(inputValue: string): ParsedTimeData {\n    const defaultTimeParts: string[] = ['00', '00', '00'];\n    const allowedTimePartsLength: number = defaultTimeParts.length;\n\n    const convertedDefaultTimeParts: string = defaultTimeParts.join(':');\n\n    const serializedValue: string = isNil(inputValue) ? convertedDefaultTimeParts : inputValue;\n    const parsedTimeParts: string[] = serializedValue\n      .split(':')\n      .map((timePart: string) => getFormattedTimeDigit(Number(timePart)));\n\n    const timeParts: string[] = [...parsedTimeParts, ...defaultTimeParts].slice(0, allowedTimePartsLength);\n\n    return { hours: timeParts[0], minutes: timeParts[1], seconds: timeParts[2] };\n  }\n}\n","import { FormControlStatus } from '@angular/forms';\n\nconst VALID_STATUSES: FormControlStatus[] = ['VALID', 'PENDING'];\n\nexport const isFormControlValidStatus = (status: FormControlStatus): boolean => VALID_STATUSES.includes(status);\n","import { Directive, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { ControlValueAccessor, FormControlStatus, NgControl } from '@angular/forms';\nimport { filterNotNil, isEmpty, isNil, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, of, Subscription } from 'rxjs';\nimport { delay, distinctUntilChanged, map, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { isFormControlValidStatus } from '../../functions/is-form-control-valid-status.function';\nimport { OnChangeCallback } from '../../types/on-change-callback.type';\nimport { OnTouchedCallback } from '../../types/on-touched-callback.type';\n\n@Directive()\nexport abstract class InputBaseControlValueAccessor<T> implements ControlValueAccessor, OnDestroy, OnInit {\n  protected readonly control$: BehaviorSubject<Nullable<NgControl>> = new BehaviorSubject(null);\n  public readonly value$: BehaviorSubject<T> = new BehaviorSubject(null);\n\n  public readonly isDisabled$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n  public readonly isTouched$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n  public readonly isFocused$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n  public readonly isFilled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isValid$: Observable<boolean> = this.control$.pipe(\n    switchMap((control: NgControl) =>\n      isNil(control)\n        ? of(true)\n        : control.statusChanges.pipe(\n            startWith(control.status),\n            map((status: FormControlStatus) => isFormControlValidStatus(status))\n          )\n    ),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  private readonly onChangeCallback$: BehaviorSubject<OnChangeCallback<T>> = new BehaviorSubject<OnChangeCallback<T>>(\n    null\n  );\n  private readonly onTouchedCallback$: BehaviorSubject<OnTouchedCallback> = new BehaviorSubject<OnTouchedCallback>(\n    null\n  );\n\n  protected readonly subscription: Subscription = new Subscription();\n\n  constructor(@Optional() protected readonly ngControl: NgControl) {\n    if (isNil(ngControl)) {\n      return;\n    }\n    ngControl.valueAccessor = this;\n    this.setControlRef(ngControl);\n  }\n\n  protected abstract setValue(value: T): void;\n\n  protected handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: T): void {\n    onChangeCallback(value);\n    this.setValue(value);\n  }\n\n  public ngOnInit(): void {\n    this.subscription.add(this.processNgControlStatusChangesForHandleIsTouched());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public updateValue(updatedValue: T): void {\n    this.isTouched$.next(true);\n    this.isFilled$.next(!isEmpty(updatedValue));\n\n    combineLatest([this.onChangeCallback$, this.onTouchedCallback$])\n      .pipe(take(1))\n      .subscribe(([onChangeCallback, onTouchedCallback]: [OnChangeCallback<T>, OnTouchedCallback]) => {\n        if (typeof onTouchedCallback === 'function') {\n          onTouchedCallback();\n        }\n\n        if (typeof onChangeCallback === 'function') {\n          this.handleChangedValue(onChangeCallback, updatedValue);\n        }\n      });\n  }\n\n  public writeValue(newValue: T): void {\n    this.setValue(newValue);\n  }\n\n  public registerOnChange(onChange: OnChangeCallback<T>): void {\n    this.onChangeCallback$.next(onChange);\n  }\n\n  public registerOnTouched(onTouched: OnTouchedCallback): void {\n    this.onTouchedCallback$.next(onTouched);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.processSetDisabledState(isDisabled);\n  }\n\n  private processSetDisabledState(isDisabled: boolean): void {\n    const nextDisabledValue: Nullable<boolean> = isDisabled ? true : null;\n    this.isDisabled$.next(nextDisabledValue);\n  }\n\n  private setControlRef(control: NgControl): void {\n    this.control$.next(control);\n  }\n\n  private processNgControlStatusChangesForHandleIsTouched(): Subscription {\n    return this.control$\n      .pipe(\n        filterNotNil(),\n        switchMap((control: NgControl) =>\n          control.statusChanges.pipe(\n            delay(0),\n            startWith(this.ngControl.touched),\n            map(() => this.ngControl.touched),\n            tap((isTouched: boolean) => this.isTouched$.next(isTouched))\n          )\n        )\n      )\n      .subscribe();\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { distinctUntilSerializedChanged, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { isDate } from '../../functions/is-date.function';\nimport { InputSize } from '../../types/input-size.type';\nimport { InputStyleCustomization } from '../../types/input-style-customization.type';\nimport { InputBaseControlValueAccessor } from './input-base-control-value-accessor.abstract';\n\n@Directive()\nexport abstract class InputBase<T> extends InputBaseControlValueAccessor<T> implements OnChanges {\n  @HostBinding('attr.pupa-control') public readonly controlAttribute: string = 'input';\n\n  @ViewChild('inputElement')\n  protected readonly inputElementRef: ElementRef<HTMLInputElement>;\n\n  @Input() public invalidTooltipHideOnHover: boolean = false;\n  @Input() public invalidTooltipDisabled: boolean = false;\n  @Input() public invalidTooltip: Nullable<string> = null;\n  @Input() public invalidTooltipContentTemplate: Nullable<TemplateRef<unknown>> = null;\n\n  @Input() public size: InputSize = 'medium';\n  public readonly size$: BehaviorSubject<InputSize> = new BehaviorSubject<InputSize>('medium');\n\n  @Input() public placeholder: string = '';\n  public readonly placeholder$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  @Input() public autocomplete: boolean = false;\n  public readonly autocomplete$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public withReset: boolean = false;\n  public readonly withReset$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public isPatched: boolean = false;\n  public readonly isPatched$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public customStyles: InputStyleCustomization[] = [];\n  public readonly customStyles$: BehaviorSubject<InputStyleCustomization[]> = new BehaviorSubject<\n    InputStyleCustomization[]\n  >([]);\n\n  @Input() public leftIcon: string = '';\n  public readonly leftIcon$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  @Input() public rightIcon: string = '';\n  public readonly rightIcon$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  @Output() public readonly focus: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output() public readonly blur: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n  public readonly isInvalid$: Observable<boolean> = combineLatest([\n    this.isDisabled$,\n    this.isPatched$,\n    this.isValid$,\n    this.isTouched$,\n  ]).pipe(\n    distinctUntilSerializedChanged(),\n    map(\n      ([isDisabled, isPatched, isValid, isTouched]: [boolean, boolean, boolean, boolean]) =>\n        (isTouched || isPatched) && !isValid && !isDisabled\n    )\n  );\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.size$,\n    this.isInvalid$.pipe(map((isInvalid: boolean) => (isInvalid ? 'invalid' : null))),\n    this.isFilled$.pipe(map((filled: boolean) => (filled ? 'filled' : null))),\n    this.isDisabled$.pipe(map((isDisabled: boolean) => (isDisabled ? 'disabled' : null))),\n    this.customStyles$.pipe(map((styles: InputStyleCustomization[]) => (!isEmpty(styles) ? styles.join('-') : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `input-wrapper_${innerProperty}`)\n    )\n  );\n\n  public readonly isVisibleReset$: Observable<boolean> = combineLatest([\n    this.withReset$,\n    this.isFilled$,\n    this.isDisabled$,\n  ]).pipe(\n    map(([withReset, isFilled, isDisabled]: [boolean, boolean, boolean]) => withReset && isFilled && !isDisabled)\n  );\n\n  protected processIsPatchedChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isPatched$.next(updatedValue);\n  }\n\n  protected processWithResetChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.withReset$.next(updatedValue);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSizeChange(changes?.size);\n    this.processPlaceholderChange(changes?.placeholder);\n    this.processAutocompleteChange(changes?.autocomplete);\n    this.processIsPatchedChange(changes?.isPatched);\n    this.processWithResetChange(changes?.withReset);\n    this.processStylesChange(changes?.customStyles);\n    this.processLeftIconChange(changes?.leftIcon);\n    this.processRightIconChange(changes?.rightIcon);\n  }\n\n  public emitFocusEvent(focusEvent: FocusEvent): void {\n    this.isFocused$.next(true);\n    this.focus.emit(focusEvent);\n  }\n\n  public emitBlurEvent(blurEvent: FocusEvent): void {\n    this.isFocused$.next(false);\n    this.blur.emit(blurEvent);\n  }\n\n  public isDate(value: unknown): boolean {\n    return isDate(value);\n  }\n\n  public focusOnInputElement(): void {\n    const inputElement: HTMLInputElement = this.inputElementRef.nativeElement;\n    inputElement.focus();\n  }\n\n  private processSizeChange(change: ComponentChange<this, InputSize>): void {\n    const updatedValue: InputSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processPlaceholderChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.placeholder$.next(updatedValue);\n  }\n\n  private processAutocompleteChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.autocomplete$.next(updatedValue);\n  }\n\n  private processStylesChange(change: ComponentChange<this, InputStyleCustomization[]>): void {\n    const updatedValue: InputStyleCustomization[] | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.customStyles$.next(updatedValue);\n  }\n\n  private processLeftIconChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.leftIcon$.next(updatedValue);\n  }\n\n  private processRightIconChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.rightIcon$.next(updatedValue);\n  }\n}\n","import { DatePipe } from '@angular/common';\nimport { Directive, HostListener, Input, OnChanges, Optional, ViewChild } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ComponentChanges, ComponentChange, TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, filterTruthy, isEmpty, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, take, withLatestFrom } from 'rxjs/operators';\nimport { DroppableComponent } from '../../../components/droppable/components/droppable/droppable.component';\nimport { dateClearTime } from '../../functions/date-clear-time.function';\nimport { getDaysInMonth } from '../../functions/get-days-in-month.function';\nimport { ParsedDateData } from '../../interfaces/parsed-date-data.interface';\nimport { ValueType } from '../../types/input-value.type';\nimport { InputDateTimeHelper } from '../input-date-time-helper.class';\nimport { InputBase } from './input-base.abstract';\n\nconst DEFAULT_DATE: Date = new Date();\nconst DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME: Date = dateClearTime(DEFAULT_DATE);\nconst DATE_FORMAT: string = 'dd.MM.yyyy';\n\nconst MAX_HOURS: number = 23;\nconst MAX_MINUTES: number = 59;\nconst MAX_SECONDS: number = 59;\n\nconst PLACEHOLDER_DATE: string = '00.00.0000';\nconst SIZE_PLACEHOLDER_DATE: number = PLACEHOLDER_DATE.length;\n\nconst PLACEHOLDER_TIME: string = '00:00:00';\nconst SIZE_PLACEHOLDER_TIME: number = PLACEHOLDER_TIME.length;\n\nconst MONTH_START_VALUE: number = 0;\nconst MONTH_END_VALUE: number = 11;\n\nconst HOUR_START_POSITION: number = 0;\nconst HOUR_END_POSITION: number = 2;\n\nconst MINUTES_START_POSITION: number = 3;\nconst MINUTES_END_POSITION: number = 5;\n\nconst SECONDS_START_POSITION: number = 6;\nconst SECONDS_END_POSITION: number = 8;\n\n@Directive()\nexport abstract class InputDateTimeBase extends InputBase<ValueType> implements OnChanges {\n  @ViewChild('droppable', { static: true }) public readonly droppableComponent: DroppableComponent;\n\n  @Input() public readonly isFixedSize: boolean = true;\n  public readonly isFixedSize$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  @Input() public readonly isBackDating: boolean = true;\n  public readonly isBackDating$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  @Input() public readonly availableEndDate: Date | number = Infinity;\n  public readonly availableEndDate$: BehaviorSubject<Date | number> = new BehaviorSubject<Date | number>(Infinity);\n\n  public readonly isIconHovered$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly valueIsNotEmpty$: Observable<boolean> = this.value$.pipe(map((value: string) => !isEmpty(value)));\n  public readonly dateToResetSwitcherEnabled$: Observable<boolean> = combineLatest([\n    this.isIconHovered$,\n    this.valueIsNotEmpty$,\n    this.withReset$,\n  ]).pipe(\n    map(\n      ([isIconHovered, valueIsNotEmpty, withReset]: [boolean, boolean, boolean]) =>\n        isIconHovered && valueIsNotEmpty && withReset\n    )\n  );\n\n  public readonly hours$: Observable<number> = this.value$.pipe(\n    map((value: string) =>\n      !isEmpty(value) && value.length >= HOUR_END_POSITION\n        ? Number(value.slice(HOUR_START_POSITION, HOUR_END_POSITION))\n        : -1\n    ),\n    filterNotNil(),\n    filter((hours: number) => hours <= MAX_HOURS)\n  );\n\n  public readonly minutes$: Observable<number> = this.value$.pipe(\n    map((value: string) =>\n      !isEmpty(value) && value.length >= MINUTES_END_POSITION\n        ? Number(value.slice(MINUTES_START_POSITION, MINUTES_END_POSITION))\n        : -1\n    ),\n    filterNotNil(),\n    filter((minutes: number) => minutes <= MAX_MINUTES)\n  );\n\n  public readonly seconds$: Observable<number> = this.value$.pipe(\n    map((value: string) =>\n      !isEmpty(value) && value.length === SECONDS_END_POSITION ? Number(value.slice(SECONDS_START_POSITION)) : -1\n    ),\n    filterNotNil(),\n    filter((minutes: number) => minutes <= MAX_SECONDS)\n  );\n\n  public readonly date$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    distinctUntilChanged(),\n    filter((value: string) => isEmpty(value) || value.length >= SIZE_PLACEHOLDER_DATE),\n    map((value: string) => value.slice(0, SIZE_PLACEHOLDER_DATE)),\n    map((value: string) => this.getParsedDate(value)),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public readonly rightIconWithCondition$: Observable<string> = combineLatest([\n    this.rightIcon$,\n    this.dateToResetSwitcherEnabled$,\n  ]).pipe(\n    map(([rightIcon, dateToResetSwitcherEnabled]: [string, boolean]) => {\n      if (dateToResetSwitcherEnabled) {\n        return 'm-abort';\n      }\n\n      return isEmpty(rightIcon) ? 'm-calendar' : rightIcon;\n    })\n  );\n\n  constructor(\n    private readonly timeFormatPipe: TimeDigitFormatPipe,\n    public readonly datePipe: DatePipe,\n    @Optional() ngControl: NgControl\n  ) {\n    super(ngControl);\n  }\n\n  @HostListener('window:click')\n  @HostListener('window:touchstart')\n  public processWindowClick(): void {\n    this.isFocused$.next(false);\n  }\n\n  public handleContainerClick(event: Event): void {\n    this.isDisabled$\n      .pipe(\n        take(1),\n        map((isDisabled: boolean) => isDisabled || this.droppableComponent.isOpened),\n        filterTruthy()\n      )\n      .subscribe(() => event.stopPropagation());\n  }\n\n  public handleContainerStartEvents(event: Event): void {\n    if (!this.droppableComponent.isOpened) {\n      return;\n    }\n    event.stopPropagation();\n  }\n\n  public selectHours(hours: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const parsedHours: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectHours(hours, value);\n      this.updateValue(parsedHours);\n    });\n  }\n\n  public selectMinutes(minutes: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const parsedMinutes: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectMinutes(minutes, value);\n      this.updateValue(parsedMinutes);\n    });\n  }\n\n  public selectSeconds(seconds: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const parsedSeconds: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectSeconds(seconds, value);\n      this.updateValue(parsedSeconds);\n    });\n  }\n\n  public selectDateTimeHours(hours: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const valueTime: string = isNil(value) ? '' : value.slice(SIZE_PLACEHOLDER_DATE).trim();\n\n      const parsedHours: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectHours(hours, valueTime);\n      const transformedHours: string = parsedHours.slice(0, SIZE_PLACEHOLDER_TIME);\n\n      if (isNil(value) || value.length < SIZE_PLACEHOLDER_DATE) {\n        const parsedDefaultDate: string = this.datePipe.transform(DEFAULT_DATE, DATE_FORMAT);\n        this.updateValue(`${parsedDefaultDate} ${transformedHours}`);\n        return;\n      }\n\n      const addedExistingValueInput: string = value.slice(0, SIZE_PLACEHOLDER_DATE);\n\n      this.updateValue(`${addedExistingValueInput} ${transformedHours}`);\n    });\n  }\n\n  public selectDateTimeMinutes(minutes: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const valueTime: string = isNil(value) ? '' : value.slice(SIZE_PLACEHOLDER_DATE).trim();\n\n      const parsedMinutes: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectMinutes(minutes, valueTime);\n      const transformedMinutes: string = parsedMinutes.slice(0, SIZE_PLACEHOLDER_TIME);\n\n      if (isNil(value) || value.length < SIZE_PLACEHOLDER_DATE) {\n        const parsedDefaultDate: string = this.datePipe.transform(DEFAULT_DATE, DATE_FORMAT);\n        this.updateValue(`${parsedDefaultDate} ${transformedMinutes}`);\n        return;\n      }\n\n      const addedExistingValueInput: string = value.slice(0, SIZE_PLACEHOLDER_DATE);\n\n      this.updateValue(`${addedExistingValueInput} ${transformedMinutes}`);\n    });\n  }\n\n  public selectDateTimeSeconds(seconds: number): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const valueTime: string = isNil(value) ? '' : value.slice(SIZE_PLACEHOLDER_DATE).trim();\n\n      const parsedSeconds: string = InputDateTimeHelper.getUpdatedValueStringAfterSelectSeconds(seconds, valueTime);\n      const transformedSeconds: string = parsedSeconds.slice(0, SIZE_PLACEHOLDER_TIME);\n\n      if (isNil(value) || value.length < SIZE_PLACEHOLDER_DATE) {\n        const parsedDefaultDate: string = this.datePipe.transform(DEFAULT_DATE, DATE_FORMAT);\n        this.updateValue(`${parsedDefaultDate} ${transformedSeconds}`);\n        return;\n      }\n\n      const addedExistingValueInput: string = value.slice(0, SIZE_PLACEHOLDER_DATE);\n\n      this.updateValue(`${addedExistingValueInput} ${transformedSeconds}`);\n    });\n  }\n\n  public selectDate(selectedDate: Date): void {\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      const day: number = selectedDate.getDate();\n      const month: number = selectedDate.getMonth() + 1;\n      const year: number = selectedDate.getFullYear();\n\n      const parsedDay: string = this.timeFormatPipe.transform(day);\n      const parsedMonth: string = this.timeFormatPipe.transform(month);\n\n      const dateInputString: string = `${parsedDay}.${parsedMonth}.${year}`;\n\n      const addedExistingValueInput: string = isNil(value) ? '' : value.slice(SIZE_PLACEHOLDER_DATE);\n\n      this.updateValue(`${dateInputString}${addedExistingValueInput}`);\n    });\n  }\n\n  public selectRange(range: [Date, Date]): void {\n    const firstDate: Date = range[0];\n    const secondDate: Date = range[1];\n\n    const convertedFirstDate: string = this.datePipe.transform(firstDate, DATE_FORMAT);\n    const convertedSecondDate: string = this.datePipe.transform(secondDate, DATE_FORMAT);\n\n    const isRangeCorrect: boolean = firstDate <= secondDate;\n    const updatedValue: string = isRangeCorrect\n      ? `${convertedFirstDate} - ${convertedSecondDate}`\n      : `${convertedSecondDate} - ${convertedFirstDate}`;\n\n    this.updateValue(updatedValue);\n  }\n\n  public getParsedDate(value: string): Date {\n    const { day, month, year }: ParsedDateData = InputDateTimeHelper.getParsedDateData(value);\n    const convertedYear: number = Number(year);\n    const convertedMonth: number = Number(month) - 1;\n    const convertedDay: number = Number(day);\n\n    if (convertedMonth > MONTH_END_VALUE || convertedMonth < MONTH_START_VALUE) {\n      return null;\n    }\n\n    const testDate: Date = new Date(convertedYear, convertedMonth, 1);\n    const daysInMonth: number = getDaysInMonth(testDate);\n\n    if (convertedDay > daysInMonth) {\n      return null;\n    }\n\n    const date: Date = new Date(convertedYear, convertedMonth, convertedDay);\n    return date;\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processIsFixedSizeChange(changes?.isFixedSize);\n    this.processIsBackDatingChange(changes?.isBackDating);\n    this.processAvailableEndDateChange(changes?.availableEndDate);\n    super.ngOnChanges(changes);\n  }\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n  }\n\n  public handleFocusEvent(focusEvent: FocusEvent): void {\n    focusEvent.stopPropagation();\n    this.emitFocusEvent(focusEvent);\n  }\n\n  public handleIconHover(focusEvent: FocusEvent, isHovered: boolean): void {\n    focusEvent.stopPropagation();\n    this.isIconHovered$.next(isHovered);\n  }\n\n  public reset(): void {\n    this.withReset$.pipe(take(1), filterTruthy()).subscribe(() => this.updateValue(''));\n    this.inputElementRef.nativeElement.focus();\n  }\n\n  public clearInputValue(): void {\n    combineLatest([this.isIconHovered$, this.valueIsNotEmpty$, this.isValid$])\n      .pipe(\n        take(1),\n        filter(\n          ([isIconHovered, valueIsNotEmpty, isValid]: [boolean, boolean, boolean]) =>\n            isIconHovered && valueIsNotEmpty && isValid\n        )\n      )\n      .subscribe(() => this.updateValue(''));\n  }\n\n  public dateIsNotAvailable(date: Date, isBackDating: boolean, availableEndDate: Date): boolean {\n    return (!isBackDating && date < DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME) || date > availableEndDate;\n  }\n\n  private processIsFixedSizeChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isFixedSize$.next(updatedValue);\n  }\n\n  private processIsBackDatingChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.isBackDating$.next(updatedValue);\n  }\n\n  private processAvailableEndDateChange(change: ComponentChange<this, Date | number>): void {\n    const updatedValue: Date | number | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.availableEndDate$.next(updatedValue);\n  }\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, isEmpty, isNil } from '@bimeister/utilities';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { InputDateTimeBase } from '../../../../declarations/classes/abstract/input-date-time-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\n\nconst DATE_FORMAT: string = 'dd.MM.yyyy';\nconst DATE_MASK: string = '00.00.0000';\nconst DATE_MASK_SIZE: number = DATE_MASK.length;\n\n@Component({\n  selector: 'pupa-input-date-range-double',\n  templateUrl: './input-date-range-double.component.html',\n  styleUrls: ['./input-date-range-double.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputDateRangeDoubleComponent extends InputDateTimeBase {\n  public readonly dateRangeMask: string = `${DATE_MASK} – ${DATE_MASK}`;\n  public readonly maxLengthInputValue: number = this.dateRangeMask.length;\n\n  public readonly dateRangeFirst$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    map((inputValue: string) => {\n      if (inputValue.length <= DATE_MASK_SIZE) {\n        return null;\n      }\n      const value: string = inputValue.slice(0, DATE_MASK_SIZE);\n      return this.getParsedDate(value);\n    }),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public readonly dateRangeSecond$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.trim()),\n    map((inputValue: string) => {\n      if (inputValue.length < this.maxLengthInputValue) {\n        return null;\n      }\n      const value: string = inputValue.slice(-DATE_MASK_SIZE);\n\n      return this.getParsedDate(value);\n    }),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public readonly range$: Observable<[Date, Date]> = combineLatest([this.dateRangeFirst$, this.dateRangeSecond$]);\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue.slice(0, this.maxLengthInputValue));\n  }\n\n  public writeValue(newValue: any): void {\n    if (isEmpty(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    if (!Array.isArray(newValue)) {\n      throw new Error('[InputDateRangeDoubleComponent] value in not array in writeValue');\n    }\n\n    const dateFirst: Date = newValue[0];\n    const dateSecond: Date = newValue[1];\n\n    if (isNil(dateFirst) || isNil(dateSecond)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValueDateFirst: string = String(dateFirst);\n    const serializedValueDateSecond: string = String(dateSecond);\n\n    const parsedValueFirst: string = this.datePipe.transform(serializedValueDateFirst, DATE_FORMAT);\n    const parsedValueSecond: string = this.datePipe.transform(serializedValueDateSecond, DATE_FORMAT);\n\n    this.setValue(`${parsedValueFirst} - ${parsedValueSecond}`);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback([null, null]);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const datePartFirst: string = serializedValue.slice(0, DATE_MASK_SIZE);\n    const datePartSecond: string = serializedValue.slice(DATE_MASK_SIZE + 2).trim();\n\n    const dateFirst: Date = this.getParsedDate(datePartFirst);\n    const dateSecond: Date = this.getParsedDate(datePartSecond);\n\n    if (isNil(dateFirst) || isNil(dateSecond)) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const range: [Date, Date] = dateFirst < dateSecond ? [dateFirst, dateSecond] : [dateSecond, dateFirst];\n\n    onChangeCallback(range);\n    this.setValue(serializedValue);\n  }\n}\n","<div class=\"base-input-container date-range\" [class.fixed-size]=\"isFixedSize$ | async\">\n  <pupa-droppable #droppable>\n    <pupa-droppable-trigger class=\"dropdown-trigger\">\n      <div\n        class=\"input-wrapper\"\n        [ngClass]=\"resultClassList$ | async\"\n        (click)=\"handleContainerClick($event)\"\n        (mousedown)=\"handleContainerStartEvents($event)\"\n      >\n        <pupa-icon\n          *ngIf=\"leftIcon$ | async as leftIcon\"\n          class=\"input-icon input-icon_custom\"\n          [name]=\"leftIcon\"\n        ></pupa-icon>\n\n        <!-- NOTE: ngModel is incorrect: use other mask instead -->\n        <input\n          class=\"input\"\n          #inputElement\n          type=\"text\"\n          [placeholder]=\"dateRangeMask\"\n          [specialCharacters]=\"['–', '.', ' ']\"\n          [mask]=\"dateRangeMask\"\n          [maxLength]=\"maxLengthInputValue\"\n          [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n          (input)=\"updateValue(inputElement.value)\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          [value]=\"value$ | async\"\n          [ngModel]=\"value$ | async\"\n        />\n\n        <pupa-icon\n          class=\"input-icon input-icon_calendar\"\n          [name]=\"rightIconWithCondition$ | async\"\n          (mouseleave)=\"handleIconHover($event, false)\"\n          (mouseenter)=\"handleIconHover($event, true)\"\n          (click)=\"reset()\"\n        >\n        </pupa-icon>\n\n        <pupa-icon\n          *ngIf=\"isInvalid$ | async\"\n          class=\"input-icon input-icon_invalid\"\n          name=\"m-error\"\n          [pupaTooltip]=\"invalidTooltip\"\n          [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n          [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n          [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n          (click)=\"inputElement.focus()\"\n        >\n        </pupa-icon>\n      </div>\n    </pupa-droppable-trigger>\n\n    <pupa-droppable-native-content>\n      <pupa-date-picker\n        *ngIf=\"droppable.isOpened\"\n        [selectedRange]=\"range$ | async\"\n        [selectionMode]=\"'range'\"\n        [isBackDating]=\"isBackDating$ | async\"\n        [availableEndDate]=\"availableEndDate$ | async\"\n        (click)=\"handleFocusEvent($event)\"\n        (range)=\"selectRange($event)\"\n        [previewMode]=\"'double'\"\n      ></pupa-date-picker>\n    </pupa-droppable-native-content>\n  </pupa-droppable>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, isEmpty, isNil } from '@bimeister/utilities';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map, withLatestFrom } from 'rxjs/operators';\nimport { InputDateTimeBase } from '../../../../declarations/classes/abstract/input-date-time-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\n\nconst DATE_FORMAT: string = 'dd.MM.yyyy';\nconst DATE_MASK: string = '00.00.0000';\nconst DATE_MASK_SIZE: number = DATE_MASK.length;\n\n@Component({\n  selector: 'pupa-input-date-range',\n  templateUrl: './input-date-range.component.html',\n  styleUrls: ['./input-date-range.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputDateRangeComponent extends InputDateTimeBase {\n  public readonly dateRangeMask: string = `${DATE_MASK} – ${DATE_MASK}`;\n  public readonly maxLengthInputValue: number = this.dateRangeMask.length;\n\n  public readonly dateRangeFirst$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    map((inputValue: string) => {\n      if (inputValue.length <= DATE_MASK_SIZE) {\n        return null;\n      }\n      const value: string = inputValue.slice(0, DATE_MASK_SIZE);\n      return this.getParsedDate(value);\n    }),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public readonly dateRangeSecond$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.trim()),\n    map((inputValue: string) => {\n      if (inputValue.length < this.maxLengthInputValue) {\n        return null;\n      }\n      const value: string = inputValue.slice(-DATE_MASK_SIZE);\n\n      return this.getParsedDate(value);\n    }),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public readonly range$: Observable<[Date, Date]> = combineLatest([this.dateRangeFirst$, this.dateRangeSecond$]);\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue.slice(0, this.maxLengthInputValue));\n  }\n\n  public writeValue(newValue: any): void {\n    if (isEmpty(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    if (!Array.isArray(newValue)) {\n      throw new Error('[InputDateRangeComponent] value in not array in writeValue');\n    }\n\n    const dateFirst: Date = newValue[0];\n    const dateSecond: Date = newValue[1];\n\n    if (isNil(dateFirst) || isNil(dateSecond)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValueDateFirst: string = String(dateFirst);\n    const serializedValueDateSecond: string = String(dateSecond);\n\n    const parsedValueFirst: string = this.datePipe.transform(serializedValueDateFirst, DATE_FORMAT);\n    const parsedValueSecond: string = this.datePipe.transform(serializedValueDateSecond, DATE_FORMAT);\n\n    this.setValue(`${parsedValueFirst} - ${parsedValueSecond}`);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback([null, null]);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const datePartFirst: string = serializedValue.slice(0, DATE_MASK_SIZE);\n    const datePartSecond: string = serializedValue.slice(DATE_MASK_SIZE + 2).trim();\n\n    const dateFirst: Date = this.getParsedDate(datePartFirst);\n    const dateSecond: Date = this.getParsedDate(datePartSecond);\n\n    if (isNil(dateFirst) || isNil(dateSecond)) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const range: [Date, Date] = dateFirst < dateSecond ? [dateFirst, dateSecond] : [dateSecond, dateFirst];\n\n    onChangeCallback(range);\n    this.setValue(serializedValue);\n  }\n}\n","<div class=\"base-input-container date-range\" [class.fixed-size]=\"isFixedSize$ | async\">\n  <pupa-droppable #droppable>\n    <pupa-droppable-trigger class=\"dropdown-trigger\">\n      <div\n        class=\"input-wrapper\"\n        [ngClass]=\"resultClassList$ | async\"\n        (click)=\"handleContainerClick($event)\"\n        (mousedown)=\"handleContainerStartEvents($event)\"\n      >\n        <pupa-icon\n          *ngIf=\"leftIcon$ | async as leftIcon\"\n          class=\"input-icon input-icon_custom\"\n          [name]=\"leftIcon\"\n        ></pupa-icon>\n\n        <!-- NOTE: ngModel is incorrect: use other mask instead -->\n        <input\n          class=\"input\"\n          #inputElement\n          type=\"text\"\n          [placeholder]=\"dateRangeMask\"\n          [specialCharacters]=\"['–', '.', ' ']\"\n          [mask]=\"dateRangeMask\"\n          [maxLength]=\"maxLengthInputValue\"\n          [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n          (input)=\"updateValue(inputElement.value)\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          [value]=\"value$ | async\"\n          [ngModel]=\"value$ | async\"\n        />\n\n        <pupa-icon\n          class=\"input-icon input-icon_calendar\"\n          [name]=\"rightIconWithCondition$ | async\"\n          (mouseleave)=\"handleIconHover($event, false)\"\n          (mouseenter)=\"handleIconHover($event, true)\"\n          (click)=\"reset()\"\n        >\n        </pupa-icon>\n\n        <pupa-icon\n          *ngIf=\"isInvalid$ | async\"\n          class=\"input-icon input-icon_invalid\"\n          name=\"m-error\"\n          [pupaTooltip]=\"invalidTooltip\"\n          [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n          [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n          [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n          (click)=\"inputElement.focus()\"\n        >\n        </pupa-icon>\n      </div>\n    </pupa-droppable-trigger>\n\n    <pupa-droppable-native-content>\n      <pupa-date-picker\n        *ngIf=\"droppable.isOpened\"\n        [selectedRange]=\"range$ | async\"\n        [selectionMode]=\"'range'\"\n        [isBackDating]=\"isBackDating$ | async\"\n        [availableEndDate]=\"availableEndDate$ | async\"\n        (click)=\"handleFocusEvent($event)\"\n        (range)=\"selectRange($event)\"\n        [previewMode]=\"'simple'\"\n      ></pupa-date-picker>\n    </pupa-droppable-native-content>\n  </pupa-droppable>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, isEmpty, isNil } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { InputDateTimeBase } from '../../../../declarations/classes/abstract/input-date-time-base.abstract';\nimport { InputDateTimeHelper } from '../../../../declarations/classes/input-date-time-helper.class';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { NumericParsedTimeData } from '../../../../declarations/types/numeric-parsed-time-data.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\n\nconst TIME_MASK: string = '00:00:00';\nconst DATE_MASK: string = '00.00.0000';\nconst DATE_MASK_SIZE: number = DATE_MASK.length;\n\nconst MAX_HOURS: number = 23;\nconst MAX_MINUTES: number = 59;\nconst MAX_SECONDS: number = 59;\n\nconst DATE_FORMAT: string = 'dd.MM.yyyy HH:mm:ss';\n\n@Component({\n  selector: 'pupa-input-date-time-seconds',\n  templateUrl: './input-date-time-seconds.component.html',\n  styleUrls: ['./input-date-time-seconds.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputDateTimeSecondsComponent extends InputDateTimeBase {\n  public readonly dateTimeMask: string = `${DATE_MASK} ${TIME_MASK}`;\n  public readonly maxLengthInputValue: number = this.dateTimeMask.length;\n\n  public readonly hours$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.slice(DATE_MASK_SIZE)),\n    map((value: string) => value.trim()),\n    map((value: string) => (!isEmpty(value) && value.length >= 2 ? Number(value.slice(0, 2)) : -1)),\n    filterNotNil(),\n    filter((hours: number) => hours <= MAX_HOURS)\n  );\n\n  public readonly minutes$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.slice(DATE_MASK_SIZE)),\n    map((value: string) => value.trim()),\n    map((value: string) => (!isEmpty(value) && value.length >= 5 ? Number(value.slice(3, 5)) : -1)),\n    filterNotNil(),\n    filter((minutes: number) => minutes <= MAX_MINUTES)\n  );\n\n  public readonly seconds$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.slice(DATE_MASK_SIZE)),\n    map((value: string) => value.trim()),\n    map((value: string) => (!isEmpty(value) && value.length === 8 ? Number(value.slice(6)) : -1)),\n    filterNotNil(),\n    filter((minutes: number) => minutes <= MAX_SECONDS)\n  );\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue.slice(0, this.maxLengthInputValue));\n  }\n\n  public writeValue(newValue: ValueType): void {\n    if (isNil(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValue: string = String(newValue);\n    const parsedValue: string = this.datePipe.transform(serializedValue, DATE_FORMAT);\n\n    this.setValue(parsedValue);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback(null);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const datePart: string = serializedValue.slice(0, DATE_MASK_SIZE);\n    const timePart: string = serializedValue.slice(DATE_MASK_SIZE).trim();\n\n    const date: Date = this.getParsedDate(datePart);\n\n    if (isNil(date)) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const { hours, minutes, seconds }: NumericParsedTimeData = InputDateTimeHelper.getParsedNumericTimeData(timePart);\n\n    const isCorrectHours: boolean = hours >= 0 && hours <= MAX_HOURS;\n    const isCorrectMinutes: boolean = minutes >= 0 && minutes <= MAX_MINUTES;\n    const isCorrectSeconds: boolean = seconds >= 0 && seconds <= MAX_SECONDS;\n\n    if (!isCorrectHours || !isCorrectMinutes || !isCorrectSeconds) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    date.setHours(hours);\n    date.setMinutes(minutes);\n    date.setSeconds(seconds);\n\n    onChangeCallback(date);\n    this.setValue(serializedValue);\n  }\n}\n","<div class=\"base-input-container date time-seconds\" [class.fixed-size]=\"isFixedSize$ | async\">\n  <pupa-droppable #droppable>\n    <pupa-droppable-trigger class=\"dropdown-trigger\">\n      <div\n        class=\"input-wrapper\"\n        [ngClass]=\"resultClassList$ | async\"\n        (click)=\"handleContainerClick($event)\"\n        (mousedown)=\"handleContainerStartEvents($event)\"\n      >\n        <pupa-icon\n          *ngIf=\"leftIcon$ | async as leftIcon\"\n          class=\"input-icon input-icon_custom\"\n          [name]=\"leftIcon\"\n        ></pupa-icon>\n\n        <!-- NOTE: ngModel is incorrect: use other mask instead -->\n        <input\n          class=\"input\"\n          #inputElement\n          type=\"text\"\n          [placeholder]=\"dateTimeMask\"\n          [mask]=\"dateTimeMask\"\n          [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n          (input)=\"updateValue(inputElement.value)\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          [value]=\"value$ | async\"\n          [ngModel]=\"value$ | async\"\n        />\n\n        <pupa-icon\n          class=\"input-icon input-icon_calendar\"\n          [name]=\"rightIconWithCondition$ | async\"\n          (mouseleave)=\"handleIconHover($event, false)\"\n          (mouseenter)=\"handleIconHover($event, true)\"\n          (click)=\"reset()\"\n        >\n        </pupa-icon>\n\n        <pupa-icon\n          *ngIf=\"isInvalid$ | async\"\n          class=\"input-icon input-icon_invalid\"\n          name=\"m-error\"\n          [pupaTooltip]=\"invalidTooltip\"\n          [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n          [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n          [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n          (click)=\"inputElement.focus()\"\n        >\n        </pupa-icon>\n      </div>\n    </pupa-droppable-trigger>\n\n    <pupa-droppable-native-content>\n      <pupa-date-picker\n        *ngIf=\"droppable.isOpened\"\n        [withSeconds]=\"true\"\n        [selectedDate]=\"date$ | async\"\n        [selectionMode]=\"'date'\"\n        [isBackDating]=\"isBackDating$ | async\"\n        [availableEndDate]=\"availableEndDate$ | async\"\n        [hours]=\"hours$ | async\"\n        [minutes]=\"minutes$ | async\"\n        [seconds]=\"seconds$ | async\"\n        (selectedHours)=\"selectDateTimeHours($event)\"\n        (selectedMinutes)=\"selectDateTimeMinutes($event)\"\n        (selectedSeconds)=\"selectDateTimeSeconds($event)\"\n        (click)=\"handleFocusEvent($event)\"\n        (date)=\"selectDate($event)\"\n        [previewMode]=\"'simple-time'\"\n      ></pupa-date-picker>\n    </pupa-droppable-native-content>\n  </pupa-droppable>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, isEmpty, isNil } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { InputDateTimeBase } from '../../../../declarations/classes/abstract/input-date-time-base.abstract';\nimport { InputDateTimeHelper } from '../../../../declarations/classes/input-date-time-helper.class';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { NumericParsedTimeData } from '../../../../declarations/types/numeric-parsed-time-data.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\n\nconst TIME_MASK: string = '00:00';\nconst DATE_MASK: string = '00.00.0000';\nconst DATE_MASK_SIZE: number = DATE_MASK.length;\n\nconst MAX_HOURS: number = 23;\nconst MAX_MINUTES: number = 59;\n\nconst DATE_FORMAT: string = 'dd.MM.yyyy HH:mm';\n\n@Component({\n  selector: 'pupa-input-date-time',\n  templateUrl: './input-date-time.component.html',\n  styleUrls: ['./input-date-time.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputDateTimeComponent extends InputDateTimeBase {\n  public readonly dateTimeMask: string = `${DATE_MASK} ${TIME_MASK}`;\n  public readonly maxLengthInputValue: number = this.dateTimeMask.length;\n\n  public readonly hours$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.slice(DATE_MASK_SIZE)),\n    map((value: string) => value.trim()),\n    map((value: string) => (!isEmpty(value) && value.length >= 2 ? Number(value.slice(0, 2)) : -1)),\n    filterNotNil(),\n    filter((hours: number) => hours <= MAX_HOURS)\n  );\n\n  public readonly minutes$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((value: string) => value.slice(DATE_MASK_SIZE)),\n    map((value: string) => value.trim()),\n    map((value: string) => (!isEmpty(value) && value.length === 5 ? Number(value.slice(3)) : -1)),\n    filterNotNil(),\n    filter((minutes: number) => minutes <= MAX_MINUTES)\n  );\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue.slice(0, this.maxLengthInputValue));\n  }\n\n  public writeValue(newValue: ValueType): void {\n    if (isNil(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValue: string = String(newValue);\n    const parsedValue: string = this.datePipe.transform(serializedValue, DATE_FORMAT);\n\n    this.setValue(parsedValue);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback(null);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const datePart: string = serializedValue.slice(0, DATE_MASK_SIZE);\n    const timePart: string = serializedValue.slice(DATE_MASK_SIZE).trim();\n\n    const date: Date = this.getParsedDate(datePart);\n\n    if (isNil(date)) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const { hours, minutes }: NumericParsedTimeData = InputDateTimeHelper.getParsedNumericTimeData(timePart);\n\n    const isCorrectHours: boolean = hours >= 0 && hours <= MAX_HOURS;\n    const isCorrectMinutes: boolean = minutes >= 0 && minutes <= MAX_MINUTES;\n\n    if (!isCorrectHours || !isCorrectMinutes) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    date.setHours(hours);\n    date.setMinutes(minutes);\n    date.setSeconds(0);\n\n    onChangeCallback(date);\n    this.setValue(serializedValue);\n  }\n}\n","<div class=\"base-input-container date time\" [class.fixed-size]=\"isFixedSize$ | async\">\n  <pupa-droppable #droppable>\n    <pupa-droppable-trigger class=\"dropdown-trigger\">\n      <div\n        class=\"input-wrapper\"\n        [ngClass]=\"resultClassList$ | async\"\n        (click)=\"handleContainerClick($event)\"\n        (mousedown)=\"handleContainerStartEvents($event)\"\n      >\n        <pupa-icon\n          *ngIf=\"leftIcon$ | async as leftIcon\"\n          class=\"input-icon input-icon_custom\"\n          [name]=\"leftIcon\"\n        ></pupa-icon>\n\n        <!-- NOTE: ngModel is incorrect: use other mask instead -->\n        <input\n          class=\"input\"\n          #inputElement\n          type=\"text\"\n          [placeholder]=\"dateTimeMask\"\n          [mask]=\"dateTimeMask\"\n          [maxLength]=\"maxLengthInputValue\"\n          [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n          (input)=\"updateValue(inputElement.value)\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          [value]=\"value$ | async\"\n          [ngModel]=\"value$ | async\"\n        />\n\n        <pupa-icon\n          class=\"input-icon input-icon_calendar\"\n          [name]=\"rightIconWithCondition$ | async\"\n          (mouseleave)=\"handleIconHover($event, false)\"\n          (mouseenter)=\"handleIconHover($event, true)\"\n          (click)=\"reset()\"\n        >\n        </pupa-icon>\n\n        <pupa-icon\n          *ngIf=\"isInvalid$ | async\"\n          class=\"input-icon input-icon_invalid\"\n          name=\"m-error\"\n          [pupaTooltip]=\"invalidTooltip\"\n          [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n          [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n          [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n          (click)=\"inputElement.focus()\"\n        >\n        </pupa-icon>\n      </div>\n    </pupa-droppable-trigger>\n\n    <pupa-droppable-native-content>\n      <pupa-date-picker\n        *ngIf=\"droppable.isOpened\"\n        [selectedDate]=\"date$ | async\"\n        [selectionMode]=\"'date'\"\n        [isBackDating]=\"isBackDating$ | async\"\n        [availableEndDate]=\"availableEndDate$ | async\"\n        [hours]=\"hours$ | async\"\n        [minutes]=\"minutes$ | async\"\n        (selectedHours)=\"selectDateTimeHours($event)\"\n        (selectedMinutes)=\"selectDateTimeMinutes($event)\"\n        (click)=\"handleFocusEvent($event)\"\n        (date)=\"selectDate($event)\"\n        [previewMode]=\"'simple-time'\"\n      ></pupa-date-picker>\n    </pupa-droppable-native-content>\n  </pupa-droppable>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { filterNotNil, isEmpty, isNil } from '@bimeister/utilities';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, withLatestFrom } from 'rxjs/operators';\nimport { InputDateTimeBase } from '../../../../declarations/classes/abstract/input-date-time-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\n\nconst DATE_FORMAT: string = 'dd.MM.yyyy';\n\n@Component({\n  selector: 'pupa-input-date',\n  templateUrl: './input-date.component.html',\n  styleUrls: ['./input-date.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputDateComponent extends InputDateTimeBase {\n  public readonly dateMask: string = '00.00.0000';\n  public readonly maxLengthInputValue: number = this.dateMask.length;\n\n  public readonly date$: Observable<Date> = this.value$.pipe(\n    filterNotNil(),\n    filter((value: string) => isEmpty(value) || value.length === this.maxLengthInputValue),\n    distinctUntilChanged(),\n    map((value: string) => this.getParsedDate(value)),\n    withLatestFrom(combineLatest([this.isBackDating$, this.availableEndDate$])),\n    filter(\n      ([date, [isBackDating, availableEndDate]]: [Date, [boolean, Date]]) =>\n        !this.dateIsNotAvailable(date, isBackDating, availableEndDate)\n    ),\n    map(([date, _]: [Date, [boolean, Date]]) => date)\n  );\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n  }\n\n  public writeValue(newValue: ValueType): void {\n    if (isNil(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValue: string = String(newValue);\n    const parsedValue: string = this.datePipe.transform(serializedValue, DATE_FORMAT);\n\n    this.setValue(parsedValue);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<any>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback(null);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const date: Date = this.getParsedDate(serializedValue);\n    if (isNil(date)) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    onChangeCallback(date);\n    this.setValue(serializedValue);\n  }\n}\n","<div class=\"base-input-container date\" [class.fixed-size]=\"isFixedSize$ | async\">\n  <pupa-droppable #droppable>\n    <pupa-droppable-trigger class=\"dropdown-trigger\">\n      <div\n        class=\"input-wrapper\"\n        [ngClass]=\"resultClassList$ | async\"\n        (click)=\"handleContainerClick($event)\"\n        (mousedown)=\"handleContainerStartEvents($event)\"\n      >\n        <pupa-icon\n          *ngIf=\"leftIcon$ | async as leftIcon\"\n          class=\"input-icon input-icon_custom\"\n          [name]=\"leftIcon\"\n        ></pupa-icon>\n\n        <!-- NOTE: ngModel is incorrect: use other mask instead -->\n        <input\n          class=\"input\"\n          #inputElement\n          type=\"text\"\n          [placeholder]=\"dateMask\"\n          [mask]=\"dateMask\"\n          [maxLength]=\"maxLengthInputValue\"\n          [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n          (input)=\"updateValue(inputElement.value)\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          [value]=\"value$ | async\"\n          [ngModel]=\"value$ | async\"\n        />\n\n        <pupa-icon\n          class=\"input-icon input-icon_calendar\"\n          [name]=\"rightIconWithCondition$ | async\"\n          (mouseleave)=\"handleIconHover($event, false)\"\n          (mouseenter)=\"handleIconHover($event, true)\"\n          (click)=\"reset()\"\n        >\n        </pupa-icon>\n\n        <pupa-icon\n          *ngIf=\"isInvalid$ | async\"\n          class=\"input-icon input-icon_invalid\"\n          name=\"m-error\"\n          [pupaTooltip]=\"invalidTooltip\"\n          [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n          [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n          [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n          (click)=\"inputElement.focus()\"\n        >\n        </pupa-icon>\n      </div>\n    </pupa-droppable-trigger>\n\n    <pupa-droppable-native-content>\n      <pupa-date-picker\n        *ngIf=\"droppable.isOpened\"\n        [selectedDate]=\"date$ | async\"\n        [selectionMode]=\"'date'\"\n        [isBackDating]=\"isBackDating$ | async\"\n        [availableEndDate]=\"availableEndDate$ | async\"\n        (click)=\"handleFocusEvent($event)\"\n        (date)=\"selectDate($event)\"\n        [previewMode]=\"'simple'\"\n      ></pupa-date-picker>\n    </pupa-droppable-native-content>\n  </pupa-droppable>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { InputBase } from '../../../../declarations/classes/abstract/input-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\n\n@Component({\n  selector: 'pupa-input-number',\n  templateUrl: './input-number.component.html',\n  styleUrls: ['./input-number.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputNumberComponent extends InputBase<ValueType> {\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n  }\n\n  public reset(): void {\n    this.updateValue('');\n    this.inputElementRef.nativeElement.focus();\n  }\n}\n","<div class=\"input-wrapper\" [ngClass]=\"resultClassList$ | async\">\n  <pupa-icon *ngIf=\"leftIcon$ | async as leftIcon\" class=\"input-icon input-icon_custom\" [name]=\"leftIcon\"></pupa-icon>\n\n  <input\n    class=\"input\"\n    type=\"number\"\n    #inputElement\n    [placeholder]=\"placeholder\"\n    [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n    (input)=\"updateValue(inputElement.value)\"\n    (focus)=\"emitFocusEvent($event)\"\n    (blur)=\"emitBlurEvent($event)\"\n    [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n    [value]=\"value$ | async\"\n  />\n\n  <pupa-icon\n    *ngIf=\"rightIcon$ | async as rightIcon\"\n    class=\"input-icon input-icon_custom\"\n    [name]=\"rightIcon\"\n  ></pupa-icon>\n\n  <pupa-icon *ngIf=\"isVisibleReset$ | async\" class=\"input-icon input-icon_reset\" name=\"m-abort\" (click)=\"reset()\">\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"input-icon input-icon_invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n    [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n    (click)=\"inputElement.focus()\"\n  >\n  </pupa-icon>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { InputBase } from '../../../../declarations/classes/abstract/input-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\n\n@Component({\n  selector: 'pupa-input-password',\n  templateUrl: './input-password.component.html',\n  styleUrls: ['./input-password.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputPasswordComponent extends InputBase<ValueType> {\n  public readonly typeIsText$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public togglePassword(): void {\n    this.typeIsText$.pipe(take(1)).subscribe((typeIsText: boolean) => this.typeIsText$.next(!typeIsText));\n    this.inputElementRef.nativeElement.focus();\n  }\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n  }\n}\n","<div class=\"input-wrapper\" [ngClass]=\"resultClassList$ | async\">\n  <pupa-icon *ngIf=\"leftIcon$ | async as leftIcon\" class=\"input-icon input-icon_custom\" [name]=\"leftIcon\"></pupa-icon>\n\n  <input\n    class=\"input\"\n    [type]=\"typeIsText$ | conditionAsync : 'text' : 'password'\"\n    #inputElement\n    [placeholder]=\"placeholder\"\n    [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n    (input)=\"updateValue(inputElement.value)\"\n    (focus)=\"emitFocusEvent($event)\"\n    (blur)=\"emitBlurEvent($event)\"\n    [autocomplete]=\"autocomplete ? 'on' : 'new-password'\"\n    [value]=\"value$ | async\"\n  />\n\n  <pupa-icon\n    *ngIf=\"!(isDisabled$ | async)\"\n    class=\"input-icon input-icon_password\"\n    [name]=\"typeIsText$ | conditionAsync : 'm-eye-closed' : 'm-eye-open'\"\n    (click)=\"togglePassword()\"\n  >\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"rightIcon$ | async as rightIcon\"\n    class=\"input-icon input-icon_custom\"\n    [name]=\"rightIcon\"\n  ></pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"input-icon input-icon_invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n    [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n    (click)=\"inputElement.focus()\"\n  >\n  </pupa-icon>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { InputBase } from '../../../../declarations/classes/abstract/input-base.abstract';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\n\n@Component({\n  selector: 'pupa-input-text',\n  templateUrl: './input-text.component.html',\n  styleUrls: ['./input-text.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputTextComponent extends InputBase<ValueType> {\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n  }\n\n  public reset(): void {\n    this.updateValue('');\n    this.inputElementRef.nativeElement.focus();\n  }\n}\n","<div class=\"input-wrapper\" [ngClass]=\"resultClassList$ | async\">\n  <pupa-icon *ngIf=\"leftIcon$ | async as leftIcon\" class=\"input-icon input-icon_custom\" [name]=\"leftIcon\"></pupa-icon>\n\n  <input\n    class=\"input\"\n    type=\"text\"\n    #inputElement\n    [placeholder]=\"placeholder\"\n    [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n    (input)=\"updateValue(inputElement.value)\"\n    (focus)=\"emitFocusEvent($event)\"\n    (blur)=\"emitBlurEvent($event)\"\n    [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n    [value]=\"value$ | async\"\n  />\n\n  <pupa-icon\n    *ngIf=\"rightIcon$ | async as rightIcon\"\n    class=\"input-icon input-icon_custom\"\n    [name]=\"rightIcon\"\n  ></pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isVisibleReset$ | async\"\n    class=\"input-icon input-icon_reset\"\n    name=\"m-abort\"\n    (click)=\"reset()\"\n  ></pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"input-icon input-icon_invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n    [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n    (click)=\"inputElement.focus()\"\n  ></pupa-icon>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { TimeDigitFormatPipe } from '@bimeister/pupakit.common';\nimport { isEmpty, isNil } from '@bimeister/utilities';\nimport { InputBase } from '../../../../declarations/classes/abstract/input-base.abstract';\nimport { InputDateTimeHelper } from '../../../../declarations/classes/input-date-time-helper.class';\nimport { ValueType } from '../../../../declarations/types/input-value.type';\nimport { NumericParsedTimeData } from '../../../../declarations/types/numeric-parsed-time-data.type';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\nimport { isDate } from '../../../../declarations/functions/is-date.function';\n\nconst MAX_HOURS: number = 23;\nconst MAX_MINUTES: number = 59;\nconst MAX_SECONDS: number = 59;\n\nconst DATE_FORMAT: string = 'HH:mm';\n\n@Component({\n  selector: 'pupa-input-time',\n  templateUrl: './input-time.component.html',\n  styleUrls: ['./input-time.component.scss'],\n  providers: [TimeDigitFormatPipe, DatePipe],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputTimeComponent extends InputBase<ValueType> implements OnDestroy {\n  public readonly timeMask: string = '00:00';\n  public readonly maxLengthInputValue: number = this.timeMask.length;\n\n  constructor(private readonly datePipe: DatePipe, ngControl: NgControl) {\n    super(ngControl);\n    this.leftIcon$.next('m-clock');\n  }\n\n  public setValue(value: ValueType): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    const truncatedValue: string = serializedValue.slice(0, this.maxLengthInputValue);\n    this.value$.next(truncatedValue);\n  }\n\n  public reset(): void {\n    this.updateValue('');\n    this.inputElementRef.nativeElement.focus();\n  }\n\n  public writeValue(newValue: ValueType): void {\n    if (isNil(newValue) || !isDate(newValue)) {\n      this.setValue('');\n      return;\n    }\n\n    const serializedValue: string = String(newValue);\n\n    const parsedValue: string = this.datePipe.transform(serializedValue, DATE_FORMAT);\n    this.setValue(parsedValue);\n  }\n\n  public handleChangedValue(onChangeCallback: OnChangeCallback<unknown>, value: ValueType): void {\n    const serializedValue: string = String(value);\n\n    if (isEmpty(serializedValue)) {\n      onChangeCallback(null);\n      this.setValue('');\n      return;\n    }\n\n    if (serializedValue.length < this.maxLengthInputValue) {\n      onChangeCallback(new Date(undefined));\n      this.setValue(serializedValue);\n      return;\n    }\n\n    const date: Date = this.getDateFromSerializedTime(serializedValue);\n\n    onChangeCallback(date);\n    this.setValue(serializedValue);\n  }\n\n  private getDateFromSerializedTime(value: string): Date {\n    const parseTimeData: NumericParsedTimeData = InputDateTimeHelper.getParsedNumericTimeData(value);\n\n    if (!this.isCorrectParsedNumericData(parseTimeData)) {\n      return new Date(undefined);\n    }\n\n    const date: Date = new Date();\n    date.setHours(parseTimeData.hours);\n    date.setMinutes(parseTimeData.minutes);\n    date.setSeconds(parseTimeData.seconds);\n\n    return date;\n  }\n\n  private isCorrectParsedNumericData({ hours, minutes, seconds }: NumericParsedTimeData): boolean {\n    const isTimePartCorrect = (value: number, maxValue: number): boolean => value >= 0 && value <= maxValue;\n    const isCorrectHours: boolean = isTimePartCorrect(hours, MAX_HOURS);\n    const isCorrectMinutes: boolean = isTimePartCorrect(minutes, MAX_MINUTES);\n    const isCorrectSeconds: boolean = isTimePartCorrect(seconds, MAX_SECONDS);\n\n    return isCorrectHours && isCorrectMinutes && isCorrectSeconds;\n  }\n}\n","<div class=\"input-wrapper\" [ngClass]=\"resultClassList$ | async\">\n  <pupa-icon *ngIf=\"leftIcon$ | async as leftIcon\" class=\"input-icon input-icon_custom\" [name]=\"leftIcon\"></pupa-icon>\n\n  <input\n    class=\"input\"\n    type=\"text\"\n    #inputElement\n    [placeholder]=\"timeMask\"\n    [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n    (input)=\"updateValue(inputElement.value)\"\n    (focus)=\"emitFocusEvent($event)\"\n    (blur)=\"emitBlurEvent($event)\"\n    [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n    [value]=\"value$ | async\"\n    [mask]=\"timeMask\"\n    [maxLength]=\"maxLengthInputValue\"\n    [ngModel]=\"value$ | async\"\n  />\n\n  <pupa-icon\n    *ngIf=\"rightIcon$ | async as rightIcon\"\n    class=\"input-icon input-icon_custom\"\n    [name]=\"rightIcon\"\n  ></pupa-icon>\n\n  <pupa-icon *ngIf=\"isVisibleReset$ | async\" class=\"input-icon input-icon_reset\" name=\"m-abort\" (click)=\"reset()\">\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"input-icon input-icon_invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover\"\n    [tooltipDisabled]=\"!invalidTooltip && !invalidTooltipContentTemplate ? true : invalidTooltipDisabled\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate\"\n    (click)=\"inputElement.focus()\"\n  >\n  </pupa-icon>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\nimport {\n  mAbortIcon,\n  mCalendarIcon,\n  mClockIcon,\n  mErrorIcon,\n  mEyeClosedIcon,\n  mEyeOpenIcon,\n  PupaIconsModule,\n} from '@bimeister/pupakit.icons';\nimport { PupaTooltipModule } from '@bimeister/pupakit.kit';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { PupaDateTimePickerModule } from '../date-time-picker/date-time-picker.module';\nimport { PupaDroppableModule } from '../droppable/droppable.module';\nimport { InputDateRangeDoubleComponent } from './components/input-date-range-double/input-date-range-double.component';\nimport { InputDateRangeComponent } from './components/input-date-range/input-date-range.component';\nimport { InputDateTimeSecondsComponent } from './components/input-date-time-seconds/input-date-time-seconds.component';\nimport { InputDateTimeComponent } from './components/input-date-time/input-date-time.component';\nimport { InputDateComponent } from './components/input-date/input-date.component';\nimport { InputNumberComponent } from './components/input-number/input-number.component';\nimport { InputPasswordComponent } from './components/input-password/input-password.component';\nimport { InputTextComponent } from './components/input-text/input-text.component';\nimport { InputTimeComponent } from './components/input-time/input-time.component';\n\nconst EXPORTS: any[] = [\n  InputTextComponent,\n  InputPasswordComponent,\n  InputDateComponent,\n  InputNumberComponent,\n  InputTimeComponent,\n  InputDateTimeComponent,\n  InputDateTimeSecondsComponent,\n  InputDateRangeComponent,\n  InputDateRangeDoubleComponent,\n];\n\nconst DECLARATIONS: any[] = [...EXPORTS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PupaPipesModule,\n    PupaDateTimePickerModule,\n    PupaDroppableModule,\n    PupaTooltipModule,\n    PupaIconsModule.forFeature([mAbortIcon, mCalendarIcon, mErrorIcon, mEyeClosedIcon, mEyeOpenIcon, mClockIcon]),\n    NgxMaskModule.forRoot(),\n  ],\n  exports: [...EXPORTS],\n})\nexport class PupaInputModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LabelSize } from '../../../../declarations/types/label-size.type';\n\n@Component({\n  selector: 'pupa-label',\n  templateUrl: './label.component.html',\n  styleUrls: ['./label.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LabelComponent implements OnChanges {\n  @Input() public readonly size: LabelSize = 'medium';\n  public readonly size$: BehaviorSubject<LabelSize> = new BehaviorSubject<LabelSize>('medium');\n\n  @Input() public readonly disabled: boolean = false;\n  public readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly icon: Nullable<string>;\n  public readonly icon$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.size$,\n    this.disabled$.pipe(map((isInvalid: boolean) => (isInvalid ? 'disabled' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `label_${innerProperty}`)\n    )\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processDisabledChange(changes?.disabled);\n    this.processIconChange(changes?.icon);\n    this.processSizeChange(changes?.size);\n  }\n\n  private processSizeChange(change: ComponentChange<this, LabelSize>): void {\n    const updatedValue: LabelSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processDisabledChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.disabled$.next(updatedValue);\n  }\n\n  private processIconChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (typeof updatedValue === 'undefined') {\n      return;\n    }\n\n    this.icon$.next(updatedValue);\n  }\n}\n","<div class=\"label\" [ngClass]=\"resultClassList$ | async\">\n  <ng-container *ngIf=\"icon$ | async\">\n    <pupa-icon class=\"label__icon\" [name]=\"icon$ | async\"></pupa-icon>\n  </ng-container>\n  <div class=\"label__content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { LabelComponent } from './components/label/label.component';\n\nconst EXPORTS: any[] = [LabelComponent];\n\nconst DECLARATIONS: any[] = [...EXPORTS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [CommonModule, PupaIconsModule],\n  exports: [...EXPORTS],\n})\nexport class PupaLabelModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { RadioControlSize } from '../../../declarations/types/radio-control-size.type';\nimport { RadioGroupDirection } from '../../../declarations/types/radio-group-direction.type';\n\n@Injectable()\nexport class RadioGroupService<T> {\n  private readonly valueState$: BehaviorSubject<T> = new BehaviorSubject<T>(null);\n  public readonly value$: Observable<T> = this.valueState$.asObservable();\n\n  private readonly onTouchState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly onTouch$: Observable<boolean> = this.onTouchState$.asObservable();\n\n  private readonly isDisabledState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isDisabled$: Observable<boolean> = this.isDisabledState$.asObservable();\n\n  private readonly labelSizeState$: BehaviorSubject<RadioControlSize> = new BehaviorSubject<RadioControlSize>('medium');\n  public readonly labelSize$: Observable<RadioControlSize> = this.labelSizeState$.asObservable();\n\n  private readonly directionState$: BehaviorSubject<RadioGroupDirection> = new BehaviorSubject<RadioGroupDirection>(\n    'column'\n  );\n  public readonly direction$: Observable<RadioGroupDirection> = this.directionState$.asObservable();\n\n  public setValue(value: T): void {\n    this.valueState$.next(value);\n  }\n\n  public setOnTouch(value: boolean): void {\n    this.onTouchState$.next(value);\n  }\n\n  public setDisabled(value: boolean): void {\n    this.isDisabledState$.next(value);\n  }\n\n  public setLabelSize(value: RadioControlSize): void {\n    this.labelSizeState$.next(value);\n  }\n\n  public setDirection(value: RadioGroupDirection): void {\n    this.directionState$.next(value);\n  }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { filterFalsy, isNil, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { RadioControlSize } from '../../../../declarations/types/radio-control-size.type';\nimport { RadioGroupDirection } from '../../../../declarations/types/radio-group-direction.type';\nimport { RadioGroupService } from '../../services/radio-group.service';\n\n@Component({\n  selector: 'pupa-radio-control',\n  templateUrl: './radio-control.component.html',\n  styleUrls: ['./radio-control.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioControlComponent<T> implements OnChanges {\n  @Input() private readonly value: T;\n  @Input() public tabindex: number = 0;\n  @Input() public withLabel: boolean = true;\n\n  public readonly labelSize$: Observable<RadioControlSize> = this.radioGroupService.labelSize$;\n\n  public readonly isSelected$: Observable<boolean> = this.radioGroupService.value$.pipe(\n    distinctUntilChanged(),\n    map((groupControlValue: T) => groupControlValue === this.value),\n    shareReplayWithRefCount()\n  );\n\n  public readonly isDisabled$: Observable<boolean> = this.radioGroupService.isDisabled$;\n\n  public readonly directions$: Observable<RadioGroupDirection> = this.radioGroupService.direction$;\n\n  public readonly isWithLabel$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  constructor(private readonly radioGroupService: RadioGroupService<T>) {}\n\n  @HostListener('click')\n  public processClick(): void {\n    this.radioGroupService.isDisabled$.pipe(take(1), filterFalsy()).subscribe(() => {\n      this.select();\n      this.setOnTouch();\n    });\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processWithLabelChange(changes?.withLabel);\n  }\n\n  private select(): void {\n    this.radioGroupService.setValue(this.value);\n  }\n\n  private setOnTouch(): void {\n    this.radioGroupService.setOnTouch(true);\n  }\n\n  private processWithLabelChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isWithLabel$.next(updatedValue);\n  }\n}\n","<ng-container\n  [ngTemplateOutlet]=\"template\"\n  [ngTemplateOutletContext]=\"{\n    isDisabled: isDisabled$ | async,\n    isSelected: isSelected$ | async,\n    labelSize: labelSize$ | async,\n    direction: directions$ | async,\n    isWithLabel: isWithLabel$ | async\n  }\"\n>\n</ng-container>\n\n<ng-template\n  #template\n  let-isDisabled=\"isDisabled\"\n  let-isSelected=\"isSelected\"\n  let-labelSize=\"labelSize\"\n  let-direction=\"direction\"\n  let-isWithLabel=\"isWithLabel\"\n>\n  <section\n    class=\"radio-control\"\n    [tabindex]=\"tabindex\"\n    [class.radio-control_disabled]=\"isDisabled\"\n    [class.radio-control_row]=\"direction === 'row'\"\n    [class.radio-control_column]=\"direction === 'column'\"\n    [class.radio-control_without-label]=\"!isWithLabel\"\n    (keydown.enter)=\"processClick()\"\n  >\n    <div class=\"radio-control-marker-wrapper\">\n      <div\n        class=\"radio-control-marker\"\n        [class.radio-control-marker_selected]=\"isSelected\"\n        [class.radio-control-marker_disabled]=\"isDisabled\"\n      >\n        <div class=\"radio-control-marker__dot\"></div>\n      </div>\n    </div>\n    <div\n      class=\"radio-control-label\"\n      [class.radio-control-label_selected]=\"isSelected\"\n      [class.radio-control-label_disabled]=\"isDisabled\"\n      [class.radio-control-label_small]=\"labelSize === 'small'\"\n      [class.radio-control-label_hidden]=\"!isWithLabel\"\n    >\n      <ng-content></ng-content>\n    </div>\n  </section>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { filterTruthy, isEmpty, VOID } from '@bimeister/utilities';\nimport { Observable, Subscription } from 'rxjs';\nimport { OnChangeCallback } from '../../../../declarations/types/on-change-callback.type';\nimport { OnTouchedCallback } from '../../../../declarations/types/on-touched-callback.type';\nimport { RadioControlSize } from '../../../../declarations/types/radio-control-size.type';\nimport { RadioGroupDirection } from '../../../../declarations/types/radio-group-direction.type';\nimport { RadioGroupService } from '../../services/radio-group.service';\n\n@Component({\n  selector: 'pupa-radio-group',\n  templateUrl: './radio-group.component.html',\n  styleUrls: ['./radio-group.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    RadioGroupService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RadioGroupComponent),\n      multi: true,\n    },\n  ],\n})\nexport class RadioGroupComponent<T> implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {\n  @Input() public direction: RadioGroupDirection = 'column';\n  @Input() public readonly size: RadioControlSize = 'medium';\n  @Input() public readonly disabled: boolean = false;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  public readonly value$: Observable<T> = this.radioGroupService.value$;\n  public readonly onTouch$: Observable<boolean> = this.radioGroupService.onTouch$;\n\n  constructor(private readonly radioGroupService: RadioGroupService<T>) {}\n\n  public ngOnInit(): void {\n    this.subscription.add(this.triggerCallBackOnChange());\n    this.subscription.add(this.triggerCallBackOnTouch());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processLabelSizeChange(changes?.size);\n    this.processIsDisabledChange(changes?.disabled);\n    this.processDirectionChange(changes?.direction);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public writeValue(value: T): void {\n    this.radioGroupService.setValue(value);\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    this.radioGroupService.setDisabled(isDisabled);\n  }\n\n  public onChange: OnChangeCallback<T> = () => VOID;\n  public registerOnChange(onChange: OnChangeCallback<T>): void {\n    this.onChange = onChange;\n  }\n\n  public onTouched: OnTouchedCallback = () => VOID;\n  public registerOnTouched(onTouched: OnTouchedCallback): void {\n    this.onTouched = onTouched;\n  }\n\n  private triggerCallBackOnChange(): Subscription {\n    return this.value$.subscribe((value: T) => this.onChange(value));\n  }\n\n  private triggerCallBackOnTouch(): Subscription {\n    return this.onTouch$.pipe(filterTruthy()).subscribe(() => this.onTouched());\n  }\n\n  private processLabelSizeChange(change: ComponentChange<this, RadioControlSize>): void {\n    const updatedValue: RadioControlSize | undefined = change?.currentValue;\n\n    if (isEmpty(updatedValue)) {\n      return;\n    }\n\n    this.radioGroupService.setLabelSize(updatedValue);\n  }\n\n  private processIsDisabledChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isEmpty(updatedValue)) {\n      return;\n    }\n\n    this.radioGroupService.setDisabled(updatedValue);\n  }\n\n  private processDirectionChange(change: ComponentChange<this, RadioGroupDirection>): void {\n    const updatedValue: RadioGroupDirection | undefined = change?.currentValue;\n\n    if (isEmpty(updatedValue)) {\n      return;\n    }\n\n    this.radioGroupService.setDirection(updatedValue);\n  }\n}\n","<section\n  class=\"radio-group\"\n  [class.radio-group_row]=\"direction === 'row'\"\n  [class.radio-group_column]=\"direction === 'column'\"\n>\n  <ng-content></ng-content>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PupaDirectivesModule } from '@bimeister/pupakit.common';\n\nimport { RadioControlComponent } from './components/radio-control/radio-control.component';\nimport { RadioGroupComponent } from './components/radio-group/radio-group.component';\n\n@NgModule({\n  declarations: [RadioGroupComponent, RadioControlComponent],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, PupaDirectivesModule],\n  exports: [RadioGroupComponent, RadioControlComponent],\n})\nexport class PupaRadioGroupModule {}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\ntype StarSize = 'large' | 'medium' | 'small';\n\n@Component({\n  selector: 'pupa-rating',\n  templateUrl: './rating.component.html',\n  styleUrls: ['./rating.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RatingComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RatingComponent {\n  @Input() public set numberOfStars(v: number) {\n    this._numberOfStars = v;\n    this.initStars();\n  }\n  public get value(): number {\n    return this._value;\n  }\n\n  @Input() public set value(v: number) {\n    if (v !== this._value) {\n      this._value = v;\n      this.onChange(v);\n      this.change.emit(v);\n    }\n  }\n  private _numberOfStars: number = 5;\n  public stars: any[];\n  @Input() public disabled: boolean;\n  @Input() public size: StarSize = 'large';\n  @Output() public change: EventEmitter<number> = new EventEmitter<number>();\n  private _value: number = 0;\n\n  constructor(private readonly changeDetectorRef: ChangeDetectorRef) {\n    this.initStars();\n  }\n\n  public onChange: (v: number) => void = (v: number) => {\n    this.change.emit(v);\n  };\n  public onTouched: () => void = () => null;\n\n  public writeValue(value: number): void {\n    if ((value as any) instanceof Event) {\n      return;\n    }\n    this.changeDetectorRef.markForCheck();\n    this._value = value;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  public setRating(v: number): void {\n    if (this.disabled) {\n      return;\n    }\n    this.value = v;\n  }\n\n  public registerOnChange(fn: (v: number) => void): void {\n    this.onChange = (v: number): void => {\n      this.change.emit(v);\n      fn(v);\n    };\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public onClick(value: number): void {\n    if (this.disabled) {\n      return;\n    }\n    this.value = value;\n  }\n\n  private initStars(): void {\n    this.stars = new Array(this._numberOfStars).fill(null);\n  }\n}\n","<div\n  class=\"pupa-star\"\n  *ngFor=\"let star of stars; let index = index\"\n  [class.clickable]=\"!disabled\"\n  [class.disabled]=\"disabled\"\n  [class.medium]=\"size === 'medium'\"\n  [class.small]=\"size === 'small'\"\n  (click)=\"onClick(index + 1)\"\n>\n  <pupa-icon [name]=\"index <= value - 1 ? 'star' : 'star-outline'\"></pupa-icon>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PupaIconsModule, mdStarIcon, mdStarOutlineIcon } from '@bimeister/pupakit.icons';\nimport { RatingComponent } from './components/rating/rating.component';\n\n@NgModule({\n  declarations: [RatingComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PupaIconsModule.forFeature([mdStarIcon, mdStarOutlineIcon]),\n  ],\n  exports: [RatingComponent],\n})\nexport class PupaRatingModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, Optional, ViewEncapsulation } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { InputBase } from '../../../../declarations/classes/abstract/input-base.abstract';\nimport { filterFalsy, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, switchMapTo, take, tap } from 'rxjs/operators';\nimport { CollapseDirection } from '../../../../declarations/types/collapse-direction.type';\n\nconst DEFAULT_COLLAPSE_DIRECTION: CollapseDirection = 'to-left';\n\n@Component({\n  selector: 'pupa-search-field',\n  templateUrl: './search-field.component.html',\n  styleUrls: ['./search-field.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchFieldComponent extends InputBase<Nullable<string>> implements OnChanges {\n  @Input() public collapseDirection: CollapseDirection = DEFAULT_COLLAPSE_DIRECTION;\n  public readonly collapseDirection$: BehaviorSubject<CollapseDirection> = new BehaviorSubject(\n    DEFAULT_COLLAPSE_DIRECTION\n  );\n\n  @Input() public collapsible: boolean = false;\n  public readonly isCollapsible$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isCollapsed$: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.isCollapsible$.pipe(map((isCollapsible: boolean) => (isCollapsible ? 'collapsible' : null))),\n    this.isCollapsed$.pipe(map((isCollapsed: boolean) => (isCollapsed ? 'collapsed' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `search-field__input_${innerProperty}`)\n    )\n  );\n\n  constructor(@Optional() ngControl: NgControl) {\n    super(ngControl);\n\n    this.subscription.add(this.processIsCollapsedWhenIsCollapsibleChanged());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    super.ngOnChanges(changes);\n    this.processCollapsibleChange(changes?.collapsible);\n    this.processCollapseDirectionChange(changes?.collapseDirection);\n  }\n\n  public setValue(value: Nullable<string>): void {\n    const serializedValue: string = isNil(value) ? '' : String(value);\n    this.value$.next(serializedValue);\n\n    if (!isEmpty(serializedValue)) {\n      this.isFilled$.next(true);\n    }\n  }\n\n  public reset(): void {\n    this.updateValue('');\n    this.isCollapsible$.pipe(take(1)).subscribe((collapsible: boolean) => {\n      if (collapsible) {\n        this.isCollapsed$.next(true);\n        return;\n      }\n      this.inputElementRef.nativeElement.focus();\n    });\n  }\n\n  public changeCollapsed(): void {\n    this.isDisabled$\n      .pipe(\n        take(1),\n        filterFalsy(),\n        switchMapTo(this.isCollapsed$),\n        take(1),\n        map((collapsed: boolean) => !collapsed),\n        tap((nextCollapsed: boolean) => {\n          if (!nextCollapsed) {\n            this.inputElementRef.nativeElement.focus();\n          }\n        })\n      )\n      .subscribe((nextCollapsed: boolean) => this.isCollapsed$.next(nextCollapsed));\n  }\n\n  private processCollapsibleChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isCollapsible$.next(updatedValue);\n  }\n\n  private processCollapseDirectionChange(change: ComponentChange<this, CollapseDirection>): void {\n    const updatedValue: Nullable<CollapseDirection> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.collapseDirection$.next(updatedValue);\n  }\n\n  private processIsCollapsedWhenIsCollapsibleChanged(): Subscription {\n    return this.isCollapsible$.pipe(distinctUntilChanged()).subscribe((isCollapsible: boolean) => {\n      this.isCollapsed$.next(isCollapsible);\n    });\n  }\n}\n","<ng-container\n  [ngTemplateOutlet]=\"searchFieldTemplate\"\n  [ngTemplateOutletContext]=\"{\n    isCollapsed: isCollapsed$ | async,\n    isDisabled: isDisabled$ | async,\n    isFocused: isFocused$ | async\n  }\"\n>\n</ng-container>\n\n<ng-template #searchFieldTemplate let-isCollapsed=\"isCollapsed\" let-isDisabled=\"isDisabled\" let-isFocused=\"isFocused\">\n  <div\n    data-meta=\"pupa-search-field\"\n    class=\"search-field\"\n    [ngClass]=\"collapseDirection$ | async\"\n    [class.search-field_collapsible]=\"isCollapsible$ | async\"\n    [class.search-field_collapsed]=\"isCollapsed\"\n  >\n    <input\n      data-meta=\"pupa-search-field__input\"\n      class=\"search-field__input\"\n      [ngClass]=\"resultClassList$ | async\"\n      type=\"text\"\n      #inputElement\n      [placeholder]=\"placeholder\"\n      [attr.disabled]=\"isDisabled ? true : null\"\n      (input)=\"updateValue(inputElement.value)\"\n      (focus)=\"emitFocusEvent($event)\"\n      (blur)=\"emitBlurEvent($event)\"\n      [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n      [value]=\"value$ | async\"\n    />\n    <pupa-icon\n      data-meta=\"pupa-search-field__collapse-button\"\n      class=\"search-field__icon\"\n      [class.search-field__icon_collapsed]=\"isCollapsed\"\n      [class.search-field__icon_disabled]=\"isDisabled\"\n      (click)=\"changeCollapsed()\"\n      name=\"app-search\"\n    >\n    </pupa-icon>\n    <pupa-button-icon\n      data-meta=\"pupa-search-field__reset-button\"\n      class=\"search-field__reset\"\n      [class.search-field__reset_visible]=\"isFocused\"\n      icon=\"app-cross-circle\"\n      size=\"s\"\n      tabIndex=\"-1\"\n      kind=\"secondary\"\n      [disabled]=\"isDisabled\"\n      (click)=\"reset()\"\n    >\n    </pupa-button-icon>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { appCrossCircleIcon, appSearchIcon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaButtonsModule } from '@bimeister/pupakit.kit';\nimport { SearchFieldComponent } from './components/search-field/search-field.component';\n\n@NgModule({\n  declarations: [SearchFieldComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PupaButtonsModule,\n    PupaIconsModule.forFeature([appCrossCircleIcon, appSearchIcon]),\n  ],\n  exports: [SearchFieldComponent],\n})\nexport class PupaSearchFieldModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-select-dropdown-footer',\n  templateUrl: './select-dropdown-footer.component.html',\n  styleUrls: ['./select-dropdown-footer.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectDropdownFooterComponent {}\n","<section class=\"footer\">\n  <ng-content></ng-content>\n</section>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-select-dropdown-header',\n  templateUrl: './select-dropdown-header.component.html',\n  styleUrls: ['./select-dropdown-header.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectDropdownHeaderComponent {}\n","<section class=\"header\">\n  <ng-content></ng-content>\n</section>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, OverlayRef } from '@angular/cdk/overlay';\nimport { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { filterNotNil, filterTruthy, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';\nimport { SelectStateServiceDeclaration } from '../../interfaces/select-state-service-declaration.interface';\n\n@Directive()\nexport abstract class SelectDropdownBase<T> implements OnInit, OnDestroy {\n  protected abstract readonly cdkConnectedOverlay: CdkConnectedOverlay;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  public readonly isExpanded$: Observable<boolean> = this.selectStateService.isExpanded$;\n  public readonly animationState$: Observable<string> = this.isExpanded$.pipe(\n    distinctUntilChanged(),\n    map((isExpanded: boolean) => (isExpanded ? 'expanded' : 'void'))\n  );\n\n  public readonly dropDownOverlayOrigin$: Observable<CdkOverlayOrigin> =\n    this.selectStateService.dropdownOverlayOrigin$.pipe(filter((origin: CdkOverlayOrigin) => !isNil(origin)));\n\n  public readonly dropDownTriggerButtonWidthPx$: Observable<number> = this.isExpanded$.pipe(\n    filter((isExpanded: boolean) => isExpanded),\n    switchMap(() => this.selectStateService.dropdownTriggerButtonWidthPx$)\n  );\n\n  public readonly overlayPositions: ConnectionPositionPair[] = [\n    new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n    new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),\n    new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }),\n    new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }),\n  ];\n\n  public readonly isOverlayAttached$: BehaviorSubject<boolean> = new BehaviorSubject(null);\n\n  constructor(private readonly selectStateService: SelectStateServiceDeclaration<T>) {}\n\n  public ngOnInit(): void {\n    this.subscription.add(this.handleOverlayRefOnOpen());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public processEventPropagation(event: Event): void {\n    event.stopPropagation();\n  }\n\n  public handleAttachOverlay(): void {\n    this.isOverlayAttached$.next(true);\n  }\n\n  public handleDetachOverlay(): void {\n    this.isOverlayAttached$.next(false);\n  }\n\n  private handleOverlayRefOnOpen(): Subscription {\n    return combineLatest([this.isExpanded$, this.isOverlayAttached$.pipe(filterNotNil())])\n      .pipe(\n        map(([isExpanded, isOverlayAttached]: boolean[]) => isExpanded && isOverlayAttached),\n        filterTruthy(),\n        map(() => this.cdkConnectedOverlay.overlayRef)\n      )\n      .subscribe((overlayRef: OverlayRef) => {\n        this.selectStateService.defineDropdownOverlayRef(overlayRef);\n      });\n  }\n}\n","import { CdkOverlayOrigin, OverlayRef } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, EventEmitter, Inject, Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { FormControlStatus, NgControl } from '@angular/forms';\nimport { filterNotNil, isEmpty, isNil, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Observable, of, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { isFormControlValidStatus } from '../../../declarations/functions/is-form-control-valid-status.function';\nimport { SelectStateServiceDeclaration as SelectStateServiceInterface } from '../../../declarations/interfaces/select-state-service-declaration.interface';\nimport { OnChangeCallback } from '../../../declarations/types/on-change-callback.type';\nimport { OnTouchedCallback } from '../../../declarations/types/on-touched-callback.type';\nimport { SelectOuterValue } from '../../../declarations/types/select-outer-value.type';\nimport { SelectSize } from '../../../declarations/types/select-size.type';\n\n/** @dynamic */\n@Injectable({\n  providedIn: 'any',\n})\nexport class SelectStateService<T> implements SelectStateServiceInterface<T>, OnDestroy {\n  private readonly currentSerializedValue$: BehaviorSubject<Set<string>> = new BehaviorSubject<Set<string>>(\n    new Set<string>()\n  );\n  public readonly currentValue$: Observable<T[]> = this.currentSerializedValue$.pipe(\n    map((serializedSet: Set<string>) => SelectStateService.getParsedValue<T>(serializedSet)),\n    shareReplayWithRefCount()\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n\n  private readonly isMultiSelectionEnabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  private readonly isUnselectionEnabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isDisabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isExpanded$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly control$: BehaviorSubject<Nullable<NgControl>> = new BehaviorSubject<Nullable<NgControl>>(null);\n  public readonly isTouched$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<Nullable<boolean>>(null);\n  public readonly isPatched$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<Nullable<boolean>>(null);\n  public readonly isValid$: Observable<boolean> = this.control$.pipe(\n    switchMap((control: NgControl) =>\n      isNil(control)\n        ? of(true)\n        : control.statusChanges.pipe(\n            startWith(control.status),\n            map((status: FormControlStatus) => isFormControlValidStatus(status))\n          )\n    ),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly isFilled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly withReset$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly inline$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly size$: BehaviorSubject<SelectSize> = new BehaviorSubject<SelectSize>('medium');\n\n  public readonly isTriggerTouched$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly invalidTooltipHideOnHover$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly invalidTooltipDisabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly invalidTooltip$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n  public readonly invalidTooltipContentTemplate$: BehaviorSubject<Nullable<TemplateRef<unknown>>> = new BehaviorSubject<\n    Nullable<TemplateRef<unknown>>\n  >(null);\n\n  public readonly placeholder$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  private readonly onChangeCallback$: BehaviorSubject<OnChangeCallback<SelectOuterValue<T>>> = new BehaviorSubject<\n    OnChangeCallback<SelectOuterValue<T>>\n  >(null);\n  private readonly onTouchedCallback$: BehaviorSubject<OnTouchedCallback> = new BehaviorSubject<OnTouchedCallback>(\n    null\n  );\n\n  public readonly dropdownOverlayOrigin$: BehaviorSubject<CdkOverlayOrigin> = new BehaviorSubject<CdkOverlayOrigin>(\n    null\n  );\n  private readonly dropdownTriggerButton$: BehaviorSubject<HTMLButtonElement> = new BehaviorSubject<HTMLButtonElement>(\n    null\n  );\n  public readonly dropdownOverlayRef$: BehaviorSubject<OverlayRef> = new BehaviorSubject<OverlayRef>(null);\n  public readonly dropdownTriggerButtonWidthPx$: Observable<number> = this.dropdownTriggerButton$.pipe(\n    map((button: HTMLButtonElement | null) => {\n      if (isNil(button)) {\n        return undefined;\n      }\n\n      const { width }: DOMRect = button?.getBoundingClientRect();\n      return width;\n    }),\n    map((width: number | undefined) => (isNil(width) ? 0 : width))\n  );\n\n  public readonly resetOutput: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public setControlRef(control: NgControl): void {\n    this.control$.next(control);\n  }\n\n  public collapse(): void {\n    this.isExpanded$.next(false);\n  }\n\n  public open(): void {\n    this.isExpanded$.next(true);\n    this.listenOutsideEventsForClose();\n  }\n\n  public toggleExpansion(): void {\n    this.isExpanded$.pipe(take(1)).subscribe((isExpanded: boolean) => {\n      isExpanded ? this.collapse() : this.open();\n    });\n  }\n\n  public defineDropdownTrigger(overlayOrigin: CdkOverlayOrigin, buttonElement: HTMLButtonElement): void {\n    this.dropdownOverlayOrigin$.next(overlayOrigin);\n    this.dropdownTriggerButton$.next(buttonElement);\n  }\n\n  public defineDropdownOverlayRef(overlayRef: OverlayRef): void {\n    this.dropdownOverlayRef$.next(overlayRef);\n  }\n\n  public defineOnChangeCallback(onChange: OnChangeCallback<T[]>): void {\n    this.onChangeCallback$.next(onChange);\n  }\n\n  public defineOnTouchedCallback(onTouched: OnTouchedCallback): void {\n    this.onTouchedCallback$.next(onTouched);\n  }\n\n  public setMultiSelectionState(isEnabled: boolean): void {\n    this.isMultiSelectionEnabled$.next(isEnabled);\n  }\n\n  public setIsTriggerTouchedState(isTriggerTouched: boolean): void {\n    this.isTriggerTouched$.next(isTriggerTouched);\n  }\n\n  public setUnselectionState(isEnabled: boolean): void {\n    this.isUnselectionEnabled$.next(isEnabled);\n  }\n\n  public setIsPatchedState(isPatched: boolean): void {\n    this.isPatched$.next(isPatched);\n  }\n\n  public setPlaceholderState(placeholder: string): void {\n    this.placeholder$.next(placeholder);\n  }\n\n  public setWithResetState(withReset: boolean): void {\n    this.withReset$.next(withReset);\n  }\n\n  public setInlineState(inline: boolean): void {\n    this.inline$.next(inline);\n  }\n\n  public setSizeState(size: SelectSize): void {\n    this.size$.next(size);\n  }\n\n  public setInvalidTooltipHideOnHoverState(invalidTooltipHideOnHover: boolean): void {\n    this.invalidTooltipHideOnHover$.next(invalidTooltipHideOnHover);\n  }\n\n  public setInvalidTooltipDisabledState(invalidTooltipDisabled: boolean): void {\n    this.invalidTooltipDisabled$.next(invalidTooltipDisabled);\n  }\n\n  public setInvalidTooltipState(invalidTooltip: Nullable<string>): void {\n    this.invalidTooltip$.next(invalidTooltip);\n  }\n\n  public setInvalidTooltipContentTemplateState(invalidTooltipContentTemplate: Nullable<TemplateRef<unknown>>): void {\n    this.invalidTooltipContentTemplate$.next(invalidTooltipContentTemplate);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.isDisabled$.next(isDisabled);\n  }\n\n  public processSelection(value: T): void {\n    combineLatest([this.isMultiSelectionEnabled$, this.isUnselectionEnabled$, this.currentSerializedValue$])\n      .pipe(\n        take(1),\n        map(\n          ([isMultiSelectionEnabled, isUnselectionEnabled, currentSerializedValue]: [\n            boolean,\n            boolean,\n            Set<string>\n          ]) => {\n            const upcomingSerializedValue: string = JSON.stringify(value);\n\n            const upcomingValueAlreadyExists: boolean = currentSerializedValue.has(upcomingSerializedValue);\n\n            const currentSerializedValueItems: string[] = Array.from(currentSerializedValue.values());\n\n            if (isMultiSelectionEnabled && upcomingValueAlreadyExists) {\n              const updatedItems: string[] = currentSerializedValueItems.filter(\n                (valueItem: string) => valueItem !== upcomingSerializedValue\n              );\n              return new Set<string>(updatedItems);\n            }\n\n            if (isMultiSelectionEnabled && !upcomingValueAlreadyExists) {\n              const updatedItems: string[] = [...currentSerializedValueItems, upcomingSerializedValue];\n              return new Set<string>(updatedItems);\n            }\n\n            if (!isMultiSelectionEnabled && !upcomingValueAlreadyExists) {\n              return new Set<string>([upcomingSerializedValue]);\n            }\n            return isUnselectionEnabled ? new Set<string>() : new Set<string>(currentSerializedValue);\n          }\n        ),\n        withLatestFrom(this.onChangeCallback$, this.onTouchedCallback$, this.isMultiSelectionEnabled$)\n      )\n      .subscribe(\n        ([updatedValue, onChangeCallback, onTouchedCallback, isMultiSelectionEnabled]: [\n          Set<string>,\n          OnChangeCallback<SelectOuterValue<T>>,\n          OnTouchedCallback,\n          boolean\n        ]) => {\n          this.setIsFilled(updatedValue.size !== 0);\n          this.currentSerializedValue$.next(updatedValue);\n          this.isTouched$.next(true);\n\n          if (typeof onChangeCallback === 'function') {\n            const parsedValue: T[] = SelectStateService.getParsedValue<T>(updatedValue);\n            onChangeCallback(isMultiSelectionEnabled ? parsedValue : parsedValue[0]);\n          }\n\n          if (typeof onTouchedCallback === 'function') {\n            onTouchedCallback();\n          }\n\n          if (!isMultiSelectionEnabled) {\n            this.collapse();\n          }\n        }\n      );\n  }\n\n  public setIsFilled(isFilled: boolean): void {\n    this.isFilled$.next(isFilled);\n  }\n\n  public isPicked(value: T): Observable<boolean> {\n    return this.currentSerializedValue$.pipe(\n      map((serializedSet: Set<string>) => {\n        const serializedValue: string = JSON.stringify(value);\n        return serializedSet.has(serializedValue);\n      })\n    );\n  }\n\n  public setValue(value: SelectOuterValue<T>): void {\n    const sanitizedValue: T[] = Array.isArray(value) ? value : [value];\n    const serializedValue: string[] = sanitizedValue.map((valueItem: T) => JSON.stringify(valueItem));\n    const serializedSet: Set<string> = new Set<string>(serializedValue);\n    this.currentSerializedValue$.next(serializedSet);\n\n    if (!isEmpty(value)) {\n      this.isTouched$.next(true);\n    }\n  }\n\n  public reset(): void {\n    this.control$\n      .pipe(\n        take(1),\n        filterNotNil(),\n        withLatestFrom(this.isMultiSelectionEnabled$, this.onTouchedCallback$, this.onChangeCallback$)\n      )\n      .subscribe(\n        ([control, isMultiSelectionEnable, onTouchedCallback, onChangeCallback]: [\n          NgControl,\n          boolean,\n          OnTouchedCallback,\n          OnChangeCallback<T | T[]>\n        ]) => {\n          const resetValue: T | T[] = isMultiSelectionEnable ? [] : null;\n\n          control.control.setValue(resetValue);\n\n          if (typeof onTouchedCallback === 'function') {\n            onTouchedCallback();\n          }\n\n          if (typeof onChangeCallback === 'function') {\n            onChangeCallback(resetValue);\n          }\n\n          this.resetOutput.next();\n        }\n      );\n  }\n\n  public processFocusInputContainer(inputElement: ElementRef<HTMLInputElement>): Subscription {\n    return this.isExpanded$\n      .pipe(filter(() => !isNil(inputElement)))\n      .subscribe((isExpanded: boolean) =>\n        isExpanded ? inputElement.nativeElement.focus() : inputElement.nativeElement.blur()\n      );\n  }\n\n  private listenOutsideEventsForClose(): void {\n    const touchMove$: Observable<MouseEvent> = fromEvent<MouseEvent>(this.document, 'touchmove');\n    const wheel$: Observable<MouseEvent> = fromEvent<MouseEvent>(this.document, 'wheel');\n    const resize$: Observable<MouseEvent> = fromEvent<MouseEvent>(window, 'resize');\n\n    merge(touchMove$, wheel$, resize$)\n      .pipe(take(1))\n      .subscribe(() => this.collapse());\n  }\n\n  private static getParsedValue<V>(serializedSet: Set<string>): V[] {\n    const parsedValue: V[] = Array.from(serializedSet.values()).map((setValue: string) => JSON.parse(setValue));\n    return parsedValue;\n  }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SelectDropdownBase } from '../../../../declarations/classes/abstract/select-dropdown-base.abstract';\nimport { SelectStateService } from '../../services/select-state.service';\n\nconst ANIMATION_DURATION_MS: number = 150;\n\n@Component({\n  selector: 'pupa-select-dropdown',\n  templateUrl: './select-dropdown.component.html',\n  styleUrls: ['./select-dropdown.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('dropdownExpanded', [\n      state('void', style({ margin: '0', transform: 'translateY(10px)', opacity: 0 })),\n      state('expanded', style({ margin: '8px 0', transform: 'translateY(0)', opacity: 1 })),\n      transition('void => expanded', [animate(`${ANIMATION_DURATION_MS}ms ease-in`)]),\n      transition('expanded => void', [animate(`${ANIMATION_DURATION_MS}ms ease-out`)]),\n    ]),\n  ],\n})\nexport class SelectDropdownComponent<T> extends SelectDropdownBase<T> {\n  @ViewChild(CdkConnectedOverlay) protected readonly cdkConnectedOverlay: CdkConnectedOverlay;\n  @Input() public width: string | null = null;\n\n  constructor(selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n  }\n}\n","<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"dropDownOverlayOrigin$ | async\"\n  [cdkConnectedOverlayOpen]=\"isExpanded$ | async\"\n  [cdkConnectedOverlayWidth]=\"width ? width : (dropDownTriggerButtonWidthPx$ | async)\"\n  [cdkConnectedOverlayPositions]=\"overlayPositions\"\n  [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n  (attach)=\"handleAttachOverlay()\"\n  (detach)=\"handleDetachOverlay()\"\n>\n  <pupa-theme-wrapper\n    class=\"select-dropdown-wrapper\"\n    (wheel)=\"processEventPropagation($event)\"\n    (mousedown)=\"processEventPropagation($event)\"\n    (touchstart)=\"processEventPropagation($event)\"\n    (touchmove)=\"processEventPropagation($event)\"\n    (touchend)=\"processEventPropagation($event)\"\n  >\n    <section class=\"select-dropdown\" [@dropdownExpanded]=\"animationState$ | async\">\n      <ng-content></ng-content>\n    </section>\n  </pupa-theme-wrapper>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-select-option-icon',\n  templateUrl: './select-option-icon.component.html',\n  styleUrls: ['./select-option-icon.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectOptionIconComponent {\n  @Input() public name: string;\n}\n","<pupa-icon [name]=\"name\"></pupa-icon>\n","import { Directive, HostListener, OnChanges } from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { SelectStateServiceDeclaration } from '../../interfaces/select-state-service-declaration.interface';\n\n@Directive()\nexport abstract class SelectOptionBase<T> implements OnChanges {\n  public abstract value: T;\n  public abstract isDisabled: boolean;\n\n  private readonly value$: BehaviorSubject<T> = new BehaviorSubject<T>(null);\n\n  public readonly isHovered$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isPicked$: Observable<boolean> = this.value$.pipe(\n    switchMap((value: T) => this.selectStateService.isPicked(value)),\n    distinctUntilChanged()\n  );\n\n  private readonly isSelfDisabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isDisabled$: Observable<boolean> = combineLatest([\n    this.isSelfDisabled$,\n    this.selectStateService.isDisabled$,\n  ]).pipe(map(([isSelfDisabled, isDisabled]: [boolean, boolean]) => isSelfDisabled || isDisabled));\n\n  constructor(protected readonly selectStateService: SelectStateServiceDeclaration<T>) {}\n\n  @HostListener('mouseover')\n  public processMouseOver(): void {\n    this.isHovered$.next(true);\n  }\n\n  @HostListener('mouseleave')\n  public processMouseLeave(): void {\n    this.isHovered$.next(false);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    if (isNil(changes)) {\n      return;\n    }\n\n    if (changes.hasOwnProperty('value')) {\n      this.processValueChange(changes.value);\n    }\n\n    if (changes.hasOwnProperty('isDisabled')) {\n      this.processIsDisabledChange(changes.isDisabled);\n    }\n  }\n\n  public processClick(): void {\n    this.value$\n      .pipe(\n        withLatestFrom(this.isDisabled$),\n        take(1),\n        filter(([_, isDisabled]: [T, boolean]) => !isDisabled),\n        map(([value, _]: [T, boolean]) => value)\n      )\n      .subscribe((value: T) => {\n        this.selectStateService.processSelection(value);\n      });\n  }\n\n  private processValueChange(change: ComponentChange<this, T>): void {\n    const updatedValue: T | undefined = change?.currentValue;\n    this.value$.next(updatedValue);\n  }\n\n  private processIsDisabledChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n    this.isSelfDisabled$.next(updatedValue);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { SelectStateService } from '../../services/select-state.service';\nimport { SelectOptionBase } from '../../../../declarations/classes/abstract/select-option-base.abstract';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n@Component({\n  selector: 'pupa-select-option',\n  templateUrl: './select-option.component.html',\n  styleUrls: ['./select-option.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectOptionComponent<T> extends SelectOptionBase<T> implements OnDestroy {\n  @Input() public value: T = null;\n  @Input() public isDisabled: boolean = false;\n  @Input() public hasCheckbox: boolean = false;\n\n  @Input() public heightPx: number = 32;\n\n  public readonly isOpened$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(protected readonly selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n    this.subscription.add(this.subscribeToActionExpand());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private subscribeToActionExpand(): void {\n    this.selectStateService.isExpanded$.subscribe((isExpanded: boolean) => this.isOpened$.next(isExpanded));\n  }\n}\n","<div [style.height.px]=\"heightPx\" (click)=\"processClick()\">\n  <pupa-option\n    [active]=\"isPicked$ | async\"\n    [disabled]=\"isDisabled$ | async\"\n    [hasCheckbox]=\"hasCheckbox\"\n    [forceResetHover]=\"isOpened$ | async\"\n  >\n    <ng-content></ng-content>\n  </pupa-option>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class SelectOptionsContainerBase {\n  protected processDomEvent(event: Event): void {\n    event.stopPropagation();\n  }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\n\nimport { SelectOptionsContainerBase } from '../../../../declarations/classes/abstract/select-options-container-base.abstract';\n\n@Component({\n  selector: 'pupa-select-options-container',\n  templateUrl: './select-options-container.component.html',\n  styleUrls: ['./select-options-container.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectOptionsContainerComponent extends SelectOptionsContainerBase {\n  @Input() public fixedHeightPx: number = null;\n\n  @HostListener('click', ['$event'])\n  @HostListener('touchstart', ['$event'])\n  public stopPropagation(event: Event): void {\n    this.processDomEvent(event);\n  }\n}\n","<section class=\"options-container\" [style.height.px]=\"fixedHeightPx\">\n  <ng-content></ng-content>\n</section>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { AfterViewInit, Directive, ElementRef, OnInit, TemplateRef } from '@angular/core';\nimport { distinctUntilSerializedChanged, filterFalsy, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { SelectStateServiceDeclaration } from '../../interfaces/select-state-service-declaration.interface';\nimport { SelectSize } from '../../types/select-size.type';\n\nconst BUTTON_WIDTH_PX: number = 24;\n\n@Directive()\nexport abstract class SelectTriggerBase<T> implements OnInit, AfterViewInit {\n  protected abstract readonly overlayOrigin: CdkOverlayOrigin;\n  protected abstract readonly button: ElementRef<HTMLButtonElement>;\n\n  public readonly isExpanded$: BehaviorSubject<boolean> = this.selectStateService.isExpanded$;\n  public readonly isDisabled$: Observable<boolean> = this.selectStateService.isDisabled$;\n\n  public readonly isTouched$: Observable<boolean> = this.selectStateService.isTouched$;\n  public readonly isPatched$: Observable<boolean> = this.selectStateService.isPatched$;\n  public readonly isValid$: Observable<boolean> = this.selectStateService.isValid$;\n  public readonly isFilled$: Observable<boolean> = this.selectStateService.isFilled$;\n  public readonly withReset$: Observable<boolean> = this.selectStateService.withReset$;\n  public readonly inline$: Observable<boolean> = this.selectStateService.inline$;\n  public readonly size$: Observable<SelectSize> = this.selectStateService.size$;\n\n  public readonly placeholder$: Observable<string> = this.selectStateService.placeholder$;\n\n  public readonly isInvalid$: Observable<boolean> = combineLatest([\n    this.isDisabled$,\n    this.isPatched$,\n    this.isValid$,\n    this.isTouched$,\n  ]).pipe(\n    distinctUntilSerializedChanged(),\n    map(\n      ([isDisabled, isPatched, isValid, isTouched]: [boolean, boolean, boolean, boolean]) =>\n        (isTouched || isPatched) && !isValid && !isDisabled\n    )\n  );\n\n  public readonly triggerValueIsVisible$: Observable<boolean> = combineLatest([this.isFilled$, this.placeholder$]).pipe(\n    map(([isFilled, placeholder]: [boolean, Nullable<string>]) => isFilled || isNil(placeholder))\n  );\n\n  public readonly isVisibleReset$: Observable<boolean> = combineLatest([\n    this.withReset$,\n    this.isFilled$,\n    this.isDisabled$,\n  ]).pipe(\n    map(([withReset, isFilled, isDisabled]: [boolean, boolean, boolean]) => withReset && isFilled && !isDisabled)\n  );\n\n  public readonly invalidTooltipHideOnHover$: Observable<boolean> = this.selectStateService.invalidTooltipHideOnHover$;\n  public readonly invalidTooltipDisabled$: Observable<boolean> = this.selectStateService.invalidTooltipDisabled$;\n  public readonly invalidTooltip$: Observable<Nullable<string>> = this.selectStateService.invalidTooltip$;\n  public readonly invalidTooltipContentTemplate$: Observable<Nullable<TemplateRef<unknown>>> =\n    this.selectStateService.invalidTooltipContentTemplate$;\n\n  public readonly isInvalidTooltipDisabled$: Observable<boolean> = combineLatest([\n    this.invalidTooltip$,\n    this.invalidTooltipContentTemplate$,\n    this.invalidTooltipDisabled$,\n  ]).pipe(\n    map(\n      ([invalidTooltip, invalidTooltipContentTemplate, invalidTooltipDisabled]: [\n        Nullable<string>,\n        Nullable<TemplateRef<unknown>>,\n        boolean\n      ]) => (isEmpty(invalidTooltip) && isNil(invalidTooltipContentTemplate) ? true : invalidTooltipDisabled)\n    )\n  );\n\n  public readonly rightPaddingPx$: Observable<number> = combineLatest([this.isInvalid$, this.isVisibleReset$]).pipe(\n    map((states: boolean[]) =>\n      states.reduce((width: number, state: boolean) => (state ? width + BUTTON_WIDTH_PX : width), 0)\n    )\n  );\n\n  public readonly isContentInit$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  constructor(protected readonly selectStateService: SelectStateServiceDeclaration<T>) {}\n\n  public ngOnInit(): void {\n    this.defineDropdownTrigger();\n  }\n\n  public ngAfterViewInit(): void {\n    this.isContentInit$.next(true);\n  }\n\n  public processTriggerTouch(): void {\n    this.selectStateService.setIsTriggerTouchedState(true);\n  }\n\n  public processButtonClick(): void {\n    this.isDisabled$.pipe(take(1), filterFalsy()).subscribe(() => this.selectStateService.toggleExpansion());\n  }\n\n  public processEventPropagation(event: Event): void {\n    event.stopPropagation();\n  }\n\n  public toggleDropdown(event: Event): void {\n    event.stopPropagation();\n    this.isDisabled$.pipe(take(1), filterFalsy()).subscribe(() => this.selectStateService.toggleExpansion());\n  }\n\n  public reset(): void {\n    this.selectStateService.reset();\n  }\n\n  public processButtonInputClick(): void {\n    this.isDisabled$\n      .pipe(\n        take(1),\n        filterFalsy(),\n        switchMap(() => this.isExpanded$),\n        take(1),\n        filterFalsy()\n      )\n      .subscribe(() => this.selectStateService.open());\n  }\n\n  private defineDropdownTrigger(): void {\n    this.selectStateService.defineDropdownTrigger(this.overlayOrigin, this.button.nativeElement);\n  }\n}\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SelectTriggerBase } from '../../../../declarations/classes/abstract/select-trigger-base.abstract';\nimport { SelectStateService } from '../../services/select-state.service';\n\n@Component({\n  selector: 'pupa-select-trigger-extra-case',\n  templateUrl: './select-trigger-extra-case.component.html',\n  styleUrls: ['./select-trigger-extra-case.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectTriggerExtraCaseComponent<T> extends SelectTriggerBase<T> {\n  @ViewChild('overlayOrigin', { static: true }) protected readonly overlayOrigin: CdkOverlayOrigin;\n  @ViewChild('button', { static: true }) protected readonly button: ElementRef<HTMLButtonElement>;\n\n  constructor(selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n  }\n}\n","<div\n  (click)=\"processButtonClick()\"\n  (mousedown)=\"processTriggerTouch()\"\n  (touchstart)=\"processTriggerTouch()\"\n  cdkOverlayOrigin\n  #overlayOrigin=\"cdkOverlayOrigin\"\n  #button\n>\n  <ng-content></ng-content>\n</div>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { filterTruthy, isEmpty, isNil, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { map, startWith, take } from 'rxjs/operators';\nimport { SelectStateService } from '../../services/select-state.service';\nimport { SelectTriggerBase } from '../../../../declarations/classes/abstract/select-trigger-base.abstract';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\n\n/**\n * @deprecated need support new design\n */\n@Component({\n  selector: 'pupa-select-trigger-input',\n  templateUrl: './select-trigger-input.component.html',\n  styleUrls: ['./select-trigger-input.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectTriggerInputComponent<T> extends SelectTriggerBase<T> implements OnDestroy, OnChanges {\n  @ViewChild('overlayOrigin', { static: true }) protected readonly overlayOrigin: CdkOverlayOrigin;\n  @ViewChild('button', { static: true }) protected readonly button: ElementRef<HTMLButtonElement>;\n\n  @ViewChild('inputElement', { static: false }) public readonly inputElement: ElementRef<HTMLInputElement>;\n\n  @Input() public placeholder: string = '';\n\n  @Input() public selectedValuePreview: string = '';\n  private readonly selectedValuePreview$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  public readonly selectedValuePreviewIsEmpty$: Observable<boolean> = this.selectedValuePreview$.pipe(map(isEmpty));\n\n  @Output() public readonly query: EventEmitter<string> = new EventEmitter<string>();\n\n  public readonly control: FormControl = new FormControl('');\n\n  public readonly query$: Observable<string> = this.control.valueChanges.pipe(startWith(''), shareReplayWithRefCount());\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(protected readonly selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n\n    this.processFocusButtonInputContainer();\n    this.subscription.add(this.processInput());\n  }\n\n  public processDomEvent(event: Event): void {\n    event.stopPropagation();\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSelectedValuePreviewChange(changes?.selectedValuePreview);\n  }\n\n  public resetQuery(event: Event): void {\n    this.processDomEvent(event);\n    this.control.setValue('');\n  }\n\n  private processInput(): Subscription {\n    return this.query$.subscribe((query: string) => this.query.emit(query));\n  }\n\n  private processFocusButtonInputContainer(): void {\n    this.isContentInit$\n      .pipe(filterTruthy(), take(1))\n      .subscribe(() => this.selectStateService.processFocusInputContainer(this.inputElement));\n  }\n\n  private processSelectedValuePreviewChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectedValuePreview$.next(updatedValue);\n    this.control.setValue(updatedValue);\n  }\n}\n","<div\n  class=\"trigger\"\n  [class]=\"size$ | async\"\n  [class.trigger_active]=\"isExpanded$ | async\"\n  [class.trigger_disabled]=\"isDisabled$ | async\"\n  [class.trigger_invalid]=\"isInvalid$ | async\"\n  [class.trigger_inline]=\"inline$ | async\"\n  (mousedown)=\"processEventPropagation($event)\"\n  (touchstart)=\"processEventPropagation($event)\"\n  (click)=\"processButtonInputClick()\"\n  cdkOverlayOrigin\n  #overlayOrigin=\"cdkOverlayOrigin\"\n  #button\n>\n  <div class=\"trigger__input-container\">\n    <div class=\"trigger__button-icons-container\" *ngIf=\"!(isExpanded$ | async)\" (click)=\"processDomEvent($event)\">\n      <ng-content></ng-content>\n    </div>\n    <input\n      type=\"text\"\n      class=\"trigger__input\"\n      [style.paddingRight.px]=\"rightPaddingPx$ | async\"\n      [placeholder]=\"placeholder\"\n      #inputElement\n      [formControl]=\"control\"\n    />\n  </div>\n\n  <div class=\"trigger__rotate-icon\" [class.expanded]=\"isExpanded$ | async\" (click)=\"toggleDropdown($event)\">\n    <pupa-icon name=\"app-chevron-down\"></pupa-icon>\n  </div>\n</div>\n\n<div class=\"icons\">\n  <pupa-icon *ngIf=\"isVisibleReset$ | async\" class=\"icons__icon icons__icon-reset\" name=\"m-abort\" (click)=\"reset()\">\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"icons__icon icons__icon-invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip$ | async\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover$ | async\"\n    [tooltipDisabled]=\"isInvalidTooltipDisabled$ | async\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate$ | async\"\n    (click)=\"button.click()\"\n  >\n  </pupa-icon>\n</div>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, Input } from '@angular/core';\nimport { TagKind } from '@bimeister/pupakit.kit';\nimport { BehaviorSubject } from 'rxjs';\nimport { SelectTriggerBase } from '../../../../declarations/classes/abstract/select-trigger-base.abstract';\nimport { SelectStateService } from '../../services/select-state.service';\n\n@Component({\n  selector: 'pupa-select-trigger-tag',\n  templateUrl: './select-trigger-tag.component.html',\n  styleUrls: ['./select-trigger-tag.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectTriggerTagComponent<T> extends SelectTriggerBase<T> {\n  @ViewChild('overlayOrigin', { static: true }) protected readonly overlayOrigin: CdkOverlayOrigin;\n  @ViewChild('button', { static: true }) protected readonly button: ElementRef<HTMLButtonElement>;\n\n  @Input() public clickable: boolean = false;\n  @Input() public kind: TagKind = 'opacity';\n\n  public isDisabled$: BehaviorSubject<boolean> = this.selectStateService.isDisabled$;\n  public isExpanded$: BehaviorSubject<boolean> = this.selectStateService.isExpanded$;\n\n  constructor(selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n  }\n}\n","<pupa-tag\n  class=\"trigger_tag\"\n  cdkOverlayOrigin\n  #button\n  #overlayOrigin=\"cdkOverlayOrigin\"\n  [kind]=\"kind\"\n  [clickable]=\"clickable\"\n  [disabled]=\"isDisabled$ | async\"\n>\n  <ng-content></ng-content>\n\n  <pupa-tag-action-button\n    [active]=\"isExpanded$ | async\"\n    *pupaTagActionButtonTemplate\n    (click)=\"processButtonClick()\"\n    (mousedown)=\"processTriggerTouch()\"\n    (touchstart)=\"processTriggerTouch()\"\n  >\n    <pupa-icon [name]=\"(isExpanded$ | async) ? 'app-chevron-up' : 'app-chevron-down'\"></pupa-icon>\n  </pupa-tag-action-button>\n</pupa-tag>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { SelectTriggerTagContext } from '../../../declarations/interfaces/select-trigger-tag-context.interface';\n\n@Directive({\n  selector: '[pupaSelectTriggerTagTemplate]',\n})\nexport class PupaSelectTriggerTagTemplateDirective<T> {\n  @Input() public pupaSelectTriggerTagTemplateTypeFrom: T;\n\n  constructor(public readonly templateRef: TemplateRef<SelectTriggerTagContext<T>>) {}\n}\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterNotNil, isNil, Nullable, resizeObservable } from '@bimeister/utilities';\nimport { animationFrameScheduler, BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, observeOn, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { SelectTriggerBase } from '../../../../declarations/classes/abstract/select-trigger-base.abstract';\nimport { SelectTriggerTagContext } from '../../../../declarations/interfaces/select-trigger-tag-context.interface';\nimport { PupaSelectTriggerTagTemplateDirective } from '../../directives/select-trigger-tag-template.directive';\nimport { SelectStateService } from '../../services/select-state.service';\n\nconst MAX_TAGS_RENDER_COUNT: number = 20;\nconst RESIZE_DEBOUNCE_TIME_MS: number = 200;\n\n@Component({\n  selector: 'pupa-select-trigger-tags',\n  templateUrl: './select-trigger-tags.component.html',\n  styleUrls: ['./select-trigger-tags.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectTriggerTagsComponent<T> extends SelectTriggerBase<T> implements OnChanges, AfterViewInit, OnDestroy {\n  @ViewChild('overlayOrigin', { static: true }) protected readonly overlayOrigin: CdkOverlayOrigin;\n  @ViewChild('button', { static: true }) protected readonly button: ElementRef<HTMLButtonElement>;\n\n  @Input() public tags: T[] = [];\n  public readonly renderTags$: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n  private readonly tagsTotalCount$: BehaviorSubject<Nullable<number>> = new BehaviorSubject<Nullable<number>>(null);\n\n  @ContentChild(PupaSelectTriggerTagTemplateDirective)\n  public readonly selectTriggerTagTemplate: PupaSelectTriggerTagTemplateDirective<T>;\n\n  @ViewChild('defaultTemplate') private readonly defaultTemplateRef: TemplateRef<SelectTriggerTagContext<T>>;\n\n  @ViewChild('tagsContainer') private readonly tagsContainerRef: ElementRef<HTMLElement>;\n  private readonly tagsContainer$: BehaviorSubject<Nullable<HTMLElement>> = new BehaviorSubject<Nullable<HTMLElement>>(\n    null\n  );\n\n  public readonly tagsContainerWidthPx$: Observable<number> = this.tagsContainer$.pipe(\n    observeOn(animationFrameScheduler),\n    filterNotNil(),\n    distinctUntilChanged(),\n    switchMap((element: Nullable<HTMLDivElement>) => resizeObservable(element)),\n    map(([entry]: ResizeObserverEntry[]) => (!isNil(entry) ? entry.contentRect.width : 0))\n  );\n\n  public readonly tagsOverflowCount$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(selectStateService: SelectStateService<T>, private readonly changeDetectorRef: ChangeDetectorRef) {\n    super(selectStateService);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processTagsChanges(changes?.tags);\n  }\n\n  public ngAfterViewInit(): void {\n    this.setTagsContainer();\n\n    this.subscription.add(this.calculateOverflowItemsCount());\n    this.subscription.add(this.setTagsContainerRefOnFilled());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public getSelectTriggerTagTemplateRef(): TemplateRef<SelectTriggerTagContext<T>> {\n    return this.selectTriggerTagTemplate?.templateRef ?? this.defaultTemplateRef;\n  }\n\n  private processTagsChanges(change: ComponentChange<this, T[]>): void {\n    const updatedValue: T[] | undefined = change?.currentValue;\n\n    if (!Array.isArray(updatedValue)) {\n      return;\n    }\n\n    const serializedTags: T[] = updatedValue.slice(0, MAX_TAGS_RENDER_COUNT);\n    this.renderTags$.next(serializedTags);\n\n    this.tagsTotalCount$.next(updatedValue.length);\n  }\n\n  private setTagsContainer(): void {\n    if (isNil(this.tagsContainerRef)) {\n      return;\n    }\n\n    this.tagsContainer$.next(this.tagsContainerRef.nativeElement);\n  }\n\n  private getCurrentTagsOverflowCount(tagsContainerWidthPx: number): number {\n    const tags: Element[] = Array.from(this.tagsContainerRef?.nativeElement?.children ?? []);\n\n    if (tags.length === 1) {\n      return 0;\n    }\n\n    const tagsWidthPxList: number[] = tags.map(({ clientWidth }: Element) => clientWidth);\n\n    const totalWidthPxByTagPositionList: number[] = tagsWidthPxList.reduce(\n      (tagsWidthPxAccumulator: number[], tagWidthPx: number) => {\n        const previousTotalWidthPx: number = tagsWidthPxAccumulator[tagsWidthPxAccumulator.length - 1] ?? 0;\n        return [...tagsWidthPxAccumulator, previousTotalWidthPx + tagWidthPx];\n      },\n      []\n    );\n\n    const indexOfTagOnBoundContainer: number = totalWidthPxByTagPositionList.findIndex(\n      (width: number) => width > tagsContainerWidthPx\n    );\n\n    if (indexOfTagOnBoundContainer < 0) {\n      return 0;\n    }\n\n    return tags.length - indexOfTagOnBoundContainer;\n  }\n\n  private calculateOverflowItemsCount(): Subscription {\n    return combineLatest([this.tagsContainerWidthPx$, this.renderTags$])\n      .pipe(\n        map(([tagsContainerWidthPx, _renderTags]: [number, T[]]) => tagsContainerWidthPx),\n        debounceTime(RESIZE_DEBOUNCE_TIME_MS),\n        observeOn(animationFrameScheduler),\n        map((tagsContainerWidthPx: number) => this.getCurrentTagsOverflowCount(tagsContainerWidthPx)),\n        withLatestFrom(this.tagsTotalCount$),\n        map(\n          ([currentSliceOverflowCount, tagsTotalCount]: [number, number]) =>\n            Math.max(0, tagsTotalCount - MAX_TAGS_RENDER_COUNT) + currentSliceOverflowCount\n        ),\n        distinctUntilChanged()\n      )\n      .subscribe((overflowCount: number) => {\n        this.tagsOverflowCount$.next(overflowCount);\n        this.detectChanges();\n      });\n  }\n\n  private setTagsContainerRefOnFilled(): Subscription {\n    return this.triggerValueIsVisible$\n      .pipe(observeOn(animationFrameScheduler))\n      .subscribe(() => this.setTagsContainer());\n  }\n\n  private detectChanges(): void {\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<button\n  type=\"button\"\n  class=\"trigger\"\n  [class]=\"size$ | async\"\n  [class.trigger_active]=\"isExpanded$ | async\"\n  [class.trigger_disabled]=\"isDisabled$ | async\"\n  [class.trigger_invalid]=\"isInvalid$ | async\"\n  [class.trigger_inline]=\"inline$ | async\"\n  [style.--tags-container-width-px]=\"(tagsContainerWidthPx$ | async) + 'px'\"\n  (click)=\"processButtonClick()\"\n  (mousedown)=\"processTriggerTouch()\"\n  (touchstart)=\"processTriggerTouch()\"\n  cdkOverlayOrigin\n  #overlayOrigin=\"cdkOverlayOrigin\"\n  #button\n>\n  <div class=\"trigger__text\" [style.paddingRight.px]=\"rightPaddingPx$ | async\">\n    <ng-container *ngIf=\"triggerValueIsVisible$ | async; else placeholder\">\n      <div class=\"tags-container\" #tagsContainer>\n        <div class=\"tag\" *ngFor=\"let tag of renderTags$ | async; let count = count\" [class.is-one]=\"count === 1\">\n          <ng-container\n            [ngTemplateOutlet]=\"getSelectTriggerTagTemplateRef()\"\n            [ngTemplateOutletContext]=\"{ $implicit: tag }\"\n          ></ng-container>\n        </div>\n      </div>\n\n      <div class=\"tags-counter\" *ngIf=\"this.tagsOverflowCount$ | async as tagsOverflowCount\">\n        <pupa-tag [clickable]=\"true\" [disabled]=\"isDisabled$ | async\">\n          +{{ tagsOverflowCount | formatCount }}\n        </pupa-tag>\n      </div>\n    </ng-container>\n  </div>\n\n  <div class=\"trigger__rotate-icon\" [class.expanded]=\"isExpanded$ | async\" (click)=\"toggleDropdown($event)\">\n    <pupa-icon name=\"app-chevron-down\"></pupa-icon>\n  </div>\n</button>\n\n<div class=\"icons\">\n  <pupa-icon *ngIf=\"isVisibleReset$ | async\" class=\"icons__icon icons__icon-reset\" name=\"m-abort\" (click)=\"reset()\">\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"icons__icon icons__icon-invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip$ | async\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover$ | async\"\n    [tooltipDisabled]=\"isInvalidTooltipDisabled$ | async\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate$ | async\"\n    (click)=\"button.click()\"\n  >\n  </pupa-icon>\n</div>\n\n<ng-template #placeholder>\n  <div class=\"placeholder\">\n    {{ placeholder$ | async }}\n  </div>\n</ng-template>\n\n<ng-template #defaultTemplate let-tag>\n  <pupa-tag class=\"default-tag\" [clickable]=\"true\" [disabled]=\"isDisabled$ | async\">\n    <pupa-tag-text>{{ tag }}</pupa-tag-text>\n  </pupa-tag>\n</ng-template>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SelectStateService } from '../../services/select-state.service';\nimport { SelectTriggerBase } from '../../../../declarations/classes/abstract/select-trigger-base.abstract';\n\n@Component({\n  selector: 'pupa-select-trigger',\n  templateUrl: './select-trigger.component.html',\n  styleUrls: ['./select-trigger.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectTriggerComponent<T> extends SelectTriggerBase<T> {\n  @ViewChild('overlayOrigin', { static: true }) protected readonly overlayOrigin: CdkOverlayOrigin;\n  @ViewChild('button', { static: true }) protected readonly button: ElementRef<HTMLButtonElement>;\n\n  constructor(selectStateService: SelectStateService<T>) {\n    super(selectStateService);\n  }\n}\n","<button\n  type=\"button\"\n  class=\"trigger\"\n  [class]=\"size$ | async\"\n  [class.trigger_active]=\"isExpanded$ | async\"\n  [class.trigger_disabled]=\"isDisabled$ | async\"\n  [class.trigger_invalid]=\"isInvalid$ | async\"\n  [class.trigger_inline]=\"inline$ | async\"\n  (click)=\"processButtonClick()\"\n  (mousedown)=\"processTriggerTouch()\"\n  (touchstart)=\"processTriggerTouch()\"\n  cdkOverlayOrigin\n  #overlayOrigin=\"cdkOverlayOrigin\"\n  #button\n>\n  <div class=\"trigger__text\" [style.paddingRight.px]=\"rightPaddingPx$ | async\">\n    <ng-container *ngIf=\"triggerValueIsVisible$ | async; else placeholder\">\n      <ng-content></ng-content>\n    </ng-container>\n  </div>\n\n  <div class=\"trigger__rotate-icon\" [class.expanded]=\"isExpanded$ | async\" (click)=\"toggleDropdown($event)\">\n    <pupa-icon name=\"app-chevron-down\"></pupa-icon>\n  </div>\n</button>\n\n<div class=\"icons\">\n  <pupa-icon *ngIf=\"isVisibleReset$ | async\" class=\"icons__icon icons__icon-reset\" name=\"m-abort\" (click)=\"reset()\">\n  </pupa-icon>\n\n  <pupa-icon\n    *ngIf=\"isInvalid$ | async\"\n    class=\"icons__icon icons__icon-invalid\"\n    name=\"m-error\"\n    [pupaTooltip]=\"invalidTooltip$ | async\"\n    [tooltipHideOnHover]=\"invalidTooltipHideOnHover$ | async\"\n    [tooltipDisabled]=\"isInvalidTooltipDisabled$ | async\"\n    [tooltipContentTemplate]=\"invalidTooltipContentTemplate$ | async\"\n    (click)=\"button.click()\"\n  >\n  </pupa-icon>\n</div>\n\n<ng-template #placeholder>\n  <div class=\"placeholder\">\n    {{ placeholder$ | async }}\n  </div>\n</ng-template>\n","import { Directive, EventEmitter, OnChanges, OnDestroy, Output, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { Observable, Subscription } from 'rxjs';\nimport { SelectStateServiceDeclaration } from '../../interfaces/select-state-service-declaration.interface';\nimport { OnChangeCallback } from '../../types/on-change-callback.type';\nimport { OnTouchedCallback } from '../../types/on-touched-callback.type';\nimport { SelectOuterValue } from '../../types/select-outer-value.type';\nimport { SelectSize } from '../../types/select-size.type';\n\n@Directive()\nexport abstract class SelectBase<T> implements OnChanges, OnDestroy, ControlValueAccessor {\n  public abstract isMultiSelectionEnabled: boolean;\n  public abstract isUnselectionEnabled: boolean;\n  public abstract isPatched: boolean;\n  public abstract placeholder: string;\n  public abstract withReset: boolean;\n  public abstract inline: boolean;\n  public abstract size: SelectSize;\n\n  public invalidTooltipHideOnHover: boolean = false;\n  public invalidTooltipDisabled: boolean = false;\n  public invalidTooltip: Nullable<string> = null;\n  public invalidTooltipContentTemplate: Nullable<TemplateRef<unknown>> = null;\n\n  public readonly isTriggerTouched$: Observable<boolean> = this.selectStateService.isTriggerTouched$;\n\n  @Output() public readonly focus: EventEmitter<void> = new EventEmitter<void>();\n  @Output() public readonly blur: EventEmitter<void> = new EventEmitter<void>();\n  @Output() public readonly reset: EventEmitter<void> = this.selectStateService.resetOutput;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(protected readonly selectStateService: SelectStateServiceDeclaration<T>, ngControl: NgControl) {\n    if (isNil(ngControl)) {\n      return;\n    }\n    ngControl.valueAccessor = this;\n\n    this.selectStateService.setControlRef(ngControl);\n\n    this.subscription.add(this.handleIsExpandedChangesToEmitFocusEvents());\n  }\n\n  protected processCloseEvent(): void {\n    this.selectStateService.collapse();\n  }\n\n  protected resetIsTriggerTouchedState(): void {\n    this.selectStateService.setIsTriggerTouchedState(false);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processIsMultiSelectionEnabledValueChange(changes?.isMultiSelectionEnabled);\n    this.processIsUnselectionEnabledValueChange(changes?.isUnselectionEnabled);\n    this.processIsPatchedValueChange(changes?.isPatched);\n    this.processPlaceholderValueChange(changes?.placeholder);\n    this.processWithResetChange(changes?.withReset);\n    this.processInlineChange(changes?.inline);\n    this.processSizeChange(changes?.size);\n\n    this.processInvalidTooltipHideOnHoverChange(changes?.invalidTooltipHideOnHover);\n    this.processInvalidTooltipDisabledChange(changes?.invalidTooltipDisabled);\n    this.processInvalidTooltipChange(changes?.invalidTooltip);\n    this.processInvalidTooltipContentTemplateChange(changes?.invalidTooltipContentTemplate);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public writeValue(newValue: SelectOuterValue<T>): void {\n    this.selectStateService.setValue(newValue);\n    this.selectStateService.setIsFilled(!isEmpty(newValue));\n  }\n\n  public registerOnChange(onChange: OnChangeCallback<SelectOuterValue<T>>): void {\n    this.selectStateService.defineOnChangeCallback(onChange);\n  }\n\n  public registerOnTouched(onTouched: OnTouchedCallback): void {\n    this.selectStateService.defineOnTouchedCallback(onTouched);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.selectStateService.setDisabledState(isDisabled);\n  }\n\n  private processIsMultiSelectionEnabledValueChange(change: ComponentChange<this, boolean>): void {\n    const updatedState: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedState)) {\n      return;\n    }\n\n    this.selectStateService.setMultiSelectionState(Boolean(updatedState));\n  }\n\n  private processIsUnselectionEnabledValueChange(change: ComponentChange<this, boolean>): void {\n    const updatedState: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedState)) {\n      return;\n    }\n\n    this.selectStateService.setUnselectionState(Boolean(updatedState));\n  }\n\n  private processIsPatchedValueChange(change: ComponentChange<this, boolean>): void {\n    const updatedState: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedState)) {\n      return;\n    }\n\n    this.selectStateService.setIsPatchedState(Boolean(updatedState));\n  }\n\n  private processPlaceholderValueChange(change: ComponentChange<this, string>): void {\n    const updatedState: string | undefined = change?.currentValue;\n\n    if (isNil(updatedState)) {\n      return;\n    }\n\n    this.selectStateService.setPlaceholderState(updatedState);\n  }\n\n  private processWithResetChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.selectStateService.setWithResetState(updatedValue);\n  }\n\n  private processInlineChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setInlineState(updatedValue);\n  }\n\n  private processSizeChange(change: ComponentChange<this, SelectSize>): void {\n    const updatedValue: SelectSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setSizeState(updatedValue);\n  }\n\n  private processInvalidTooltipHideOnHoverChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setInvalidTooltipHideOnHoverState(updatedValue);\n  }\n\n  private processInvalidTooltipDisabledChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setInvalidTooltipDisabledState(updatedValue);\n  }\n\n  private processInvalidTooltipChange(change: ComponentChange<this, Nullable<string>>): void {\n    const updatedValue: Nullable<string> | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setInvalidTooltipState(updatedValue);\n  }\n\n  private processInvalidTooltipContentTemplateChange(\n    change: ComponentChange<this, Nullable<TemplateRef<unknown>>>\n  ): void {\n    const updatedValue: Nullable<TemplateRef<unknown>> | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.selectStateService.setInvalidTooltipContentTemplateState(updatedValue);\n  }\n\n  private handleIsExpandedChangesToEmitFocusEvents(): Subscription {\n    return this.selectStateService.isExpanded$.subscribe((isExpanded: boolean) =>\n      isExpanded ? this.focus.emit() : this.blur.emit()\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostListener,\n  Input,\n  Optional,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Nullable } from '@bimeister/utilities';\nimport { take } from 'rxjs/operators';\nimport { SelectBase } from '../../../../declarations/classes/abstract/select-base.abstract';\nimport { SelectSize } from '../../../../declarations/types/select-size.type';\nimport { SelectStateService } from '../../services/select-state.service';\n\n@Component({\n  selector: 'pupa-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [SelectStateService],\n})\nexport class SelectComponent<T> extends SelectBase<T> {\n  @Input() public isMultiSelectionEnabled: boolean = false;\n  @Input() public isUnselectionEnabled: boolean = false;\n  @Input() public isPatched: boolean = false;\n  @Input() public placeholder: Nullable<string> = null;\n\n  @Input() public withReset: boolean = false;\n  @Input() public inline: boolean = false;\n  @Input() public size: SelectSize = 'medium';\n\n  @Input() public invalidTooltipHideOnHover: boolean = false;\n  @Input() public invalidTooltipDisabled: boolean = false;\n  @Input() public invalidTooltip: Nullable<string> = null;\n  @Input() public invalidTooltipContentTemplate: Nullable<TemplateRef<unknown>> = null;\n\n  constructor(selectStateService: SelectStateService<T>, @Optional() ngControl: NgControl) {\n    super(selectStateService, ngControl);\n  }\n\n  @HostListener('document:touchstart', ['$event'])\n  @HostListener('document:mousedown', ['$event'])\n  public processCloseOnTriggerTouch(): void {\n    this.isTriggerTouched$\n      .pipe(take(1))\n      .subscribe((isTriggerTouched: boolean) =>\n        isTriggerTouched ? this.resetIsTriggerTouchedState() : this.processCloseEvent()\n      );\n  }\n\n  public close(): void {\n    this.processCloseEvent();\n  }\n}\n","<section class=\"select\">\n  <ng-content></ng-content>\n</section>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\nimport {\n  appChevronDownIcon,\n  appChevronUpIcon,\n  mAbortIcon,\n  mErrorIcon,\n  PupaIconsModule,\n} from '@bimeister/pupakit.icons';\nimport {\n  PupaCheckboxModule,\n  PupaOptionModule,\n  PupaTagModule,\n  PupaThemeWrapperModule,\n  PupaTooltipModule,\n} from '@bimeister/pupakit.kit';\nimport { PupaTreeLayoutModule } from '@bimeister/pupakit.tree';\nimport { SelectDropdownFooterComponent } from './components/select-dropdown-footer/select-dropdown-footer.component';\nimport { SelectDropdownHeaderComponent } from './components/select-dropdown-header/select-dropdown-header.component';\nimport { SelectDropdownComponent } from './components/select-dropdown/select-dropdown.component';\nimport { SelectOptionIconComponent } from './components/select-option-icon/select-option-icon.component';\nimport { SelectOptionComponent } from './components/select-option/select-option.component';\nimport { SelectOptionsContainerComponent } from './components/select-options-container/select-options-container.component';\nimport { SelectTriggerExtraCaseComponent } from './components/select-trigger-extra-case/select-trigger-extra-case.component';\nimport { SelectTriggerInputComponent } from './components/select-trigger-input/select-trigger-input.component';\nimport { SelectTriggerTagComponent } from './components/select-trigger-tag/select-trigger-tag.component';\nimport { SelectTriggerTagsComponent } from './components/select-trigger-tags/select-trigger-tags.component';\nimport { SelectTriggerComponent } from './components/select-trigger/select-trigger.component';\nimport { SelectComponent } from './components/select/select.component';\nimport { PupaSelectTriggerTagTemplateDirective } from './directives/select-trigger-tag-template.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  SelectComponent,\n\n  SelectTriggerComponent,\n  SelectTriggerInputComponent,\n  SelectTriggerTagsComponent,\n  SelectTriggerExtraCaseComponent,\n  SelectTriggerTagComponent,\n\n  SelectOptionsContainerComponent,\n  SelectOptionComponent,\n  SelectOptionIconComponent,\n\n  SelectDropdownComponent,\n  SelectDropdownHeaderComponent,\n  SelectDropdownFooterComponent,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [PupaSelectTriggerTagTemplateDirective];\n\nconst DECLARATIONS: Type<unknown>[] = [...COMPONENTS, ...DIRECTIVES];\nconst EXPORTS: Type<unknown>[] = [...DECLARATIONS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    OverlayModule,\n    PupaPipesModule,\n    PupaTooltipModule,\n    PupaCheckboxModule,\n    PupaTagModule,\n    PupaThemeWrapperModule,\n    PupaIconsModule.forFeature([appChevronDownIcon, appChevronUpIcon, mAbortIcon, mErrorIcon]),\n    PupaTreeLayoutModule,\n    PupaOptionModule,\n  ],\n  exports: [...EXPORTS],\n})\nexport class PupaSelectModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterFalsy, filterTruthy, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, switchMapTo, take } from 'rxjs/operators';\nimport { SwitcherSize } from '../../../../declarations/types/switcher-size.type';\n\n@Component({\n  selector: 'pupa-switcher',\n  templateUrl: './switcher.component.html',\n  styleUrls: ['./switcher.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SwitcherComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SwitcherComponent implements OnChanges, ControlValueAccessor {\n  @Input() public disabled: boolean = false;\n  @Input() public value: boolean;\n  @Input() public tabindex: number = 0;\n\n  @Input() public size: SwitcherSize = 'medium';\n\n  public readonly value$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isDisabled$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n  public readonly isTouched$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n  public readonly isFocused$: BehaviorSubject<Nullable<boolean>> = new BehaviorSubject<boolean>(null);\n\n  @Output() public focus: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output() public blur: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n  @Output() public updateValue: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.handleDisabledChanges(changes?.disabled);\n    this.handleValueChanges(changes?.value);\n  }\n\n  public get sizeClass(): string {\n    return `switcher_${this.size}`;\n  }\n\n  public onKeyDown(_event: MouseEvent): void {\n    this.isFocused$.pipe(take(1), filterTruthy()).subscribe(() => this.changeValue());\n  }\n\n  public changeValue(): void {\n    this.isDisabled$\n      .pipe(\n        take(1),\n        filterFalsy(),\n        switchMapTo(this.value$),\n        take(1),\n        map((value: boolean) => !value)\n      )\n      .subscribe((updatedValue: boolean) => {\n        this.value$.next(updatedValue);\n        this.onTouched();\n        this.onChange(updatedValue);\n\n        this.updateValue.emit(updatedValue);\n      });\n  }\n\n  public registerOnChange(onChangeCallback: VoidFunction): void {\n    this.onChange = onChangeCallback;\n  }\n\n  public registerOnTouched(onTouchedCallback: VoidFunction): void {\n    this.onTouched = onTouchedCallback;\n  }\n\n  public writeValue(value: boolean): void {\n    this.value$.next(value);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.isDisabled$.next(isDisabled);\n  }\n\n  public emitFocusEvent(focusEvent: FocusEvent): void {\n    this.isFocused$.next(true);\n    this.focus.emit(focusEvent);\n  }\n\n  public emitBlurEvent(blurEvent: FocusEvent): void {\n    this.isFocused$.next(false);\n    this.blur.emit(blurEvent);\n  }\n\n  public onChange: CallableFunction = () => {\n    // not implemented\n  };\n\n  public onTouched: VoidFunction = () => {\n    // not implemented\n  };\n\n  private handleValueChanges(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.writeValue(updatedValue);\n  }\n\n  private handleDisabledChanges(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.setDisabledState(updatedValue);\n  }\n}\n","<div\n  class=\"switcher\"\n  [class]=\"sizeClass\"\n  [class.switcher_active]=\"value$ | async\"\n  [class.switcher_disabled]=\"isDisabled$ | async\"\n  (click)=\"changeValue()\"\n  [tabindex]=\"tabindex\"\n  (focus)=\"emitFocusEvent($event)\"\n  (blur)=\"emitBlurEvent($event)\"\n  (keydown.enter)=\"onKeyDown($event)\"\n>\n  <div class=\"switcher__marker\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SwitcherComponent } from './components/switcher/switcher.component';\n\n@NgModule({\n  declarations: [SwitcherComponent],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule],\n  exports: [SwitcherComponent],\n})\nexport class PupaSwitcherModule {}\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, Optional, Output, ViewChild } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport {\n  distinctUntilSerializedChanged,\n  filterNotNil,\n  filterTruthy,\n  isNil,\n  Nullable,\n  shareReplayWithRefCount,\n} from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { TextareaCounterVisibility } from '../../types/textarea-counter-visibility-mode.type';\nimport { TextareaSize } from '../../types/textarea-size.type';\nimport { InputBaseControlValueAccessor } from './input-base-control-value-accessor.abstract';\n\nconst DEFAULT_MAX_ROWS: number = 5;\nconst LARGE_TEXTAREA_VERTICAL_PADDINGS_PX: number = 24;\nconst MEDIUM_TEXTAREA_VERTICAL_PADDINGS_PX: number = 16;\n\n@Directive()\nexport abstract class TextareaBase extends InputBaseControlValueAccessor<string> implements OnChanges {\n  @ViewChild('lineHeightSource', { static: true })\n  protected readonly lineHeightSourceRef: ElementRef<HTMLTextAreaElement>;\n\n  @ViewChild('textarea')\n  protected readonly textareaElementRef: ElementRef<HTMLTextAreaElement>;\n\n  @Input() public size: TextareaSize = 'medium';\n  public readonly size$: BehaviorSubject<TextareaSize> = new BehaviorSubject<TextareaSize>('medium');\n\n  @Input() public readonly placeholder: string = '';\n  public readonly placeholder$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n  @Input() public readonly autocomplete: boolean = false;\n  public readonly autocomplete$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly isPatched: boolean = false;\n  public readonly isPatched$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public minRows: number = 2;\n  private readonly minRows$: BehaviorSubject<number> = new BehaviorSubject<number>(this.minRows);\n  public readonly minHeightPx$: Observable<number> = combineLatest([this.minRows$, this.size$]).pipe(\n    map(([minRows, size]: [number, TextareaSize]) =>\n      TextareaBase.getHeightPxByRowsCount(this.lineHeightSourceRef, minRows, size)\n    )\n  );\n\n  @Input() public maxRows: number = DEFAULT_MAX_ROWS;\n  private readonly maxRows$: BehaviorSubject<Nullable<number>> = new BehaviorSubject<Nullable<number>>(this.maxRows);\n  public readonly maxHeightPx$: Observable<Nullable<number>> = combineLatest([\n    this.minRows$,\n    this.maxRows$,\n    this.size$,\n  ]).pipe(\n    map(([minRows, maxRows, size]: [number, Nullable<number>, TextareaSize]) => {\n      if (isNil(maxRows)) {\n        return null;\n      }\n\n      const rowsCount: number = minRows > maxRows ? minRows : maxRows;\n      return TextareaBase.getHeightPxByRowsCount(this.lineHeightSourceRef, rowsCount, size);\n    })\n  );\n\n  @Input() public maxLength: Nullable<number> = null;\n  public readonly maxLength$: BehaviorSubject<Nullable<number>> = new BehaviorSubject<Nullable<number>>(null);\n\n  @Input() public counterVisibility: TextareaCounterVisibility = 'always';\n  public readonly counterVisibility$: BehaviorSubject<TextareaCounterVisibility> =\n    new BehaviorSubject<TextareaCounterVisibility>('always');\n\n  @Output() private readonly focus: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output() private readonly blur: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n  @Input() public enterKeyPrevented: boolean = false;\n  public readonly enterKeyPrevented$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isInvalid$: Observable<boolean> = combineLatest([\n    this.isDisabled$,\n    this.isPatched$,\n    this.isValid$,\n    this.isTouched$,\n  ]).pipe(\n    distinctUntilSerializedChanged(),\n    map(\n      ([isDisabled, isPatched, isValid, isTouched]: [boolean, boolean, boolean, boolean]) =>\n        (isTouched || isPatched) && !isValid && !isDisabled\n    )\n  );\n\n  private readonly valueLength$: Observable<number> = this.value$.pipe(\n    filterNotNil(),\n    map((currentValue: string) => currentValue?.length ?? 0)\n  );\n\n  public readonly counterValue$: Observable<string> = combineLatest([this.maxLength$, this.valueLength$]).pipe(\n    map(([maxLength, valueLength]: [number, number]) => `${valueLength}/${maxLength}`)\n  );\n\n  public readonly isCounterVisible$: Observable<boolean> = combineLatest([\n    this.counterVisibility$,\n    this.isFocused$,\n    this.valueLength$,\n  ]).pipe(\n    map(([counterVisibilityMode, isFocused, valueLength]: [TextareaCounterVisibility, boolean, number]) => {\n      if (counterVisibilityMode === 'onfocus') {\n        return isFocused;\n      }\n\n      if (counterVisibilityMode === 'filled') {\n        return valueLength > 0;\n      }\n\n      return true;\n    }),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  constructor(@Optional() ngControl: NgControl) {\n    super(ngControl);\n  }\n\n  protected setValue(value: Nullable<string>): void {\n    const serializedValue: string = isNil(value) ? '' : value;\n    this.value$.next(serializedValue);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSizeChange(changes?.size);\n    this.processPlaceholderChange(changes?.placeholder);\n    this.processAutocompleteChange(changes?.autocomplete);\n    this.processIsPatchedChange(changes?.isPatched);\n\n    this.processMaxLengthChange(changes?.maxLength);\n    this.processMaxRowsChange(changes?.maxRows);\n    this.processMinRowsChange(changes?.minRows);\n    this.processCounterVisibilityChange(changes?.counterVisibility);\n    this.processEnterKeyDisabledChange(changes?.enterKeyPrevented);\n  }\n\n  public emitFocusEvent(focusEvent: FocusEvent): void {\n    this.isFocused$.next(true);\n    this.focus.emit(focusEvent);\n  }\n\n  public emitBlurEvent(blurEvent: FocusEvent): void {\n    this.isFocused$.next(false);\n    this.blur.emit(blurEvent);\n  }\n\n  public preventEnterKeyEvent(event: MouseEvent): void {\n    this.enterKeyPrevented$.pipe(take(1), filterTruthy()).subscribe(() => event.preventDefault());\n  }\n\n  public focusOnTextareaElement(): void {\n    const textareaElement: HTMLTextAreaElement = this.textareaElementRef.nativeElement;\n    textareaElement.focus();\n  }\n\n  public processMouseDown(event: MouseEvent): void {\n    if (event.target === this.textareaElementRef.nativeElement) {\n      return;\n    }\n    event.preventDefault();\n  }\n\n  private processSizeChange(change: ComponentChange<this, TextareaSize>): void {\n    const updatedValue: TextareaSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processPlaceholderChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.placeholder$.next(updatedValue);\n  }\n\n  private processAutocompleteChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.autocomplete$.next(updatedValue);\n  }\n\n  private processIsPatchedChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isPatched$.next(updatedValue);\n  }\n\n  private processMaxLengthChange(change: ComponentChange<this, Nullable<number>>): void {\n    const updatedValue: Nullable<number> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.maxLength$.next(updatedValue);\n  }\n\n  private processMaxRowsChange(change: ComponentChange<this, Nullable<number>>): void {\n    const updatedValue: Nullable<number> = change?.currentValue;\n\n    if (isNil(updatedValue) || !Number.isInteger(updatedValue)) {\n      return;\n    }\n\n    this.maxRows$.next(updatedValue);\n  }\n\n  private processMinRowsChange(change: ComponentChange<this, Nullable<number>>): void {\n    const updatedValue: Nullable<number> = change?.currentValue;\n\n    if (isNil(updatedValue) || !Number.isInteger(updatedValue)) {\n      return;\n    }\n\n    this.minRows$.next(updatedValue);\n  }\n\n  private processCounterVisibilityChange(change: ComponentChange<this, TextareaCounterVisibility>): void {\n    const updatedValue: TextareaCounterVisibility = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.counterVisibility$.next(updatedValue);\n  }\n\n  private processEnterKeyDisabledChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.enterKeyPrevented$.next(updatedValue);\n  }\n\n  private static getHeightPxByRowsCount(\n    lineHeightSourceRef: ElementRef<HTMLTextAreaElement>,\n    rowsCount: number,\n    size: TextareaSize\n  ): number {\n    const verticalPaddingsPx: number =\n      size === 'large' ? LARGE_TEXTAREA_VERTICAL_PADDINGS_PX : MEDIUM_TEXTAREA_VERTICAL_PADDINGS_PX;\n\n    const computedStyles: CSSStyleDeclaration = getComputedStyle(lineHeightSourceRef.nativeElement);\n    const lineHeightPx: number = Number.parseFloat(computedStyles.lineHeight);\n\n    return lineHeightPx * rowsCount + verticalPaddingsPx;\n  }\n}\n","import { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  Optional,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ClientUiStateHandlerService } from '@bimeister/pupakit.common';\nimport { ScrollableComponent } from '@bimeister/pupakit.kit';\nimport { filterFalsy, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\nimport { TextareaBase } from '../../../../declarations/classes/abstract/textarea-base.abstract';\n\nconst CLOSE_ANIMATION_MS: number = 100;\nconst DELTA_SCROLL_FOR_CLOSE_PX: number = 50;\n\n@Component({\n  selector: 'pupa-textarea-inline',\n  templateUrl: './textarea-inline.component.html',\n  styleUrls: ['./textarea-inline.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaInlineComponent extends TextareaBase {\n  @ViewChild('trigger', { static: true })\n  private readonly triggerRef: ElementRef<HTMLElement>;\n\n  @ViewChild('overlayTextarea', { static: true })\n  private readonly overlayTextareaRef: TemplateRef<unknown>;\n\n  @ViewChild('scrollable')\n  public readonly scrollableRef: ScrollableComponent;\n\n  public readonly isOpened$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly overlayPositions: ConnectionPositionPair[] = [\n    new ConnectionPositionPair({ originX: 'end', originY: 'center' }, { overlayX: 'end', overlayY: 'center' }),\n  ];\n\n  public readonly isValueEmpty$: Observable<boolean> = this.value$.pipe(map((value: string) => isEmpty(value.trim())));\n\n  public readonly isMobile$: Observable<boolean> = this.clientUiStateHandlerService.breakpointIsXs$;\n\n  private currentOverlayRef: Nullable<OverlayRef> = null;\n  private lastDeltaScrollY: number = 0;\n\n  constructor(\n    @Optional() ngControl: NgControl,\n    private readonly overlay: Overlay,\n    private readonly clientUiStateHandlerService: ClientUiStateHandlerService,\n    private readonly viewContainerRef: ViewContainerRef\n  ) {\n    super(ngControl);\n  }\n\n  public open(): void {\n    this.isDisabled$\n      .pipe(\n        take(1),\n        filterFalsy(),\n        switchMap(() => this.isMobile$),\n        take(1),\n        tap((isMobile: boolean) => {\n          if (isMobile) {\n            this.openForMobile();\n            return;\n          }\n\n          this.openForDesktop();\n        })\n      )\n      .subscribe(() => {\n        setTimeout(() => {\n          this.setTextareaSelectionAndScroll();\n          this.isOpened$.next(true);\n        });\n      });\n  }\n\n  @HostListener('document:mousedown')\n  public close(): void {\n    this.isOpened$.next(false);\n\n    setTimeout(() => {\n      this.currentOverlayRef?.dispose();\n      this.currentOverlayRef = null;\n    }, CLOSE_ANIMATION_MS);\n  }\n\n  public emitBlurEvent(blurEvent: FocusEvent): void {\n    super.emitBlurEvent(blurEvent);\n    this.close();\n  }\n\n  @HostListener('document:wheel', ['$event'])\n  public recalculatePosition(event: WheelEvent): void {\n    if (isNil(this.currentOverlayRef)) {\n      return;\n    }\n\n    this.lastDeltaScrollY += event.deltaY;\n\n    if (Math.abs(this.lastDeltaScrollY) > DELTA_SCROLL_FOR_CLOSE_PX) {\n      this.lastDeltaScrollY = 0;\n      this.close();\n      return;\n    }\n\n    this.currentOverlayRef?.updatePosition();\n  }\n\n  private openForDesktop(): void {\n    const trigger: HTMLElement = this.triggerRef.nativeElement;\n    const portal: TemplatePortal = new TemplatePortal(this.overlayTextareaRef, this.viewContainerRef);\n\n    this.currentOverlayRef = this.overlay.create({\n      positionStrategy: this.overlay.position().flexibleConnectedTo(trigger).withPositions(this.overlayPositions),\n      width: trigger.clientWidth,\n    });\n    this.currentOverlayRef.attach(portal);\n  }\n\n  private openForMobile(): void {\n    const portal: TemplatePortal = new TemplatePortal(this.overlayTextareaRef, this.viewContainerRef);\n\n    this.currentOverlayRef = this.overlay.create({\n      positionStrategy: this.overlay.position().global(),\n      width: '100%',\n      hasBackdrop: true,\n    });\n    this.currentOverlayRef.attach(portal);\n  }\n\n  private setTextareaSelectionAndScroll(): void {\n    const textarea: HTMLTextAreaElement = this.textareaElementRef.nativeElement;\n\n    this.value$.pipe(take(1)).subscribe((value: string) => {\n      textarea.selectionStart = value.length;\n      this.scrollableRef.scrollToBottom();\n    });\n  }\n}\n","<pupa-theme-wrapper class=\"textarea-wrapper\">\n  <div\n    (click)=\"open()\"\n    (mousedown)=\"$event.stopPropagation()\"\n    class=\"textarea-inline\"\n    [class]=\"size$ | async\"\n    [class.textarea-inline_disabled]=\"isDisabled$ | async\"\n    [class.textarea-inline_invalid]=\"isInvalid$ | async\"\n    [class.textarea-inline_collapsed]=\"!(isOpened$ | async)\"\n    #lineHeightSource\n    #trigger\n  >\n    <span class=\"textarea-inline__content\" [class.textarea-inline__content_hidden]=\"isOpened$ | async\">\n      <span *ngIf=\"isValueEmpty$ | async; else value\" class=\"textarea-inline__placeholder\">\n        {{ placeholder$ | async }}\n      </span>\n    </span>\n  </div>\n  <div\n    class=\"counter\"\n    [class.counter_invalid]=\"isInvalid$ | async\"\n    [class.counter_invisible]=\"isOpened$ | async\"\n    *ngIf=\"maxLength$ | async\"\n  >\n    <span *ngIf=\"isCounterVisible$ | async\">{{ counterValue$ | async }}</span\n    >&nbsp;\n  </div>\n</pupa-theme-wrapper>\n\n<ng-template #overlayTextarea>\n  <pupa-theme-wrapper\n    class=\"overlay-container\"\n    [class.overlay-container_opened]=\"isOpened$ | async\"\n    (mousedown)=\"$event.stopPropagation()\"\n    (wheel)=\"$event.stopPropagation()\"\n  >\n    <div class=\"overlay-textarea\">\n      <label\n        class=\"textarea\"\n        [class.textarea_disabled]=\"isDisabled$ | async\"\n        [class.textarea_invalid]=\"isInvalid$ | async\"\n        (mousedown)=\"processMouseDown($event)\"\n      >\n        <pupa-scrollable #scrollable class=\"textarea__scrollable\" [style.max-height.px]=\"maxHeightPx$ | async\">\n          <div class=\"textarea__wrapper\" [style.min-height.px]=\"minHeightPx$ | async\">\n            <div class=\"textarea__pseudo-content\">\n              <span>{{ value$ | async }}&nbsp;<!-- &nbsp; removes content bouncing --></span>\n            </div>\n            <textarea\n              #textarea\n              pupaAutofocus\n              class=\"textarea__control\"\n              [value]=\"value$ | async\"\n              [placeholder]=\"placeholder$ | async\"\n              [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n              (focus)=\"emitFocusEvent($event)\"\n              (blur)=\"emitBlurEvent($event)\"\n              (input)=\"updateValue(textarea.value)\"\n              (keydown.enter)=\"preventEnterKeyEvent($event)\"\n            >\n            </textarea>\n          </div>\n        </pupa-scrollable>\n      </label>\n\n      <pupa-icon class=\"close-icon\" name=\"m-collapse\" (click)=\"close()\"></pupa-icon>\n\n      <div\n        class=\"counter counter_overlay\"\n        [class.counter_mobile]=\"isMobile$ | async\"\n        [class.counter_invalid]=\"isInvalid$ | async\"\n        *ngIf=\"maxLength$ | async\"\n      >\n        <span *ngIf=\"isCounterVisible$ | async\">{{ counterValue$ | async }}</span\n        >&nbsp;\n      </div>\n    </div>\n  </pupa-theme-wrapper>\n</ng-template>\n\n<ng-template #value>\n  <span>{{ value$ | async }}</span>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { TextareaBase } from '../../../../declarations/classes/abstract/textarea-base.abstract';\n\n@Component({\n  selector: 'pupa-textarea',\n  templateUrl: './textarea.component.html',\n  styleUrls: ['./textarea.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaComponent extends TextareaBase {}\n","<pupa-theme-wrapper>\n  <label\n    class=\"textarea\"\n    #lineHeightSource\n    [class]=\"size$ | async\"\n    [class.textarea_disabled]=\"isDisabled$ | async\"\n    [class.textarea_invalid]=\"isInvalid$ | async\"\n    (mousedown)=\"processMouseDown($event)\"\n  >\n    <pupa-scrollable class=\"textarea__scrollable\" [style.max-height.px]=\"maxHeightPx$ | async\">\n      <div class=\"textarea__wrapper\" [style.min-height.px]=\"minHeightPx$ | async\">\n        <div class=\"textarea__pseudo-content\">\n          <span>{{ value$ | async }}&nbsp;<!-- &nbsp; removes content bouncing --></span>\n        </div>\n        <textarea\n          #textarea\n          class=\"textarea__control\"\n          [value]=\"value$ | async\"\n          [placeholder]=\"placeholder$ | async\"\n          [disabled]=\"isDisabled$ | async\"\n          [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n          (focus)=\"emitFocusEvent($event)\"\n          (blur)=\"emitBlurEvent($event)\"\n          (input)=\"updateValue(textarea.value)\"\n          (keydown.enter)=\"preventEnterKeyEvent($event)\"\n        >\n        </textarea>\n      </div>\n    </pupa-scrollable>\n  </label>\n\n  <div class=\"counter\" [class.counter_invalid]=\"isInvalid$ | async\" *ngIf=\"maxLength$ | async\">\n    <span *ngIf=\"isCounterVisible$ | async\">{{ counterValue$ | async }}</span\n    >&nbsp;\n  </div>\n</pupa-theme-wrapper>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { mCollapseIcon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaScrollableModule, PupaThemeWrapperModule } from '@bimeister/pupakit.kit';\nimport { TextareaInlineComponent } from './components/textarea-inline/textarea-inline.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\n\n@NgModule({\n  declarations: [TextareaComponent, TextareaInlineComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PupaScrollableModule,\n    PupaIconsModule.forFeature([mCollapseIcon]),\n    PupaThemeWrapperModule,\n    OverlayModule,\n    PortalModule,\n  ],\n  exports: [TextareaComponent, TextareaInlineComponent],\n})\nexport class PupaTextareaModule {}\n","import { NgModule, Type } from '@angular/core';\nimport { PupaControlTextModule } from './components/control-text/control-text.module';\nimport { PupaDateTimePickerModule } from './components/date-time-picker/date-time-picker.module';\nimport { PupaDaySelectorModule } from './components/day-selector/day-selector.module';\nimport { PupaDroppableModule } from './components/droppable/droppable.module';\nimport { PupaFormLayoutModule } from './components/form-layout/form-layout.module';\nimport { PupaInputModule } from './components/input/input.module';\nimport { PupaLabelModule } from './components/label/label.module';\nimport { PupaRadioGroupModule } from './components/radio-group/radio-group.module';\nimport { PupaRatingModule } from './components/rating/rating.module';\nimport { PupaSearchFieldModule } from './components/search-field/search-field.module';\nimport { PupaSelectModule } from './components/select/select.module';\nimport { PupaSwitcherModule } from './components/switcher/switcher.module';\nimport { PupaTextareaModule } from './components/textarea/textarea.module';\n\nconst MODULES: Type<unknown>[] = [\n  PupaInputModule,\n  PupaSelectModule,\n  PupaTextareaModule,\n  PupaRadioGroupModule,\n  PupaDroppableModule,\n  PupaDateTimePickerModule,\n  PupaDaySelectorModule,\n  PupaSearchFieldModule,\n  PupaControlTextModule,\n  PupaFormLayoutModule,\n  PupaSwitcherModule,\n  PupaRatingModule,\n  PupaLabelModule,\n];\n\n@NgModule({\n  declarations: [],\n  imports: MODULES,\n  exports: MODULES,\n})\nexport class PupaFormsModule {}\n"],"names":["DEFAULT_CURRENT_DATE_WITH_CLEARED_TIME","YEARS_IN_SECTION","i1.DatePickerStateService","i2","i3","i4.DatePickerYearsComponent","i5.DatePickerMonthsComponent","DEFAULT_CURRENT_DATE","i1.DatePickerSimpleComponent","i1.TimePickerStateService","i4","i3.TimePickerDigitsComponent","i2.DatePickerSimpleComponent","i3.TimePickerSimpleComponent","i3.DatePickerSimpleComponent","i4.DatePickerDoubleComponent","i5.DatePickerSimpleTimeComponent","i1.TimePickerSimpleComponent","EXPORTS","DECLARATIONS","i1","i1.DaySelectorStateService","i2.LocaleDayFormatterService","i5.DaySelectorItemComponent","i1.DroppableComponent","isEmpty","DATE_FORMAT","MAX_HOURS","MAX_MINUTES","MAX_SECONDS","DATE_MASK","DATE_MASK_SIZE","i3.DatePickerComponent","i4.DroppableTriggerComponent","i5.DroppableComponent","i6.DroppableNativeContentComponent","i7","i8","TIME_MASK","i5","i1.RadioGroupService","i1.SelectStateService","i6"],"mappings":"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"}