{"version":3,"file":"bimeister-pupakit.kit.mjs","sources":["../../src/components/accordion/components/accordion/accordion.component.ts","../../src/components/accordion/components/accordion/accordion.component.html","../../src/components/accordion/components/accordion-header/accordion-header.component.ts","../../src/components/accordion/components/accordion-header/accordion-header.component.html","../../src/components/accordion/components/accordion-description/accordion-description.component.ts","../../src/components/accordion/components/accordion-description/accordion-description.component.html","../../src/components/accordion/components/accordion-title/accordion-title.component.ts","../../src/components/accordion/components/accordion-title/accordion-title.component.html","../../src/components/accordion/components/accordion-body/accordion-body.component.ts","../../src/components/accordion/components/accordion-body/accordion-body.component.html","../../src/components/accordion/components/accordion-group/accordion-group.component.ts","../../src/components/accordion/components/accordion-group/accordion-group.component.html","../../src/components/accordion/accordion.module.ts","../../src/declarations/functions/get-initials.function.ts","../../src/components/avatar/components/avatar/avatar.component.ts","../../src/components/avatar/components/avatar/avatar.component.html","../../src/components/avatar/avatar.module.ts","../../src/components/badge/components/badge-indicator/badge-indicator.component.ts","../../src/components/badge/components/badge-indicator/badge-indicator.component.html","../../src/components/badge/components/badge-marker-block/badge-marker-block.component.ts","../../src/components/badge/components/badge-marker-block/badge-marker-block.component.html","../../src/components/badge/components/badge-marker/badge-marker.component.ts","../../src/components/badge/components/badge-marker/badge-marker.component.html","../../src/components/badge/components/badge/badge.component.ts","../../src/components/badge/components/badge/badge.component.html","../../src/components/badge/badge.module.ts","../../src/declarations/tokens/dropdown-container-data.token.ts","../../src/components/theme-wrapper/services/theme-wrapper.service.ts","../../src/components/theme-wrapper/components/theme-wrapper/theme-wrapper.component.ts","../../src/components/theme-wrapper/components/theme-wrapper/theme-wrapper.component.html","../../src/components/dropdown/components/dropdown-container/dropdown-container.component.ts","../../src/components/dropdown/components/dropdown-container/dropdown-container.component.html","../../src/declarations/classes/dropdown-ref.class.ts","../../src/declarations/classes/opened-dropdown.class.ts","../../src/declarations/classes/abstract/dropdown-component-base.abstract.ts","../../src/components/dropdown/components/dropdown-template/dropdown-template.component.ts","../../src/components/dropdown/components/dropdown-template/dropdown-template.component.html","../../src/services/dropdowns.service.ts","../../src/components/dropdown/directives/dropdown.directive.ts","../../src/components/theme-wrapper/theme-wrapper.module.ts","../../src/components/dropdown/directives/dropdown-template.directive.ts","../../src/components/dropdown/dropdown.module.ts","../../src/components/spinner/components/bagel-spinner/bagel-spinner.component.ts","../../src/components/spinner/components/bagel-spinner/bagel-spinner.component.html","../../src/components/spinner/components/spinner/spinner.component.ts","../../src/components/spinner/components/spinner/spinner.component.html","../../src/components/spinner/spinner.module.ts","../../src/components/buttons/components/button-icon/button-icon.component.ts","../../src/components/buttons/components/button-icon/button-icon.component.html","../../src/components/buttons/components/button/button.component.ts","../../src/components/buttons/components/button/button.component.html","../../src/components/buttons/components/button-multi/button-multi.component.ts","../../src/components/buttons/components/button-multi/button-multi.component.html","../../src/components/buttons/components/button-round/button-round.component.ts","../../src/components/buttons/components/button-round/button-round.component.html","../../src/components/buttons/buttons.module.ts","../../src/components/dropdown-menu/services/dropdown-menu-context.service.ts","../../src/components/option/directives/option-actions-right.directive.ts","../../src/components/checkbox/services/checkbox.service.ts","../../src/components/checkbox/components/checkbox/checkbox.component.ts","../../src/components/checkbox/components/checkbox/checkbox.component.html","../../src/components/option/components/option/option.component.ts","../../src/components/option/components/option/option.component.html","../../src/components/dropdown-menu/components/dropdown-menu-item/dropdown-menu-item.component.ts","../../src/components/dropdown-menu/components/dropdown-menu-item/dropdown-menu-item.component.html","../../src/components/dropdown-menu/components/dropdown-menu-separator/dropdown-menu-separator.component.ts","../../src/components/dropdown-menu/components/dropdown-menu-separator/dropdown-menu-separator.component.html","../../src/components/checkbox/checkbox.module.ts","../../src/components/option/components/option-description/option-description.component.ts","../../src/components/option/components/option-description/option-description.component.html","../../src/components/option/components/option-icon/option-icon.component.ts","../../src/components/option/components/option-icon/option-icon.component.html","../../src/components/option/components/option-title/option-title.component.ts","../../src/components/option/components/option-title/option-title.component.html","../../src/components/option/option.module.ts","../../src/components/scrollable/directives/scrollable-content.directive.ts","../../src/declarations/classes/scrollbar.class.ts","../../src/components/scrollable/components/scrollable/scrollable.component.ts","../../src/components/scrollable/components/scrollable/scrollable.component.html","../../src/components/scrollable/scrollable.module.ts","../../src/components/dropdown-menu/components/dropdown-menu/dropdown-menu.component.ts","../../src/components/dropdown-menu/components/dropdown-menu/dropdown-menu.component.html","../../src/components/dropdown-menu/dropdown-menu.module.ts","../../src/declarations/tokens/tooltip-service.token.ts","../../src/components/tooltip/components/tooltip-content/tooltip-content.component.ts","../../src/components/tooltip/components/tooltip-content/tooltip-content.component.html","../../src/components/tooltip/positions.ts","../../src/components/tooltip/services/tooltip.service.ts","../../src/components/tooltip/directives/tooltip.directive.ts","../../src/components/tooltip/tooltip.module.ts","../../src/components/breadcrumbs/components/breadcrumb-separator/breadcrumb-separator.component.ts","../../src/components/breadcrumbs/components/breadcrumb-separator/breadcrumb-separator.component.html","../../src/components/breadcrumbs/components/breadcrumb-unfit-trigger/breadcrumb-unfit-trigger.component.ts","../../src/components/breadcrumbs/components/breadcrumb-unfit-trigger/breadcrumb-unfit-trigger.component.html","../../src/components/breadcrumbs/components/breadcrumb/breadcrumb.component.ts","../../src/components/breadcrumbs/components/breadcrumb/breadcrumb.component.html","../../src/declarations/classes/breadcrumbs-producer.class.ts","../../src/components/breadcrumbs/directives/breadcrumb-template.directive.ts","../../src/components/breadcrumbs/components/breadcrumbs/breadcrumbs.component.ts","../../src/components/breadcrumbs/components/breadcrumbs/breadcrumbs.component.html","../../src/components/breadcrumbs/breadcrumbs.module.ts","../../src/declarations/classes/abstract/tabs-service-base.abstract.ts","../../src/declarations/tokens/button-group-state-service.token.ts","../../src/components/button-group/services/button-group-state.service.ts","../../src/components/button-group/components/button-group-container/button-group-container.component.ts","../../src/components/button-group/components/button-group-container/button-group-container.component.html","../../src/declarations/classes/abstract/tabs-content-base.abstract.ts","../../src/components/button-group/directives/button-group-item-content-template.directive.ts","../../src/components/button-group/components/button-group-content/button-group-content.component.ts","../../src/components/button-group/components/button-group-content/button-group-content.component.html","../../src/declarations/classes/abstract/tabs-item-base.abstract.ts","../../src/components/button-group/components/button-group-item/button-group-item.component.ts","../../src/components/button-group/components/button-group-item/button-group-item.component.html","../../src/declarations/classes/abstract/tabs-base.abstract.ts","../../src/components/button-group/components/button-group/button-group.component.ts","../../src/components/button-group/components/button-group/button-group.component.html","../../src/components/button-group/button-group.module.ts","../../src/components/card/components/card-action/card-action.component.ts","../../src/components/card/components/card-action/card-action.component.html","../../src/components/card/components/card-container/card-container.component.ts","../../src/components/card/components/card-container/card-container.component.html","../../src/components/card/components/card-cover/card-cover.component.ts","../../src/components/card/components/card-cover/card-cover.component.html","../../src/components/card/components/card-description/card-description.component.ts","../../src/components/card/components/card-description/card-description.component.html","../../src/components/card/components/card-header/card-header.component.ts","../../src/components/card/components/card-header/card-header.component.html","../../src/components/card/components/card-title/card-title.component.ts","../../src/components/card/components/card-title/card-title.component.html","../../src/components/card/service/card-state.service.ts","../../src/components/card/components/card/card.component.ts","../../src/components/card/components/card/card.component.html","../../src/components/card/card.module.ts","../../src/components/counter/components/counter/counter.component.ts","../../src/components/counter/components/counter/counter.component.html","../../src/components/counter/counter.module.ts","../../src/components/icon-holder/components/icon-holder/icon-holder.component.ts","../../src/components/icon-holder/components/icon-holder/icon-holder.component.html","../../src/components/icon-holder/icon-holder.module.ts","../../src/services/loader.service.ts","../../src/services/grid-state.service.ts","../../src/components/layout/components/layout/layout.component.ts","../../src/components/layout/components/layout/layout.component.html","../../src/components/layout/components/loader/loader.component.ts","../../src/components/layout/components/loader/loader.component.html","../../src/components/layout/layout.module.ts","../../src/components/link/components/link/link.component.ts","../../src/components/link/components/link/link.component.html","../../src/components/link/link.module.ts","../../src/components/progress-bar/components/progress-bar/progress-bar.component.ts","../../src/components/progress-bar/components/progress-bar/progress-bar.component.html","../../src/components/progress-bar/progress-bar.module.ts","../../src/components/section/components/section-container/section-container.component.ts","../../src/components/section/components/section-container/section-container.component.html","../../src/components/section/components/section-sub-title/section-sub-title.component.ts","../../src/components/section/components/section-sub-title/section-sub-title.component.html","../../src/components/section/components/section-title/section-title.component.ts","../../src/components/section/components/section-title/section-title.component.html","../../src/components/section/section.module.ts","../../src/components/skeleton/components/skeleton-group/skeleton-group.component.ts","../../src/components/skeleton/components/skeleton-group/skeleton-group.component.html","../../src/components/skeleton/components/skeleton/skeleton.component.ts","../../src/components/skeleton/components/skeleton/skeleton.component.html","../../src/components/skeleton/components/skeleton-line/skeleton-line.component.ts","../../src/components/skeleton/components/skeleton-line/skeleton-line.component.html","../../src/components/skeleton/skeleton.module.ts","../../src/components/status/components/status/status.component.ts","../../src/components/status/components/status/status.component.html","../../src/components/status/status.module.ts","../../src/declarations/tokens/stepper-container-state-service.token.ts","../../src/components/stepper/services/stepper-state.service.ts","../../src/components/stepper/components/stepper-container/stepper-container.component.ts","../../src/components/stepper/components/stepper-container/stepper-container.component.html","../../src/components/tabs/services/tabs-state.service.ts","../../src/components/stepper/directives/stepper-item-content.directive.ts","../../src/components/stepper/components/stepper-content/stepper-content.component.ts","../../src/components/stepper/components/stepper-content/stepper-content.component.html","../../src/components/stepper/components/stepper-counter/stepper-counter.component.ts","../../src/components/stepper/components/stepper-counter/stepper-counter.component.html","../../src/components/stepper/services/stepper-registry.service.ts","../../src/components/stepper/components/stepper-item/stepper-item.component.ts","../../src/components/stepper/components/stepper-item/stepper-item.component.html","../../src/components/stepper/components/stepper/stepper.component.ts","../../src/components/stepper/components/stepper/stepper.component.html","../../src/components/stepper/stepper.module.ts","../../src/declarations/tokens/tabs-container-state-service.token.ts","../../src/components/tabs/components/tabs-container/tabs-container.component.ts","../../src/components/tabs/components/tabs-container/tabs-container.component.html","../../src/components/tabs/directives/tabs-item-content-template.directive.ts","../../src/components/tabs/components/tabs-content/tabs-content.component.ts","../../src/components/tabs/components/tabs-content/tabs-content.component.html","../../src/components/tabs/components/tabs-item/tabs-item.component.ts","../../src/components/tabs/components/tabs-item/tabs-item.component.html","../../src/components/tabs/components/tabs-separator/tabs-separator.component.ts","../../src/components/tabs/components/tabs-separator/tabs-separator.component.html","../../src/components/tabs/components/tabs/tabs.component.ts","../../src/components/tabs/components/tabs/tabs.component.html","../../src/components/tabs/tabs.module.ts","../../src/components/tag/services/tag-state.service.ts","../../src/components/tag/components/pupa-tag-delete-button/pupa-tag-delete-button.component.ts","../../src/components/tag/components/pupa-tag-delete-button/pupa-tag-delete-button.component.html","../../src/components/tag/components/pupa-tag-text/pupa-tag-text.component.ts","../../src/components/tag/components/pupa-tag-text/pupa-tag-text.component.html","../../src/components/tag/components/tag-action-button/tag-action-button.component.ts","../../src/components/tag/components/tag-action-button/tag-action-button.component.html","../../src/declarations/classes/abstract/tag-base.abstract.ts","../../src/components/tag/components/tag-inline/tag-inline.component.ts","../../src/components/tag/components/tag-inline/tag-inline.component.html","../../src/components/tag/directives/tag-action-button-template.directive.ts","../../src/components/tag/components/tag/tag.component.ts","../../src/components/tag/components/tag/tag.component.html","../../src/components/tag/tag.module.ts","../../src/components/timer/components/timer-round/timer-round.component.ts","../../src/components/timer/components/timer-round/timer-round.component.html","../../src/components/timer/timer.module.ts","../../src/kit.module.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AccordionKind } from '../../../../declarations/types/accordion-kind.type';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\n\nenum AnimationState {\n  Void = 'void',\n  Expanded = 'expanded',\n}\n\nconst TRANSITION: string = '300ms ease-in-out';\n\n@Component({\n  selector: 'pupa-accordion',\n  templateUrl: './accordion.component.html',\n  styleUrls: ['./accordion.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('accordionExpanded', [\n      state(AnimationState.Void, style({ opacity: '0', height: '0px', visibility: 'hidden', overflow: 'hidden' })),\n      state(AnimationState.Expanded, style({ height: '*', overflow: 'hidden' })),\n      transition(`${AnimationState.Expanded} => ${AnimationState.Void}`, animate(TRANSITION)),\n      transition(`${AnimationState.Void} => ${AnimationState.Expanded}`, animate(TRANSITION)),\n    ]),\n    trigger('arrowRotated', [\n      state(AnimationState.Void, style({ transform: 'rotate(0)' })),\n      state(AnimationState.Expanded, style({ transform: 'rotate(180deg)' })),\n      transition(`${AnimationState.Expanded} => ${AnimationState.Void}`, animate(TRANSITION)),\n      transition(`${AnimationState.Void} => ${AnimationState.Expanded}`, animate(TRANSITION)),\n    ]),\n  ],\n})\nexport class AccordionComponent implements OnChanges {\n  @Input() public showArrow: boolean = true;\n\n  @Input() public destroyable: boolean = true;\n\n  @Input() public kind: AccordionKind = 'normal';\n  public readonly kind$: BehaviorSubject<AccordionKind> = new BehaviorSubject<AccordionKind>(this.kind);\n\n  @Input() public expanded: boolean = false;\n  @Output() public readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n  public readonly expanded$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(this.expanded);\n\n  public readonly animationState$: Observable<AnimationState> = this.expanded$.pipe(\n    map((expanded: boolean) => (expanded ? AnimationState.Expanded : AnimationState.Void))\n  );\n\n  public readonly accordionClass$: Observable<string> = this.kind$.pipe(\n    map((kind: AccordionKind) => `accordion_${kind}`)\n  );\n\n  constructor(private readonly changeDetectionRef: ChangeDetectorRef) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    if (changes.hasOwnProperty('kind')) {\n      this.processKindChange(changes.kind);\n    }\n\n    if (changes.hasOwnProperty('expanded')) {\n      this.processExpandedChange(changes.expanded);\n    }\n  }\n\n  public toggle(): void {\n    this.updateExpanded(!this.expanded);\n  }\n\n  public collapse(): void {\n    this.updateExpanded(false);\n  }\n\n  private updateExpanded(expanded: boolean): void {\n    if (this.expanded === expanded) {\n      return;\n    }\n\n    this.expanded = expanded;\n    this.expandedChange.emit(expanded);\n    this.expanded$.next(expanded);\n    this.changeDetectionRef.detectChanges();\n  }\n\n  private processExpandedChange(expanded: ComponentChange<this, boolean>): void {\n    this.expanded$.next(expanded.currentValue);\n  }\n\n  private processKindChange(kind: ComponentChange<this, AccordionKind>): void {\n    this.kind$.next(kind.currentValue);\n  }\n}\n","<div class=\"accordion\" [ngClass]=\"accordionClass$ | async\" [class.accordion_expanded]=\"expanded$ | async\">\n  <div class=\"accordion-header\" [class.accordion-header_expanded]=\"expanded$ | async\" (click)=\"toggle()\">\n    <div class=\"accordion-header__content\" [class.accordion-header__content_with-arrow]=\"showArrow\">\n      <ng-content></ng-content>\n    </div>\n\n    <ng-container *ngIf=\"showArrow\">\n      <div class=\"arrow-container\">\n        <pupa-icon name=\"app-chevron-down\" [@arrowRotated]=\"animationState$ | async\"></pupa-icon>\n      </div>\n    </ng-container>\n  </div>\n\n  <ng-container *ngIf=\"!destroyable || (expanded$ | async)\">\n    <div class=\"accordion-body\" [@accordionExpanded]=\"animationState$ | async\">\n      <ng-content select=\"pupa-accordion-body\"></ng-content>\n    </div>\n  </ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-accordion-header',\n  templateUrl: './accordion-header.component.html',\n  styleUrls: ['./accordion-header.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionHeaderComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-accordion-description',\n  templateUrl: './accordion-description.component.html',\n  styleUrls: ['./accordion-description.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionDescriptionComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-accordion-title',\n  templateUrl: './accordion-title.component.html',\n  styleUrls: ['./accordion-title.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionTitleComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-accordion-body',\n  templateUrl: './accordion-body.component.html',\n  styleUrls: ['./accordion-body.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionBodyComponent {}\n","<ng-content></ng-content>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  Input,\n  OnDestroy,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { filterNotNil, filterTruthy } from '@bimeister/utilities';\nimport { AccordionComponent } from '../accordion/accordion.component';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { filter, map, mapTo, pairwise, startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'pupa-accordion-group',\n  templateUrl: './accordion-group.component.html',\n  styleUrls: ['./accordion-group.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionGroupComponent implements OnDestroy, AfterContentInit {\n  @Input() public readonly closeOthers: boolean = true;\n\n  @ContentChildren(AccordionComponent) public readonly accordionList: QueryList<AccordionComponent>;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public ngAfterContentInit(): void {\n    this.subscription.add(this.processCloseOthers());\n  }\n\n  private processCloseOthers(): Subscription {\n    const accordionList$: Observable<AccordionComponent[]> = this.accordionList.changes.pipe(\n      map((accordion: QueryList<AccordionComponent>) => accordion.toArray()),\n      startWith(this.accordionList.toArray())\n    );\n\n    const justAddedAccordionExpanded$: Observable<AccordionComponent> = accordionList$.pipe(\n      pairwise(),\n      map(([previousAccordionList, currentAccordionList]: [AccordionComponent[], AccordionComponent[]]) =>\n        currentAccordionList.find(\n          (accordion: AccordionComponent) => !previousAccordionList.includes(accordion) && accordion.expanded\n        )\n      ),\n      filterNotNil()\n    );\n\n    const existingAccordionExpanded$: Observable<AccordionComponent> = accordionList$.pipe(\n      switchMap((accordionList: AccordionComponent[]) =>\n        merge(\n          ...accordionList.map((accordion: AccordionComponent) =>\n            accordion.expanded$.pipe(filterTruthy(), mapTo(accordion))\n          )\n        )\n      )\n    );\n\n    return merge(justAddedAccordionExpanded$, existingAccordionExpanded$)\n      .pipe(filter(() => this.closeOthers))\n      .subscribe((expandedAccordion: AccordionComponent) => {\n        this.accordionList.forEach((accordion: AccordionComponent) => {\n          if (expandedAccordion !== accordion && accordion.expanded) {\n            accordion.collapse();\n          }\n        });\n      });\n  }\n}\n","<ng-content select=\"pupa-accordion\"></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { AccordionComponent } from './components/accordion/accordion.component';\nimport { AccordionHeaderComponent } from './components/accordion-header/accordion-header.component';\nimport { AccordionDescriptionComponent } from './components/accordion-description/accordion-description.component';\nimport { AccordionTitleComponent } from './components/accordion-title/accordion-title.component';\nimport { AccordionBodyComponent } from './components/accordion-body/accordion-body.component';\nimport { AccordionGroupComponent } from './components/accordion-group/accordion-group.component';\nimport { CommonModule } from '@angular/common';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\n\nconst COMPONENTS: Type<unknown>[] = [\n  AccordionComponent,\n  AccordionHeaderComponent,\n  AccordionTitleComponent,\n  AccordionDescriptionComponent,\n  AccordionBodyComponent,\n  AccordionGroupComponent,\n];\n\n@NgModule({\n  declarations: [...COMPONENTS],\n  imports: [CommonModule, PupaIconsModule],\n  exports: [...COMPONENTS],\n})\nexport class PupaAccordionModule {}\n","import { isEmpty, isNil, Nullable } from '@bimeister/utilities';\n\nexport function getInitials(name: Nullable<string>): string {\n  if (isNil(name)) {\n    return '';\n  }\n  const nameSectionsList: string[] = name.trim().split(' ');\n  const notEmptyNameSectionsList: string[] = nameSectionsList.filter((item: string) => !isEmpty(item));\n  const firstName: string = notEmptyNameSectionsList?.[0]?.trimStart();\n  const secondName: string = notEmptyNameSectionsList?.[1]?.trimStart();\n  if (isEmpty(firstName)) {\n    return '';\n  }\n  if (isEmpty(secondName)) {\n    return firstName[0].toUpperCase();\n  }\n  return `${firstName[0]}${secondName[0]}`.toUpperCase();\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { getHslColorFromString, HslColor, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AvatarSize } from '../../../../declarations/types/avatar-size.type';\nimport { getInitials } from '../../../../declarations/functions/get-initials.function';\n\nconst SATURATION: number = 88;\nconst LIGHTNESS: number = 78;\n\nenum Mode {\n  Icon = 'icon',\n  Image = 'image',\n  Username = 'username',\n  Default = 'default',\n}\n\n@Component({\n  selector: 'pupa-avatar',\n  templateUrl: './avatar.component.html',\n  styleUrls: ['./avatar.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent implements OnChanges {\n  @Input() public username: string;\n  public readonly username$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  @Input() public iconName: string;\n  public readonly iconName$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  @Input() public src: string;\n  public readonly src$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  @Input() public size: AvatarSize = 'small';\n  public readonly size$: BehaviorSubject<AvatarSize> = new BehaviorSubject<AvatarSize>('small');\n\n  @Input() public withBorder: boolean = false;\n  public readonly withBorder$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public disabled: boolean = false;\n  public readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.size$,\n    this.withBorder$.pipe(map((withBorder: boolean) => (Boolean(withBorder) ? 'bordered' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `avatar_${innerProperty}`)\n    )\n  );\n\n  public readonly isEmptyUserName$: Observable<boolean> = this.username$.pipe(map(isEmpty));\n\n  public readonly hslBackgroundColor$: Observable<string> = combineLatest([this.username$, this.disabled$]).pipe(\n    map(([username, isDisabled]: [Nullable<string>, boolean]) => {\n      if (isEmpty(username) || isDisabled) {\n        return null;\n      }\n      const { h, s, l }: HslColor = getHslColorFromString(username, SATURATION, LIGHTNESS);\n      return `hsl(${h}, ${s}%, ${l}%)`;\n    })\n  );\n  public readonly initials$: Observable<Nullable<string>> = this.username$.pipe(\n    map((username: Nullable<string>) => getInitials(username))\n  );\n\n  public readonly backgroundImage$: Observable<string> = this.src$.pipe(\n    map((src: Nullable<string>) => `url('${src ?? ''}')`)\n  );\n\n  public readonly mode$: Observable<Mode> = combineLatest([this.iconName$, this.src$, this.username$]).pipe(\n    map(([iconName, src, username]: [Nullable<string>, Nullable<string>, Nullable<string>]) => {\n      if (!isNil(iconName)) {\n        return Mode.Icon;\n      }\n      if (!isNil(src)) {\n        return Mode.Image;\n      }\n      if (!isNil(username)) {\n        return Mode.Username;\n      }\n\n      return Mode.Default;\n    })\n  );\n  public readonly mode: typeof Mode = Mode;\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processUsernameChange(changes?.username);\n    this.processIconNameChange(changes?.iconName);\n    this.processSrcChange(changes?.src);\n    this.processSizeChange(changes?.size);\n    this.processWithBorderChange(changes?.withBorder);\n    this.processDisabledChange(changes?.disabled);\n  }\n\n  private processUsernameChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (typeof updatedValue !== 'string') {\n      return;\n    }\n    if (isEmpty(updatedValue.trim())) {\n      return this.username$.next(null);\n    }\n    this.username$.next(updatedValue);\n  }\n  private processIconNameChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    const serializedValue: string = isEmpty(updatedValue) ? null : updatedValue;\n    this.iconName$.next(serializedValue);\n  }\n\n  private processSrcChange(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    const serializedValue: string = isEmpty(updatedValue) ? null : updatedValue;\n    this.src$.next(serializedValue);\n  }\n\n  private processSizeChange(change: ComponentChange<this, AvatarSize>): void {\n    const updatedValue: AvatarSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processWithBorderChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.withBorder$.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    this.disabled$.next(updatedValue);\n  }\n}\n","<div\n  class=\"avatar\"\n  [ngClass]=\"resultClassList$ | async\"\n  [style.background-color]=\"hslBackgroundColor$ | async\"\n  [class.avatar_default]=\"isEmptyUserName$ | async\"\n  [class.avatar_disabled]=\"disabled$ | async\"\n  [ngSwitch]=\"mode$ | async\"\n>\n  <ng-container *ngSwitchCase=\"mode.Icon\" [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\n  <ng-container *ngSwitchCase=\"mode.Image\" [ngTemplateOutlet]=\"imageTemplate\"></ng-container>\n  <ng-container *ngSwitchCase=\"mode.Username\" [ngTemplateOutlet]=\"usernameTemplate\"></ng-container>\n  <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"defaultTemplate\"></ng-container>\n</div>\n\n<ng-template #iconTemplate>\n  <div class=\"avatar__icon-container\">\n    <pupa-icon class=\"avatar__icon\" [name]=\"iconName$ | async\"></pupa-icon>\n  </div>\n</ng-template>\n\n<ng-template #imageTemplate>\n  <div class=\"avatar__image-container\" [style.background-image]=\"backgroundImage$ | async\"></div>\n</ng-template>\n\n<ng-template #usernameTemplate>\n  <div class=\"avatar__text\">{{ initials$ | async }}</div>\n</ng-template>\n\n<ng-template #defaultTemplate>\n  <div class=\"avatar__icon-container\">\n    <pupa-icon class=\"avatar__icon\" [name]=\"'app-user'\"></pupa-icon>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\nimport { mdPersonIcon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { AvatarComponent } from './components/avatar/avatar.component';\n\n@NgModule({\n  declarations: [AvatarComponent],\n  exports: [AvatarComponent],\n  imports: [CommonModule, PupaIconsModule.forFeature([mdPersonIcon]), PupaPipesModule],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class PupaAvatarModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\ntype BadgeIndicatorState = 'progress' | 'complete' | 'error';\n\n@Component({\n  selector: 'pupa-badge-indicator',\n  templateUrl: './badge-indicator.component.html',\n  styleUrls: ['./badge-indicator.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeIndicatorComponent {\n  @Input() public readonly state: BadgeIndicatorState = 'progress';\n\n  public readonly icons: Map<BadgeIndicatorState, string> = new Map([\n    ['complete', 'app-exceptions-check-4'],\n    ['error', 'app-exceptions-cross-4'],\n  ]);\n}\n","<span class=\"badge-indicator\" [ngClass]=\"state\">\n  <ng-container *ngIf=\"state === 'progress'; else iconBadge\">\n    <span class=\"badge-indicator__icon outer-circle\"></span>\n    <span class=\"badge-indicator__icon inner-circle\"></span>\n  </ng-container>\n</span>\n<ng-template #iconBadge>\n  <ng-container *ngIf=\"icons.get(state) as name\">\n    <pupa-icon class=\"badge-indicator__icon\" [name]=\"name\"></pupa-icon>\n  </ng-container>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-badge-marker-block',\n  templateUrl: './badge-marker-block.component.html',\n  styleUrls: ['./badge-marker-block.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeMarkerBlockComponent {}\n","<span class=\"badge-marker-block\">\n  <ng-content></ng-content>\n</span>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BadgeSize } from '../../../../declarations/types/badge-size.type';\n\n@Component({\n  selector: 'pupa-badge-marker',\n  templateUrl: './badge-marker.component.html',\n  styleUrls: ['./badge-marker.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeMarkerComponent {\n  @Input() public readonly size: BadgeSize = 'medium';\n}\n","<span\n  class=\"badge\"\n  [ngClass]=\"{\n    badge__medium: size === 'medium',\n    badge__small: size === 'small'\n  }\"\n>\n  <ng-content></ng-content>\n</span>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-badge',\n  templateUrl: './badge.component.html',\n  styleUrls: ['./badge.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {}\n","<ng-content> </ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { BadgeIndicatorComponent } from './components/badge-indicator/badge-indicator.component';\nimport { BadgeMarkerBlockComponent } from './components/badge-marker-block/badge-marker-block.component';\nimport { BadgeMarkerComponent } from './components/badge-marker/badge-marker.component';\nimport { BadgeComponent } from './components/badge/badge.component';\n\n@NgModule({\n  declarations: [BadgeComponent, BadgeMarkerComponent, BadgeIndicatorComponent, BadgeMarkerBlockComponent],\n  imports: [CommonModule, PupaIconsModule],\n  exports: [BadgeComponent, BadgeMarkerComponent, BadgeIndicatorComponent, BadgeMarkerBlockComponent],\n})\nexport class PupaBadgeModule {}\n","import { InjectionToken } from '@angular/core';\nimport { DropdownContainerData } from '../../declarations/interfaces/dropdown-container-data.interface';\n\nexport const DROPDOWN_CONTAINER_DATA_TOKEN: InjectionToken<DropdownContainerData<unknown>> = new InjectionToken<\n  DropdownContainerData<unknown>\n>('DROPDOWN_CONTAINER_DATA_TOKEN');\n","import { Injectable } from '@angular/core';\nimport { DARK_THEME_CLASS, LIGHT_THEME_CLASS, Theme, ThemeService } from '@bimeister/pupakit.common';\nimport { Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class ThemeWrapperService {\n  private readonly themeState$: BehaviorSubject<Nullable<Theme>> = new BehaviorSubject<Nullable<Theme>>(null);\n\n  public readonly theme$: Observable<Theme> = combineLatest([this.themeService.theme$, this.themeState$]).pipe(\n    map(([globalTheme, localTheme]: [Theme, Theme]) => localTheme ?? globalTheme)\n  );\n\n  public readonly themeClass$: Observable<string> = this.theme$.pipe(\n    map((theme: Theme) => (theme === Theme.Dark ? DARK_THEME_CLASS : LIGHT_THEME_CLASS))\n  );\n\n  constructor(private readonly themeService: ThemeService) {}\n\n  public setTheme(theme: Theme): void {\n    this.themeState$.next(theme);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges, Theme } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, withLatestFrom } from 'rxjs/operators';\nimport { ThemeWrapperService } from '../../services/theme-wrapper.service';\n\n@Component({\n  selector: 'pupa-theme-wrapper',\n  templateUrl: './theme-wrapper.component.html',\n  styleUrls: ['./theme-wrapper.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [ThemeWrapperService],\n})\nexport class ThemeWrapperComponent implements OnChanges, OnInit, OnDestroy {\n  @Input() public theme: Theme;\n\n  private readonly themeClass$: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(\n    private readonly themeWrapperService: ThemeWrapperService,\n    private readonly renderer: Renderer2,\n    private readonly hostElement: ElementRef\n  ) {}\n\n  public ngOnInit(): void {\n    this.subscription.add(this.processThemeClass());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processThemeChange(changes?.theme);\n  }\n\n  private processThemeChange(change: ComponentChange<this, Theme>): void {\n    this.themeWrapperService.setTheme(change?.currentValue);\n  }\n\n  private processThemeClass(): Subscription {\n    return this.themeWrapperService.themeClass$\n      .pipe(distinctUntilChanged(), withLatestFrom(this.themeClass$))\n      .subscribe(([themeClass, localThemeClass]: [string, string | null]) => {\n        this.renderer.addClass(this.hostElement.nativeElement, themeClass);\n\n        if (!isNil(localThemeClass)) {\n          this.renderer.removeClass(this.hostElement.nativeElement, localThemeClass);\n        }\n\n        this.themeClass$.next(themeClass);\n      });\n  }\n}\n","<ng-content></ng-content>\n","import { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { Theme } from '@bimeister/pupakit.common';\nimport { DROPDOWN_CONTAINER_DATA_TOKEN } from '../../../../declarations/tokens/dropdown-container-data.token';\nimport { DropdownContainerData } from '../../../../declarations/interfaces/dropdown-container-data.interface';\n\n@Component({\n  selector: 'pupa-dropdown-container',\n  templateUrl: './dropdown-container.component.html',\n  styleUrls: ['./dropdown-container.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownContainerComponent {\n  public readonly componentPortal: ComponentPortal<DropdownContainerComponent> = this.componentData.componentPortal;\n  public readonly theme: Theme = this.componentData.theme;\n\n  constructor(\n    @Inject(DROPDOWN_CONTAINER_DATA_TOKEN)\n    private readonly componentData: DropdownContainerData<DropdownContainerComponent>\n  ) {}\n\n  public stopEvent(event: Event): void {\n    event.stopPropagation();\n  }\n}\n","<pupa-theme-wrapper class=\"theme-container\" [theme]=\"theme\">\n  <div\n    class=\"content-container\"\n    (mousedown)=\"stopEvent($event)\"\n    (touchstart)=\"stopEvent($event)\"\n    (touchmove)=\"stopEvent($event)\"\n    (wheel)=\"stopEvent($event)\"\n  >\n    <ng-template [cdkPortalOutlet]=\"componentPortal\"></ng-template>\n  </div>\n</pupa-theme-wrapper>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Observable, Subject } from 'rxjs';\nimport { DropdownContainerComponent } from '../../components/dropdown/components/dropdown-container/dropdown-container.component';\nimport { DropdownConfig } from '../interfaces/dropdown-config.interface';\n\nexport class DropdownRef<TData = unknown> {\n  private readonly closedSubject$: Subject<void> = new Subject<void>();\n  public readonly closed$: Observable<void> = this.closedSubject$.asObservable();\n\n  constructor(private readonly overlayRef: OverlayRef, public readonly config: DropdownConfig<unknown, TData>) {}\n\n  public close(): void {\n    this.overlayRef.dispose();\n    this.closedSubject$.next();\n    this.closedSubject$.complete();\n  }\n\n  public open(componentPortal: ComponentPortal<DropdownContainerComponent>): void {\n    this.overlayRef.attach(componentPortal);\n  }\n}\n","import { Observable } from 'rxjs';\nimport { DropdownRef } from './dropdown-ref.class';\n\nexport class OpenedDropdown {\n  public readonly closed$: Observable<void> = this.dropdownRef.closed$;\n\n  constructor(public readonly id: string, private readonly dropdownRef: DropdownRef) {}\n\n  public close(): void {\n    this.dropdownRef.close();\n  }\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Directive, Inject } from '@angular/core';\nimport { VOID } from '@bimeister/utilities';\nimport { asapScheduler, BehaviorSubject, fromEvent, merge, Observable, of, scheduled } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DropdownRef } from '../dropdown-ref.class';\n\n@Directive()\nexport abstract class DropdownComponentBase<TData> implements AfterViewInit {\n  public readonly data: TData = this.dropdownRef.config.data;\n\n  private readonly animationStateSubject$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly animationState$: Observable<boolean> = this.animationStateSubject$.asObservable();\n\n  public static readonly animations: AnimationTriggerMetadata[] = [\n    trigger('show', [\n      state('false', style({ transform: 'translateY(10px)', opacity: 0 })),\n      state('true', style({ transform: 'translateY(0)', opacity: 1 })),\n      transition('false => true', [animate(`150ms ease-in`)]),\n      transition('true => false', [animate(`150ms ease-out`)]),\n    ]),\n  ];\n\n  constructor(\n    protected readonly dropdownRef: DropdownRef<TData>,\n    @Inject(DOCUMENT) private readonly document: Document\n  ) {\n    this.listenOutsideEventsForClose();\n  }\n\n  public ngAfterViewInit(): void {\n    scheduled(of(VOID), asapScheduler)\n      .pipe(take(1))\n      .subscribe(() => this.setAnimationState(true));\n\n    this.dropdownRef.closed$.pipe(take(1)).subscribe(() => this.setAnimationState(false));\n  }\n\n  private setAnimationState(animationState: boolean): void {\n    this.animationStateSubject$.next(animationState);\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.dropdownRef.close());\n  }\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { DropdownTemplateContext } from '../../../../declarations/interfaces/dropdown-template-context.interface';\nimport { DropdownComponentBase } from '../../../../declarations/classes/abstract/dropdown-component-base.abstract';\nimport { DropdownTemplateData } from '../../../../declarations/interfaces/dropdown-template-data.interface';\n\n@Component({\n  selector: 'pupa-dropdown-template',\n  templateUrl: './dropdown-template.component.html',\n  styleUrls: ['./dropdown-template.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: DropdownComponentBase.animations,\n})\nexport class DropdownTemplateComponent<TContext> extends DropdownComponentBase<DropdownTemplateData<TContext>> {\n  public readonly templateRef: TemplateRef<TContext> = this.data?.templateRef;\n  public readonly templateContext: DropdownTemplateContext = { $implicit: this.dropdownRef };\n}\n","<div class=\"dropdown-container\" [@show]=\"animationState$ | async\">\n  <ng-container [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"templateContext\"></ng-container>\n</div>\n","import {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayRef,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector } from '@angular/core';\nimport { getUuid, isNil, Uuid } from '@bimeister/utilities';\nimport { take } from 'rxjs/operators';\nimport { DROPDOWN_CONTAINER_DATA_TOKEN } from '../declarations/tokens/dropdown-container-data.token';\nimport { DropdownContainerComponent } from '../components/dropdown/components/dropdown-container/dropdown-container.component';\nimport { DropdownTemplateComponent } from '../components/dropdown/components/dropdown-template/dropdown-template.component';\nimport { DropdownComponentBase } from '../declarations/classes/abstract/dropdown-component-base.abstract';\nimport { DropdownRef } from '../declarations/classes/dropdown-ref.class';\nimport { OpenedDropdown } from '../declarations/classes/opened-dropdown.class';\nimport { DropdownConfig } from '../declarations/interfaces/dropdown-config.interface';\nimport { DropdownContainerData } from '../declarations/interfaces/dropdown-container-data.interface';\nimport { DropdownDataType } from '../declarations/types/utility-types/dropdown-data.utility-type';\nimport { OVERLAY_VIEWPORT_MARGIN_PX, Position, Theme } from '@bimeister/pupakit.common';\n\nconst HORIZONTAL_POSITIONS: HorizontalConnectionPos[] = ['center', 'end', 'start'];\nconst VERTICAL_POSITIONS: VerticalConnectionPos[] = ['top', 'bottom'];\n\n@Injectable({ providedIn: 'root' })\nexport class DropdownsService {\n  private readonly dropdownStore: Map<string, DropdownRef> = new Map();\n\n  constructor(protected readonly overlay: Overlay, protected readonly injector: Injector) {}\n\n  public open<TComponent extends DropdownComponentBase<unknown>>(\n    config: DropdownConfig<TComponent, DropdownDataType<TComponent>>\n  ): OpenedDropdown {\n    const dropdownId: Uuid = getUuid();\n    const overlayRef: OverlayRef = this.getOverlayRef(config);\n    const dropdownRef: DropdownRef<DropdownDataType<TComponent>> = new DropdownRef(overlayRef, config);\n    const containerPortal: ComponentPortal<DropdownContainerComponent> = this.getComponentPortal(config, dropdownRef);\n\n    dropdownRef.open(containerPortal);\n\n    this.dropdownStore.set(dropdownId, dropdownRef);\n\n    dropdownRef.closed$.pipe(take(1)).subscribe(() => {\n      this.dropdownStore.delete(dropdownId);\n      overlayRef.dispose();\n    });\n\n    return new OpenedDropdown(dropdownId, dropdownRef);\n  }\n\n  public closeById(id: string): void {\n    const dropdownRef: DropdownRef = this.dropdownStore.get(id);\n\n    if (isNil(dropdownRef)) {\n      return;\n    }\n\n    dropdownRef.close();\n  }\n\n  public closeAll(): void {\n    this.dropdownStore.forEach((dropdownRef: DropdownRef) => dropdownRef.close());\n  }\n\n  public isOpen(id: string): boolean {\n    return this.dropdownStore.has(id);\n  }\n\n  private getComponentPortal<TComponent extends DropdownComponentBase<unknown>>(\n    config: DropdownConfig<TComponent, DropdownDataType<TComponent>>,\n    dropdownRef: DropdownRef<DropdownDataType<TComponent>>\n  ): ComponentPortal<DropdownContainerComponent> {\n    const injector: Injector = Injector.create({\n      parent: config.injector ?? this.injector,\n      providers: [{ provide: DropdownRef, useValue: dropdownRef }],\n    });\n\n    const componentPortal: ComponentPortal<unknown> = new ComponentPortal<unknown>(\n      config.component ?? DropdownTemplateComponent,\n      null,\n      injector\n    );\n\n    const containerData: DropdownContainerData<unknown> = {\n      componentPortal,\n      theme: config.theme ?? Theme.Light,\n    };\n\n    return new ComponentPortal(\n      DropdownContainerComponent,\n      null,\n      Injector.create({\n        providers: [{ provide: DROPDOWN_CONTAINER_DATA_TOKEN, useValue: containerData }],\n      })\n    );\n  }\n\n  private getOverlayRef<TComponent extends DropdownComponentBase<unknown>>(\n    config: DropdownConfig<TComponent, DropdownDataType<TComponent>>\n  ): OverlayRef {\n    return this.overlay.create({\n      width: this.getOverlayWidth(config),\n      positionStrategy: this.getTargetPosition(config),\n    });\n  }\n\n  private getTargetPosition<TComponent extends DropdownComponentBase<unknown>>(\n    config: DropdownConfig<TComponent, DropdownDataType<TComponent>>\n  ): FlexibleConnectedPositionStrategy {\n    const target: HTMLElement | Position = config.target;\n\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(target instanceof HTMLElement ? target : { x: target[0], y: target[1] })\n      .withFlexibleDimensions(false)\n      .withPositions(this.getOverlayPositionsByHorizontalPosition(config.horizontalPosition))\n      .withViewportMargin(OVERLAY_VIEWPORT_MARGIN_PX);\n  }\n\n  private getOverlayWidth<TComponent extends DropdownComponentBase<unknown>>(\n    config: DropdownConfig<TComponent, DropdownDataType<TComponent>>\n  ): string | number {\n    const target: HTMLElement | Position = config.target;\n\n    if (target instanceof HTMLElement && config.widthType === 'by-trigger') {\n      const { width } = target.getBoundingClientRect();\n      return width;\n    }\n\n    return 'auto';\n  }\n\n  private getOverlayPositionsByHorizontalPosition(\n    currentHorizontalPos: HorizontalConnectionPos\n  ): ConnectionPositionPair[] {\n    const sortedHorizontalPositions: HorizontalConnectionPos[] = HORIZONTAL_POSITIONS.sort(\n      (horizontalPos: HorizontalConnectionPos) => (horizontalPos === currentHorizontalPos ? -1 : 1)\n    );\n\n    const overlayPositions: ConnectionPositionPair[] = VERTICAL_POSITIONS.flatMap(\n      (verticalPos: VerticalConnectionPos) =>\n        sortedHorizontalPositions.map((horizontalPos: HorizontalConnectionPos) =>\n          this.getConnectionPositionPair(horizontalPos, verticalPos)\n        )\n    );\n\n    return overlayPositions;\n  }\n\n  private getConnectionPositionPair(\n    overlayX: HorizontalConnectionPos,\n    overlayY: VerticalConnectionPos\n  ): ConnectionPositionPair {\n    return new ConnectionPositionPair({ originX: overlayX, originY: 'bottom' }, { overlayX, overlayY });\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n} from '@angular/core';\nimport { Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, fromEvent, merge, Observable, Subscription } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\nimport { OpenedDropdown } from '../../../declarations/classes/opened-dropdown.class';\nimport { DropdownDirectiveParams } from '../../../declarations/interfaces/dropdown-directive-params.interface';\nimport { DropdownHost } from '../../../declarations/interfaces/dropdown-host.interface';\nimport { DropdownTemplateComponent } from '../components/dropdown-template/dropdown-template.component';\nimport { subscribeInsideAngular, subscribeOutsideAngular, Theme, ThemeService } from '@bimeister/pupakit.common';\nimport { DropdownsService } from '../../../services/dropdowns.service';\nimport { ThemeWrapperService } from '../../theme-wrapper/services/theme-wrapper.service';\n\nconst CURSOR_POINTER: string = 'pointer';\n\n@Directive({\n  selector: '[pupaDropdown]',\n  exportAs: 'pupaDropdown',\n})\nexport class DropdownDirective implements AfterViewInit, OnDestroy, DropdownHost {\n  @Input() public pupaDropdownDisabled: boolean = false;\n  @Input() public pupaDropdownRealTriggerElement?: HTMLElement;\n\n  @HostBinding('style.cursor') public cursorStyle: string = CURSOR_POINTER;\n\n  public readonly opened$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private readonly theme$: Observable<Theme> = this.themeWrapperService?.theme$ ?? this.themeService.theme$;\n\n  private readonly subscription: Subscription = new Subscription();\n  private readonly isTriggerTouched$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private dropdown: Nullable<OpenedDropdown> = null;\n  private outsideTouchEventSubscription: Nullable<Subscription> = null;\n\n  private params: DropdownDirectiveParams | null = null;\n\n  constructor(\n    public readonly triggerRef: ElementRef<HTMLElement>,\n    private readonly dropdownsService: DropdownsService,\n    private readonly ngZone: NgZone,\n    private readonly themeService: ThemeService,\n    @Inject(DOCUMENT) private readonly document: Document,\n    @Optional() private readonly themeWrapperService?: ThemeWrapperService\n  ) {}\n\n  public ngAfterViewInit(): void {\n    this.subscription.add(this.handleTriggerClickEvents());\n    this.subscription.add(this.handleTriggerTouchEvents());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public setDropdownParams(params: DropdownDirectiveParams): void {\n    this.params = params;\n  }\n\n  public open(): void {\n    if (this.params === null) {\n      throw new Error('[DropdownDirective] dropdownParams has not set. You can set *pupaDropdownTemplate on element');\n    }\n\n    if (this.pupaDropdownDisabled) {\n      return;\n    }\n\n    this.theme$\n      .pipe(\n        take(1),\n        switchMap((theme: Theme) => {\n          this.dropdown = this.dropdownsService.open<DropdownTemplateComponent<unknown>>({\n            target: this.pupaDropdownRealTriggerElement ?? this.triggerRef.nativeElement,\n            widthType: this.params.widthType,\n            horizontalPosition: this.params.horizontalPosition,\n            theme,\n            data: {\n              templateRef: this.params.templateRef,\n            },\n          });\n\n          this.opened$.next(true);\n          this.isTriggerTouched$.next(false);\n          this.outsideTouchEventSubscription = this.handleOutsideTriggerTouchEvents();\n\n          return this.dropdown.closed$;\n        })\n      )\n      .subscribe(() => {\n        this.outsideTouchEventSubscription?.unsubscribe();\n        this.opened$.next(false);\n        this.dropdown = null;\n      });\n  }\n\n  public close(): void {\n    this.dropdown?.close();\n  }\n\n  public toggle(): void {\n    this.opened$\n      .pipe(take(1), subscribeInsideAngular(this.ngZone))\n      .subscribe((opened: boolean) => (opened ? this.close() : this.open()));\n  }\n\n  private handleTriggerClickEvents(): Subscription {\n    return fromEvent(this.triggerRef.nativeElement, 'click').subscribe(() => this.toggle());\n  }\n\n  private handleTriggerTouchEvents(): Subscription {\n    return merge(\n      fromEvent(this.triggerRef.nativeElement, 'touchstart'),\n      fromEvent(this.triggerRef.nativeElement, 'mousedown')\n    )\n      .pipe(subscribeOutsideAngular(this.ngZone))\n      .subscribe(() => {\n        this.isTriggerTouched$.next(true);\n      });\n  }\n\n  private handleOutsideTriggerTouchEvents(): Subscription {\n    return merge(fromEvent(this.document, 'mousedown'), fromEvent(this.document, 'touchstart'))\n      .pipe(\n        switchMap(() => this.isTriggerTouched$.pipe(take(1))),\n        subscribeOutsideAngular(this.ngZone)\n      )\n      .subscribe((isTriggerTouched: boolean) => (isTriggerTouched ? this.isTriggerTouched$.next(false) : this.close()));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ThemeWrapperComponent } from './components/theme-wrapper/theme-wrapper.component';\n\n@NgModule({\n  declarations: [ThemeWrapperComponent],\n  imports: [],\n  exports: [ThemeWrapperComponent],\n})\nexport class PupaThemeWrapperModule {}\n","import { HorizontalConnectionPos } from '@angular/cdk/overlay';\nimport { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { DropdownDirectiveParams } from '../../../declarations/interfaces/dropdown-directive-params.interface';\nimport { DropdownTemplateContext } from '../../../declarations/interfaces/dropdown-template-context.interface';\nimport { DropdownWidthType } from '../../../declarations/types/dropdown-width.type';\nimport { DropdownHost } from '../../../declarations/interfaces/dropdown-host.interface';\n\n@Directive({\n  selector: '[pupaDropdownTemplate]',\n})\nexport class DropdownTemplateDirective implements OnChanges {\n  @Input() public pupaDropdownTemplate?: DropdownHost;\n  @Input() public pupaDropdownTemplateWidthType: DropdownWidthType = 'auto';\n  @Input() public pupaDropdownTemplateHorizontalPosition: HorizontalConnectionPos = 'start';\n\n  private get dropdownDirectiveParams(): DropdownDirectiveParams {\n    return {\n      templateRef: this.templateRef,\n      widthType: this.pupaDropdownTemplateWidthType,\n      horizontalPosition: this.pupaDropdownTemplateHorizontalPosition,\n    };\n  }\n\n  constructor(private readonly templateRef: TemplateRef<DropdownTemplateContext>) {}\n\n  public ngOnChanges(): void {\n    this.pupaDropdownTemplate?.setDropdownParams(this.dropdownDirectiveParams);\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { DropdownDirective } from '../../components/dropdown/directives/dropdown.directive';\nimport { PupaThemeWrapperModule } from '../theme-wrapper/theme-wrapper.module';\nimport { DropdownContainerComponent } from './components/dropdown-container/dropdown-container.component';\nimport { DropdownTemplateComponent } from './components/dropdown-template/dropdown-template.component';\nimport { DropdownTemplateDirective } from './directives/dropdown-template.directive';\n\n@NgModule({\n  declarations: [DropdownContainerComponent, DropdownTemplateComponent, DropdownDirective, DropdownTemplateDirective],\n  imports: [CommonModule, OverlayModule, PortalModule, PupaThemeWrapperModule],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [DropdownDirective, DropdownTemplateDirective],\n})\nexport class PupaDropdownModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-bagel-spinner',\n  templateUrl: './bagel-spinner.component.html',\n  styleUrls: ['./bagel-spinner.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BagelSpinnerComponent {\n  @Input() public size: string = 'inherit';\n}\n","<div\n  class=\"bagel-spinner\"\n  [style.fontSize]=\"size\"\n  [style.height]=\"size === 'inherit' ? 'auto' : size\"\n  [style.width]=\"size === 'inherit' ? 'auto' : size\"\n>\n  <svg class=\"bagel-spinner__icon\" height=\"100%\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M9.20038 14.9967C12.5123 14.8864 15.1077 12.1123 14.9975 8.80039C14.8872 5.48852 12.113 2.89308 8.80117 3.00332C5.4893 3.11356 2.89386 5.88773 3.0041 9.1996\"\n      stroke=\"currentColor\"\n      stroke-width=\"4\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n    />\n  </svg>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'pupa-spinner',\n  templateUrl: './spinner.component.html',\n  styleUrls: ['./spinner.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent {\n  @Input() public size: string = 'inherit';\n}\n","<div\n  class=\"spinner\"\n  [style.fontSize]=\"size\"\n  [style.height]=\"size === 'inherit' ? 'auto' : size\"\n  [style.width]=\"size === 'inherit' ? 'auto' : size\"\n>\n  <svg class=\"spinner__icon\" focusable=\"false\" height=\"100%\" width=\"100%\" viewBox=\"0 0 30 30\">\n    <circle cx=\"15\" cy=\"15\" r=\"13.5\"></circle>\n  </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BagelSpinnerComponent } from './components/bagel-spinner/bagel-spinner.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\n\n@NgModule({\n  declarations: [SpinnerComponent, BagelSpinnerComponent],\n  imports: [CommonModule],\n  exports: [SpinnerComponent, BagelSpinnerComponent],\n})\nexport class PupaSpinnerModule {}\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { ButtonType } from '../../../../declarations/types/button-type.type';\nimport { filterTruthy, isNil, Nullable } from '@bimeister/utilities';\nimport { map, take } from 'rxjs/operators';\nimport { ButtonKind } from '../../../../declarations/types/button-kind.type';\nimport { ButtonSize } from '../../../../declarations/types/button-size.type';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\n\n@Component({\n  selector: 'pupa-button-icon',\n  templateUrl: './button-icon.component.html',\n  styleUrls: ['./button-icon.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonIconComponent implements OnChanges {\n  @Input() public readonly size: ButtonSize = 'l';\n  public readonly size$: BehaviorSubject<ButtonSize> = new BehaviorSubject<ButtonSize>('l');\n\n  @Input() public readonly kind: ButtonKind = 'primary';\n  public readonly kind$: BehaviorSubject<ButtonKind> = new BehaviorSubject<ButtonKind>('primary');\n\n  @Input() public readonly type: ButtonType = 'button';\n  public readonly type$: BehaviorSubject<ButtonType> = new BehaviorSubject<ButtonType>('button');\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  @Input() public readonly loading: boolean = false;\n  public readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly active: boolean = false;\n  public readonly active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly tabIndex: string = '0';\n\n  public readonly loadingSizePx$: Observable<string> = this.size$.pipe(\n    map((size: ButtonSize) => (size === 's' ? '12px' : '16px'))\n  );\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.size$,\n    this.kind$,\n    this.disabled$.pipe(map((isDisabled: boolean) => (isDisabled ? 'disabled' : null))),\n    this.active$.pipe(map((isActive: boolean) => (isActive ? 'active' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `button_${innerProperty}`)\n    )\n  );\n\n  @HostListener('pointerup', ['$event'])\n  public handleTap(event: Event): void {\n    this.disabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSizeChange(changes?.size);\n    this.processTypeChange(changes?.type);\n    this.processKindChange(changes?.kind);\n    this.processDisabledChange(changes?.disabled);\n    this.processIconChange(changes?.icon);\n    this.processLoadingChange(changes?.loading);\n    this.processActiveChange(changes?.active);\n  }\n\n  private processSizeChange(change: ComponentChange<this, ButtonSize>): void {\n    const updatedValue: ButtonSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processTypeChange(change: ComponentChange<this, ButtonType>): void {\n    const updatedValue: ButtonType | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.type$.next(updatedValue);\n  }\n\n  private processKindChange(change: ComponentChange<this, ButtonKind>): void {\n    const updatedValue: ButtonKind | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.kind$.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  private processLoadingChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.loading$.next(updatedValue);\n  }\n\n  private processActiveChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.active$.next(updatedValue);\n  }\n}\n","<button\n  class=\"button icon-button\"\n  [ngClass]=\"resultClassList$ | async\"\n  [type]=\"type\"\n  [tabIndex]=\"tabIndex\"\n  [disabled]=\"(disabled$ | async) ? true : null\"\n>\n  <div class=\"button__content\" focusable=\"false\">\n    <pupa-icon\n      class=\"button__icon\"\n      [name]=\"icon$ | async\"\n      *ngIf=\"icon$ | async\"\n      [class.hidden]=\"loading$ | async\"\n    ></pupa-icon>\n  </div>\n\n  <div class=\"button__loading\" *ngIf=\"loading$ | async\" focusable=\"false\">\n    <pupa-spinner [size]=\"loadingSizePx$ | async\"></pupa-spinner>\n  </div>\n</button>\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { ButtonType } from '../../../../declarations/types/button-type.type';\nimport { filterTruthy, isNil, Nullable } from '@bimeister/utilities';\nimport { ButtonIconPosition } from '../../../../declarations/types/button-icon-position.type';\nimport { map, take } from 'rxjs/operators';\nimport { ButtonKind } from '../../../../declarations/types/button-kind.type';\nimport { ButtonSize } from '../../../../declarations/types/button-size.type';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\n\n@Component({\n  selector: 'pupa-button',\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnChanges {\n  @Input() public readonly size: ButtonSize = 'l';\n  public readonly size$: BehaviorSubject<ButtonSize> = new BehaviorSubject<ButtonSize>('l');\n\n  @Input() public readonly kind: ButtonKind = 'primary';\n  public readonly kind$: BehaviorSubject<ButtonKind> = new BehaviorSubject<ButtonKind>('primary');\n\n  @Input() public readonly type: ButtonType = 'button';\n  public readonly type$: BehaviorSubject<ButtonType> = new BehaviorSubject<ButtonType>('button');\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  @Input() public readonly iconPosition: ButtonIconPosition = 'left';\n  public readonly iconPosition$: BehaviorSubject<ButtonIconPosition> = new BehaviorSubject<ButtonIconPosition>('left');\n  public readonly isReversedDirection$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly loading: boolean = false;\n  public readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly active: boolean = false;\n  public readonly active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly tabIndex: string = '0';\n\n  protected commonButtonClasses: Observable<string>[] = [\n    this.size$,\n    this.kind$,\n    this.disabled$.pipe(map((isDisabled: boolean) => (isDisabled ? 'disabled' : null))),\n  ];\n\n  public readonly loadingSizePx$: Observable<string> = this.size$.pipe(\n    map((size: ButtonSize) => (size === 's' ? '12px' : '16px'))\n  );\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    ...this.commonButtonClasses,\n    this.active$.pipe(map((isActive: boolean) => (isActive ? 'active' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `button_${innerProperty}`)\n    )\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSizeChange(changes?.size);\n    this.processTypeChange(changes?.type);\n    this.processKindChange(changes?.kind);\n    this.processDisabledChange(changes?.disabled);\n    this.processIconChange(changes?.icon);\n    this.processIconPositionChange(changes?.iconPosition);\n    this.processLoadingChange(changes?.loading);\n    this.processActiveChange(changes?.active);\n  }\n\n  @HostListener('pointerup', ['$event'])\n  public handleTap(event: Event): void {\n    this.disabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\n  }\n\n  private processSizeChange(change: ComponentChange<this, ButtonSize>): void {\n    const updatedValue: ButtonSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.size$.next(updatedValue);\n  }\n\n  private processTypeChange(change: ComponentChange<this, ButtonType>): void {\n    const updatedValue: ButtonType | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.type$.next(updatedValue);\n  }\n\n  private processKindChange(change: ComponentChange<this, ButtonKind>): void {\n    const updatedValue: ButtonKind | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.kind$.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  private processIconPositionChange(change: ComponentChange<this, ButtonIconPosition>): void {\n    const updatedValue: ButtonIconPosition | undefined = change?.currentValue;\n\n    if (typeof updatedValue === 'undefined') {\n      return;\n    }\n\n    this.isReversedDirection$.next(updatedValue === 'right');\n  }\n\n  private processLoadingChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.loading$.next(updatedValue);\n  }\n\n  private processActiveChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.active$.next(updatedValue);\n  }\n}\n","<button\n  class=\"button\"\n  [ngClass]=\"resultClassList$ | async\"\n  [type]=\"type\"\n  [tabIndex]=\"tabIndex\"\n  [attr.disabled]=\"(disabled$ | async) ? true : null\"\n>\n  <div class=\"button__content\" focusable=\"false\" [class.reversed-direction]=\"isReversedDirection$ | async\">\n    <ng-container *ngIf=\"(icon$ | async) && (iconPosition$ | async)\">\n      <pupa-icon class=\"button__icon\" [name]=\"icon$ | async\"></pupa-icon>\n    </ng-container>\n\n    <div class=\"button__content-inner\" [class.hidden]=\"loading$ | async\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n\n  <div class=\"button__loading\" *ngIf=\"loading$ | async\" focusable=\"false\">\n    <pupa-spinner [size]=\"loadingSizePx$ | async\"></pupa-spinner>\n  </div>\n</button>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { filterTruthy, isNil } from '@bimeister/utilities';\nimport { ButtonComponent } from '../button/button.component';\nimport { ButtonMultiKind } from '../../../../declarations/types/button-multi-kind.type';\nimport { ComponentChanges } from '@bimeister/pupakit.common';\nimport { DropdownDirective } from '../../../dropdown/directives/dropdown.directive';\nimport { DropdownHost } from '../../../../declarations/interfaces/dropdown-host.interface';\nimport { DropdownDirectiveParams } from '../../../../declarations/interfaces/dropdown-directive-params.interface';\n\n@Component({\n  selector: 'pupa-button-multi',\n  templateUrl: './button-multi.component.html',\n  styleUrls: ['./button-multi.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonMultiComponent extends ButtonComponent implements OnChanges, AfterViewInit, DropdownHost {\n  @Input() public readonly kind: ButtonMultiKind = 'primary';\n\n  @ViewChild(DropdownDirective, { static: true }) private readonly dropdown: DropdownDirective;\n\n  private readonly isComponentViewReady$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isMenuOpened$: Observable<boolean> = this.isComponentViewReady$.pipe(\n    startWith(false),\n    filterTruthy(),\n    switchMap(() => this.dropdown.opened$)\n  );\n\n  public readonly resultClassListExpand$: Observable<string[]> = combineLatest([...this.commonButtonClasses]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `button_${innerProperty}`)\n    )\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    super.ngOnChanges(changes);\n  }\n\n  public ngAfterViewInit(): void {\n    this.isComponentViewReady$.next(true);\n  }\n\n  public setDropdownParams(params: DropdownDirectiveParams): void {\n    this.dropdown.setDropdownParams(params);\n  }\n}\n","<div class=\"button-multi\" type=\"submit\" #mainContainer>\n  <button\n    [disabled]=\"(disabled$ | async) ? true : null\"\n    [ngClass]=\"resultClassList$ | async\"\n    [tabIndex]=\"tabIndex\"\n    class=\"button\"\n  >\n    <div [class.reversed-direction]=\"isReversedDirection$ | async\" class=\"button__content\" focusable=\"false\">\n      <ng-container *ngIf=\"(icon$ | async) && (iconPosition$ | async)\">\n        <pupa-icon [class.hidden]=\"loading$ | async\" [name]=\"icon$ | async\" class=\"button__icon\"></pupa-icon>\n      </ng-container>\n\n      <div [class.hidden]=\"loading$ | async\" class=\"button__content-inner\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n    <div *ngIf=\"loading$ | async\" class=\"button__loading\" focusable=\"false\">\n      <pupa-spinner [size]=\"'16px'\"></pupa-spinner>\n    </div>\n  </button>\n  <button\n    (click)=\"$event.stopPropagation()\"\n    [disabled]=\"(disabled$ | async) ? true : null\"\n    [ngClass]=\"resultClassListExpand$ | async\"\n    [class.button_active]=\"isMenuOpened$ | async\"\n    [tabIndex]=\"tabIndex\"\n    pupaDropdown\n    [pupaDropdownDisabled]=\"disabled$ | async\"\n    [pupaDropdownRealTriggerElement]=\"mainContainer\"\n    class=\"button-multi_menu-button button\"\n  >\n    <pupa-icon [name]=\"'ios-arrow-down'\" class=\"button__icon\" focusable=\"false\"></pupa-icon>\n  </button>\n</div>\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { filterTruthy, isNil, Nullable } from '@bimeister/utilities';\nimport { map, take } from 'rxjs/operators';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { ButtonType } from '../../../../declarations/types/button-type.type';\n\n@Component({\n  selector: 'pupa-button-round',\n  templateUrl: './button-round.component.html',\n  styleUrls: ['./button-round.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonRoundComponent implements OnChanges {\n  @Input() public readonly type: ButtonType = 'button';\n  public readonly type$: BehaviorSubject<ButtonType> = new BehaviorSubject<ButtonType>('button');\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  @Input() public readonly loading: boolean = false;\n  public readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly active: boolean = false;\n  public readonly active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  @Input() public readonly tabIndex: string = '0';\n\n  public readonly resultClassList$: Observable<string[]> = combineLatest([\n    this.disabled$.pipe(map((isDisabled: boolean) => (isDisabled ? 'disabled' : null))),\n    this.active$.pipe(map((isActive: boolean) => (isActive ? 'active' : null))),\n  ]).pipe(\n    map((classes: string[]) =>\n      classes\n        .filter((innerClass: string) => !isNil(innerClass))\n        .map((innerProperty: string) => `button_${innerProperty}`)\n    )\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processTypeChange(changes?.type);\n    this.processDisabledChange(changes?.disabled);\n    this.processIconChange(changes?.icon);\n    this.processLoadingChange(changes?.loading);\n    this.processActiveChange(changes?.active);\n  }\n\n  @HostListener('pointerup', ['$event'])\n  public handleTap(event: Event): void {\n    this.disabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\n  }\n\n  private processTypeChange(change: ComponentChange<this, ButtonType>): void {\n    const updatedValue: ButtonType | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.type$.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  private processLoadingChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.loading$.next(updatedValue);\n  }\n\n  private processActiveChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.active$.next(updatedValue);\n  }\n}\n","<button\n  [disabled]=\"(disabled$ | async) ? true : null\"\n  [ngClass]=\"resultClassList$ | async\"\n  [tabIndex]=\"tabIndex\"\n  [type]=\"type\"\n  class=\"button button_primary\"\n>\n  <div class=\"button__content\" focusable=\"false\">\n    <pupa-icon\n      *ngIf=\"icon$ | async\"\n      [class.hidden]=\"loading$ | async\"\n      [name]=\"icon$ | async\"\n      class=\"button__icon\"\n    ></pupa-icon>\n  </div>\n\n  <div *ngIf=\"loading$ | async\" class=\"button__loading\" focusable=\"false\">\n    <pupa-spinner [size]=\"'24px'\"></pupa-spinner>\n  </div>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaDropdownModule } from '../dropdown/dropdown.module';\nimport { PupaSpinnerModule } from '../spinner/spinner.module';\nimport { ButtonIconComponent } from './components/button-icon/button-icon.component';\nimport { ButtonMultiComponent } from './components/button-multi/button-multi.component';\nimport { ButtonRoundComponent } from './components/button-round/button-round.component';\nimport { ButtonComponent } from './components/button/button.component';\n\nconst COMPONENTS: Type<unknown>[] = [ButtonComponent, ButtonIconComponent, ButtonRoundComponent, ButtonMultiComponent];\n\nconst DECLARATIONS: Type<unknown>[] = [...COMPONENTS];\nconst EXPORTS: Type<unknown>[] = [...DECLARATIONS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [CommonModule, PupaSpinnerModule, PupaIconsModule.forFeature(), PupaDropdownModule],\n  exports: [...EXPORTS],\n})\nexport class PupaButtonsModule {}\n","import { Injectable } from '@angular/core';\nimport { DropdownRef } from '../../../declarations/classes/dropdown-ref.class';\n\n@Injectable()\nexport class DropdownMenuContextService {\n  private currentDropdownRef: DropdownRef | null = null;\n\n  public setDropdownRef(dropdownRef: DropdownRef | null): void {\n    this.currentDropdownRef = dropdownRef;\n  }\n\n  public closeDropdown(): void {\n    this.currentDropdownRef?.close();\n  }\n}\n","import { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Directive({\n  selector: '[pupaOptionActionsRight]',\n})\nexport class OptionActionsRightDirective implements OnChanges {\n  @Input() public pupaOptionActionsRight: boolean;\n\n  public readonly isDisplayed$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  constructor(public readonly templateRef: TemplateRef<unknown>) {}\n\n  public ngOnChanges(): void {\n    this.isDisplayed$.next(this.pupaOptionActionsRight);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { CheckboxLabelSize } from '../../../declarations/types/checkbox-label-size.type';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'any' })\nexport class CheckboxService {\n  private readonly disabledState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly disabled$: Observable<boolean> = this.disabledState$.asObservable();\n\n  private readonly hoveredState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly hovered$: Observable<boolean> = this.hoveredState$.asObservable();\n\n  private readonly valueState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly value$: Observable<boolean> = this.valueState$.asObservable();\n\n  private readonly indeterminateState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly indeterminate$: Observable<boolean> = this.indeterminateState$.asObservable();\n\n  private readonly withLabelState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n  public readonly withLabel$: Observable<boolean> = this.withLabelState$.asObservable();\n\n  private readonly errorState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly error$: Observable<boolean> = this.errorState$.asObservable();\n\n  private readonly sizeState$: BehaviorSubject<CheckboxLabelSize> = new BehaviorSubject<CheckboxLabelSize>('medium');\n  public readonly size$: Observable<CheckboxLabelSize> = this.sizeState$.asObservable();\n\n  public setDisabled(value: boolean): void {\n    this.disabledState$.next(value);\n  }\n\n  public setValue(value: boolean): void {\n    this.valueState$.next(value);\n  }\n\n  public setIndeterminate(value: boolean): void {\n    this.indeterminateState$.next(value);\n  }\n\n  public setWithLabel(value: boolean): void {\n    this.withLabelState$.next(value);\n  }\n\n  public setError(value: boolean): void {\n    this.errorState$.next(value);\n  }\n\n  public setSize(value: CheckboxLabelSize): void {\n    this.sizeState$.next(value);\n  }\n\n  public setHovered(value: boolean): void {\n    this.hoveredState$.next(value);\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filterFalsy, filterTruthy, isEmpty, isNil, Nullable } from '@bimeister/utilities';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { map, switchMapTo, take } from 'rxjs/operators';\nimport { CheckboxService } from '../../services/checkbox.service';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { CheckboxLabelSize } from '../../../../declarations/types/checkbox-label-size.type';\n\n@Component({\n  selector: 'pupa-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.scss'],\n  providers: [\n    CheckboxService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxComponent),\n      multi: true,\n    },\n  ],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n  @ViewChild('contentLabelWrapper') private readonly contentLabelWrapper: ElementRef<HTMLDivElement>;\n\n  @Input() public disabled: boolean;\n  @Input() public hovered: boolean;\n  @Input() public indeterminate: boolean;\n  @Input() public value: boolean;\n  @Input() public error: boolean;\n  @Input() public size: CheckboxLabelSize = 'medium';\n\n  @Output() public readonly valueChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  public readonly disabled$: Observable<boolean> = this.checkboxService.disabled$;\n  public readonly hovered$: Observable<boolean> = this.checkboxService.hovered$;\n  public readonly value$: Observable<boolean> = this.checkboxService.value$;\n  public readonly indeterminate$: Observable<boolean> = this.checkboxService.indeterminate$;\n  public readonly error$: Observable<boolean> = this.checkboxService.error$;\n  public readonly withLabel$: Observable<boolean> = this.checkboxService.withLabel$;\n  public readonly size$: Observable<CheckboxLabelSize> = this.checkboxService.size$;\n\n  public readonly checkboxTabindex$: Observable<number> = this.withLabel$.pipe(\n    map((withLabel: boolean) => (withLabel ? 1 : -1))\n  );\n  public readonly checkboxMarkerTabindex$: Observable<number> = this.withLabel$.pipe(\n    map((withLabel: boolean) => (withLabel ? -1 : 1))\n  );\n  public readonly checkBoxDataMeta$: Observable<string> = combineLatest([this.indeterminate$, this.value$]).pipe(\n    map(([isIndeterminate, isHasValue]: [boolean, boolean]) => {\n      if (isIndeterminate) {\n        return 'indeterminate';\n      }\n\n      return isHasValue ? 'checked' : 'default';\n    })\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(\n    private readonly checkboxService: CheckboxService,\n    private readonly changeDetectorRef: ChangeDetectorRef\n  ) {\n    this.subscription.add(this.processSetIndeterminate());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.handleIndeterminateChanges(changes?.indeterminate);\n    this.handleDisabledChanges(changes?.disabled);\n    this.handleValueChanges(changes?.value);\n    this.handleErrorChanges(changes?.error);\n    this.handleSizeChanges(changes?.size);\n    this.handleHoveredChanges(changes?.hovered);\n  }\n\n  public ngAfterViewInit(): void {\n    this.handleLabelUpdate();\n  }\n\n  public changeValue(): void {\n    this.disabled$\n      .pipe(\n        take(1),\n        filterFalsy(),\n        switchMapTo(this.value$),\n        take(1),\n        map((value: boolean) => !value)\n      )\n      .subscribe((value: boolean) => {\n        this.valueChanged.emit(value);\n        this.checkboxService.setValue(value);\n        this.checkboxService.setIndeterminate(false);\n        this.onTouched();\n        this.onChange(value);\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.checkboxService.setValue(value);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.checkboxService.setDisabled(isDisabled);\n  }\n\n  public onChange: CallableFunction = (_innerValue: string) => {\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.checkboxService.setValue(updatedValue);\n  }\n\n  private handleErrorChanges(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.checkboxService.setError(updatedValue);\n  }\n\n  private handleIndeterminateChanges(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.checkboxService.setIndeterminate(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.checkboxService.setDisabled(updatedValue);\n  }\n\n  private handleHoveredChanges(change: ComponentChange<this, boolean>): void {\n    const updatedValue: Nullable<boolean> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.checkboxService.setHovered(updatedValue);\n  }\n\n  private handleSizeChanges(change: ComponentChange<this, CheckboxLabelSize>): void {\n    const updatedValue: Nullable<CheckboxLabelSize> = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.checkboxService.setSize(updatedValue);\n  }\n\n  private processSetIndeterminate(): Subscription {\n    return this.indeterminate$.pipe(filterTruthy()).subscribe(() => this.checkboxService.setValue(null));\n  }\n\n  private handleLabelUpdate(): void {\n    const hasLabel: boolean = !isEmpty(this.contentLabelWrapper?.nativeElement?.childNodes);\n    this.checkboxService.setWithLabel(hasLabel);\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<ng-container\n  [ngTemplateOutlet]=\"template\"\n  [ngTemplateOutletContext]=\"{\n    disabled: disabled$ | async,\n    hovered: hovered$ | async,\n    withLabel: withLabel$ | async,\n    value: value$ | async,\n    indeterminate: indeterminate$ | async,\n    error: error$ | async,\n    size: size$ | async,\n    checkboxTabindex: checkboxTabindex$ | async,\n    checkboxMarkerTabindex: checkboxMarkerTabindex$ | async,\n    checkBoxDataMeta: checkBoxDataMeta$ | async\n  }\"\n>\n</ng-container>\n\n<ng-template\n  #template\n  let-disabled=\"disabled\"\n  let-withLabel=\"withLabel\"\n  let-value=\"value\"\n  let-indeterminate=\"indeterminate\"\n  let-error=\"error\"\n  let-size=\"size\"\n  let-checkboxTabindex=\"checkboxTabindex\"\n  let-checkboxMarkerTabindex=\"checkboxMarkerTabindex\"\n  let-checkBoxDataMeta=\"checkBoxDataMeta\"\n>\n  <div\n    class=\"checkbox\"\n    [attr.data-meta]=\"checkBoxDataMeta\"\n    (click)=\"changeValue()\"\n    [class.checkbox_disabled]=\"disabled\"\n    [class.checkbox_without-label]=\"!withLabel\"\n    [tabindex]=\"checkboxTabindex\"\n    (keydown.enter)=\"changeValue()\"\n  >\n    <div\n      class=\"checkbox__marker\"\n      [class.checkbox__marker_checked]=\"value || indeterminate\"\n      [class.checkbox__marker_disabled]=\"disabled\"\n      [class.checkbox__marker_error]=\"error\"\n      [class.checkbox__marker_hovered]=\"hovered\"\n      [tabindex]=\"checkboxMarkerTabindex\"\n    >\n      <pupa-icon\n        class=\"checkbox__marker-icon\"\n        *ngIf=\"!indeterminate && value\"\n        name=\"app-exceptions-check-10\"\n      ></pupa-icon>\n      <pupa-icon class=\"checkbox__marker-icon\" *ngIf=\"indeterminate\" name=\"app-checkbox-minus\"></pupa-icon>\n    </div>\n\n    <div\n      #contentLabelWrapper\n      class=\"checkbox__label\"\n      [class.checkbox__label_disabled]=\"disabled\"\n      [class.checkbox__label_hidden]=\"!(withLabel$ | async)\"\n    >\n      <ng-content></ng-content>\n    </div>\n  </div>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { OptionActionsRightDirective } from '../../directives/option-actions-right.directive';\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { isNil } from '@bimeister/utilities';\nimport { ComponentChanges, ComponentChange, isTabletDevice } from '@bimeister/pupakit.common';\n\n@Component({\n  selector: 'pupa-option, a[pupaOptionLink]',\n  templateUrl: './option.component.html',\n  styleUrls: ['./option.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OptionComponent implements OnChanges, AfterViewInit, OnDestroy {\n  @ContentChild(OptionActionsRightDirective) public readonly optionActionsRightDirective: OptionActionsRightDirective;\n  @ViewChild('content') private readonly content: ElementRef<HTMLDivElement>;\n\n  @Input() public disabled: boolean = false;\n  @Input() public active: boolean = false;\n  @Input() public hasCheckbox: boolean = false;\n  @Input() public forceResetHover: boolean = true;\n\n  public readonly hovered$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private readonly subscription: Subscription = new Subscription();\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    if (this.hasCheckbox) {\n      this.processForceResetHoverChange(changes?.forceResetHover);\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.subscription.add(this.subscribeToContentMouseEnter());\n    this.subscription.add(this.subscribeToContentMouseLeave());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processForceResetHoverChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    if (!updatedValue) {\n      return this.hovered$.next(false);\n    }\n  }\n\n  private subscribeToContentMouseEnter(): Subscription {\n    return fromEvent(this.content.nativeElement, 'mouseenter')\n      .pipe(filter(() => !this.disabled && !Boolean(isTabletDevice())))\n      .subscribe(() => {\n        this.hovered$.next(true);\n      });\n  }\n\n  private subscribeToContentMouseLeave(): Subscription {\n    return fromEvent(this.content.nativeElement, 'mouseleave')\n      .pipe(filter(() => !this.disabled && !Boolean(isTabletDevice())))\n      .subscribe(() => {\n        this.hovered$.next(false);\n      });\n  }\n}\n","<div class=\"option\" [class.option--selected]=\"active\" [class.option--disabled]=\"disabled\" tabindex=\"0\">\n  <div #content class=\"option__content\">\n    <div *ngIf=\"hasCheckbox\">\n      <pupa-checkbox\n        class=\"option__checkbox\"\n        tabindex=\"-1\"\n        [value]=\"active\"\n        [disabled]=\"disabled\"\n        [hovered]=\"hovered$ | async\"\n      >\n      </pupa-checkbox>\n    </div>\n    <div class=\"option__content-container\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n  <div class=\"option__actions\" (click)=\"$event.stopPropagation()\">\n    <ng-container [ngTemplateOutlet]=\"optionActionsRightDirective?.templateRef\"></ng-container>\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DropdownMenuContextService } from '../../services/dropdown-menu-context.service';\n\n@Component({\n  selector: 'pupa-dropdown-menu-item',\n  templateUrl: './dropdown-menu-item.component.html',\n  styleUrls: ['./dropdown-menu-item.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownMenuItemComponent {\n  @Input() public active: boolean = false;\n  @Input() public disabled: boolean = false;\n  @Input() public autoClose: boolean = true;\n\n  @Output() public readonly select: EventEmitter<void> = new EventEmitter<void>();\n\n  public readonly isOpened$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  constructor(private readonly contextService: DropdownMenuContextService) {}\n\n  @HostListener('click')\n  public clicked(): void {\n    if (this.disabled) {\n      return;\n    }\n    this.selectAndClose();\n  }\n\n  @HostListener('keydown', ['$event'])\n  public keydown(event: KeyboardEvent): void {\n    if (this.disabled || event.key !== 'Enter') {\n      return;\n    }\n    this.selectAndClose();\n  }\n\n  private selectAndClose(): void {\n    this.select.emit();\n    if (this.autoClose) {\n      this.contextService.closeDropdown();\n    }\n  }\n}\n","<pupa-option [disabled]=\"disabled\" [active]=\"active\" [forceResetHover]=\"true\">\n  <ng-content></ng-content>\n</pupa-option>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-dropdown-menu-separator',\n  templateUrl: './dropdown-menu-separator.component.html',\n  styleUrls: ['./dropdown-menu-separator.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownMenuSeparatorComponent {}\n","<div class=\"dropdown-separator\">\n  <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { appCheckboxMinusIcon, appExceptionsCheck10Icon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\n\n@NgModule({\n  declarations: [CheckboxComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PupaIconsModule.forFeature([appExceptionsCheck10Icon, appCheckboxMinusIcon]),\n  ],\n  exports: [CheckboxComponent],\n})\nexport class PupaCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-option-description',\n  templateUrl: './option-description.component.html',\n  styleUrls: ['./option-description.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OptionDescriptionComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-option-icon',\n  templateUrl: './option-icon.component.html',\n  styleUrls: ['./option-icon.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OptionIconComponent {\n  @Input() public name: string;\n  @Input() public src: string;\n}\n","<pupa-icon [name]=\"name\"></pupa-icon>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-option-title',\n  templateUrl: './option-title.component.html',\n  styleUrls: ['./option-title.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OptionTitleComponent {}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaCheckboxModule } from '../checkbox/checkbox.module';\nimport { OptionDescriptionComponent } from './components/option-description/option-description.component';\nimport { OptionIconComponent } from './components/option-icon/option-icon.component';\nimport { OptionTitleComponent } from './components/option-title/option-title.component';\nimport { OptionComponent } from './components/option/option.component';\nimport { OptionActionsRightDirective } from './directives/option-actions-right.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  OptionComponent,\n  OptionTitleComponent,\n  OptionDescriptionComponent,\n  OptionIconComponent,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [OptionActionsRightDirective];\n\n@NgModule({\n  declarations: [...COMPONENTS, ...DIRECTIVES],\n  exports: [...COMPONENTS, ...DIRECTIVES],\n  imports: [CommonModule, PupaCheckboxModule, PupaIconsModule],\n})\nexport class PupaOptionModule {}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[pupaScrollableContent]',\n})\nexport class ScrollableContentDirective {\n  constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly renderer: Renderer2) {\n    this.renderer.addClass(this.elementRef.nativeElement, 'invisible-scrollbars');\n  }\n}\n","import { distinctUntilSerializedChanged, isEqual, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { ScrollBarSizes } from '../interfaces/scroll-bar-sizes.interface';\n\nexport class Scrollbar {\n  private lastSizes: Nullable<ScrollBarSizes> = null;\n\n  private readonly sizePx$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n  private readonly contentSizePx$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n  private readonly contentScrollSizePx$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n  private readonly contentScrollOffsetPx$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n  public readonly thumbSizePx$: Observable<number> = combineLatest([\n    this.contentSizePx$,\n    this.sizePx$,\n    this.contentScrollSizePx$,\n  ]).pipe(\n    distinctUntilSerializedChanged(),\n    map(([contentSizePx, sizePx, contentScrollSizePx]: [number, number, number]) => {\n      const realThumbSizePx: number = (contentSizePx * sizePx) / contentScrollSizePx;\n      return realThumbSizePx < Scrollbar.maxSizePx ? Scrollbar.maxSizePx : realThumbSizePx;\n    }),\n    shareReplayWithRefCount()\n  );\n\n  public readonly thumbOffsetPx$: Observable<number> = combineLatest([\n    this.contentScrollOffsetPx$,\n    this.contentScrollSizePx$,\n    this.contentSizePx$,\n    this.sizePx$,\n    this.thumbSizePx$,\n  ]).pipe(\n    distinctUntilSerializedChanged(),\n    map(\n      ([contentScrollOffsetPx, contentScrollSizePx, contentSizePx, sizePx, thumbSizePx]: [\n        number,\n        number,\n        number,\n        number,\n        number\n      ]) => {\n        const maxContentScrollOffsetPx: number = contentScrollSizePx - contentSizePx;\n        const contentScrollOffsetPercentage: number = (contentScrollOffsetPx / maxContentScrollOffsetPx) * 100;\n\n        const thumbMaxOffsetPx: number = sizePx - thumbSizePx;\n        return (contentScrollOffsetPercentage / 100) * thumbMaxOffsetPx;\n      }\n    ),\n    shareReplayWithRefCount()\n  );\n\n  private static readonly maxSizePx: number = 32;\n\n  public setSizes(sizes: ScrollBarSizes): void {\n    if (isEqual(this.lastSizes, sizes)) {\n      return;\n    }\n    this.lastSizes = sizes;\n    this.sizePx$.next(sizes.scrollbarSizePx);\n    this.contentSizePx$.next(sizes.contentSizePx);\n    this.contentScrollSizePx$.next(sizes.contentScrollSizePx);\n  }\n\n  public setContentScrollOffset(contentScrollOffsetPx: number): void {\n    this.contentScrollOffsetPx$.next(contentScrollOffsetPx);\n  }\n\n  public getContentScrollOffsetByScrollbarThumbDeltaOffset(deltaPx: number): Observable<number> {\n    return combineLatest([this.sizePx$, this.thumbSizePx$, this.contentScrollSizePx$, this.contentSizePx$]).pipe(\n      take(1),\n      map(([sizePx, thumbSizePx, contentScrollSizePx, contentSizePx]: [number, number, number, number]) => {\n        const thumbMaxOffsetPx: number = sizePx - thumbSizePx;\n        const deltaPercentage: number = (deltaPx / thumbMaxOffsetPx) * 100;\n        const maxContentScrollOffsetPx: number = contentScrollSizePx - contentSizePx;\n        return (deltaPercentage / 100) * maxContentScrollOffsetPx;\n      })\n    );\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  RendererStyleFlags2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, forkJoin, fromEvent, merge, NEVER, Observable, of, Subscription } from 'rxjs';\nimport {\n  debounceTime,\n  delay,\n  distinctUntilChanged,\n  filter,\n  map,\n  pairwise,\n  startWith,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throttleTime,\n  withLatestFrom,\n} from 'rxjs/operators';\nimport { ScrollableContentDirective } from '../../directives/scrollable-content.directive';\nimport {\n  ComponentChanges,\n  ComponentChange,\n  subscribeOutsideAngular,\n  subscribeInsideAngular,\n  fromHammerEvent,\n  getAnimationFrameLoop,\n} from '@bimeister/pupakit.common';\nimport { ScrollbarType } from '../../../../declarations/types/scrollbar-type.type';\nimport { ScrollbarSize } from '../../../../declarations/types/scrollbar-size.type';\nimport { ScrollbarPosition } from '../../../../declarations/types/scrollbar-position.type';\nimport { ScrollDragMode } from '../../../../declarations/types/scroll-drag-mode.type';\nimport { ScrollVisibilityMode } from '../../../../declarations/types/scroll-visibility-mode.type';\nimport { ScrollDirection } from '../../../../declarations/types/scroll-direction.type';\nimport { Scrollbar } from '../../../../declarations/classes/scrollbar.class';\n\nconst ANIMATION_FRAME_THROTTLE_TIME_MS: number = 1000 / 15;\nconst SCROLL_EVENT_DEBOUNCE_TIME_MS: number = 100;\nconst SCROLL_THUMB_VISIBILITY_DEBOUNCE_TIME_MS: number = 200;\n\nconst VERTICAL_SCROLLBAR_VISIBILITY_CLASS: string = 'pupa-scrollbar_vertical_visible';\nconst VERTICAL_SCROLLBAR_WITH_HORIZONTAL_CLASS: string = 'pupa-scrollbar_vertical_with-horizontal';\nconst HORIZONTAL_SCROLLBAR_VISIBILITY_CLASS: string = 'pupa-scrollbar_horizontal_visible';\nconst HORIZONTAL_SCROLLBAR_WITH_VERTICAL_CLASS: string = 'pupa-scrollbar_horizontal_with-vertical';\n\nconst HORIZONTAL_AUTO_SCROLL_SENSITIVITY_WIDTH_PX: number = 30;\n\n@Component({\n  selector: 'pupa-scrollable',\n  templateUrl: './scrollable.component.html',\n  styleUrls: ['./scrollable.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScrollableComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n  private readonly subscription: Subscription = new Subscription();\n\n  @Input() public invisibleScrollbars: ScrollbarType[] = [];\n  @Input() public size: ScrollbarSize = 'small';\n  @Input() public position: ScrollbarPosition = 'internal';\n  @Input() public syncWith: ScrollableComponent[] = [];\n  @Input() public scrollDragMode: Nullable<ScrollDragMode> = null;\n  private readonly scrollDragMode$: BehaviorSubject<Nullable<ScrollDragMode>> = new BehaviorSubject<\n    Nullable<ScrollDragMode>\n  >(null);\n  @Input() public scrollVisibilityMode: ScrollVisibilityMode = 'always';\n  private readonly scrollVisibilityMode$: BehaviorSubject<ScrollVisibilityMode> =\n    new BehaviorSubject<ScrollVisibilityMode>('always');\n\n  @Output() public readonly scrollTopChanged: EventEmitter<number> = new EventEmitter<number>();\n  @Output() public readonly scrollLeftChanged: EventEmitter<number> = new EventEmitter<number>();\n\n  @Output() public readonly verticalScrollVisibilityChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public readonly horizontalScrollVisibilityChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  @Output() public readonly scrolledToHorizontalStart: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public readonly scrolledToHorizontalEnd: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public readonly scrolledToVerticalStart: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public readonly scrolledToVerticalEnd: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  @Output() public readonly contentDragStart: EventEmitter<void> = new EventEmitter<void>();\n  @Output() public readonly contentDragEnd: EventEmitter<void> = new EventEmitter<void>();\n\n  @Output() public readonly verticalScrollDirectionChanged: EventEmitter<ScrollDirection> =\n    new EventEmitter<ScrollDirection>();\n\n  @ViewChild('content', { static: true }) public contentRef: ElementRef<HTMLElement>;\n  @ContentChild(ScrollableContentDirective, { static: true, read: ElementRef })\n  public directiveContentRef: ElementRef<HTMLElement>;\n\n  @ViewChild('verticalScrollbar', { static: true }) public verticalScrollbarRef: ElementRef<HTMLElement>;\n  @ViewChild('verticalScrollbarThumb', { static: true }) public verticalScrollbarThumbRef: ElementRef<HTMLElement>;\n\n  @ViewChild('horizontalScrollbar', { static: true }) public horizontalScrollbarRef: ElementRef<HTMLElement>;\n  @ViewChild('horizontalScrollbarThumb', { static: true }) public horizontalScrollbarThumbRef: ElementRef<HTMLElement>;\n\n  private readonly verticalScrollbar: Scrollbar = new Scrollbar();\n  private readonly horizontalScrollbar: Scrollbar = new Scrollbar();\n\n  private readonly hasVerticalScrollbar$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  private readonly hasHorizontalScrollbar$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isVerticalThumbGrabbing$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isHorizontalThumbGrabbing$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isScrollbarVisibleOnScroll$: Observable<boolean> = this.scrollVisibilityMode$.pipe(\n    map((mode: ScrollVisibilityMode) => mode === 'onscroll')\n  );\n  public readonly isContentScrolling$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private contentElement: HTMLElement;\n  public get element(): HTMLElement {\n    return this.contentElement;\n  }\n\n  private lastScrollTop: number = 0;\n\n  private scrollByDeltaSubscription: Subscription | null = null;\n\n  constructor(\n    private readonly ngZone: NgZone,\n    private readonly renderer: Renderer2,\n    public readonly changeDetectorRef: ChangeDetectorRef,\n    @Inject(DOCUMENT) private readonly document: Document,\n    private readonly elementRef: ElementRef<HTMLElement>\n  ) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processScrollDragModeChanges(changes?.scrollDragMode);\n    this.processScrollVisibilityModeChanges(changes?.scrollVisibilityMode);\n  }\n\n  public ngOnInit(): void {\n    this.setContentElement();\n    this.subscription.add(this.processContentScrollEvent());\n\n    this.subscription.add(this.processVerticalScrollbarThumbSizeChanges());\n    this.subscription.add(this.processHorizontalScrollbarThumbSizeChanges());\n    this.subscription.add(this.processVerticalScrollbarThumbOffsetChanges());\n    this.subscription.add(this.processHorizontalScrollbarThumbOffsetChanges());\n    this.subscription.add(this.processVerticalScrollbarPan());\n    this.subscription.add(this.processHorizontalScrollbarPan());\n    this.subscription.add(this.updateSizesOnAnimationFrame());\n    this.subscription.add(this.processScrollStartEndChanges());\n  }\n\n  public ngAfterViewInit(): void {\n    this.subscription.add(this.processScrollDragMode());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n    this.scrollByDeltaSubscription?.unsubscribe();\n  }\n\n  public scrollToBottom(): void {\n    const content: HTMLElement = this.contentRef.nativeElement;\n    this.setScrollTop(content.scrollHeight - content.clientHeight);\n  }\n\n  public scrollToTop(): void {\n    this.setScrollTop(0);\n  }\n\n  public setScrollTop(scrollTop: number): void {\n    this.setContentScrollTop(scrollTop);\n  }\n\n  public setScrollLeft(scrollLeft: number): void {\n    this.setContentScrollLeft(scrollLeft);\n  }\n\n  public setScrollTopByDelta(deltaScrollTop: number): void {\n    this.setContentScrollTopByDelta(deltaScrollTop);\n  }\n\n  public setScrollLeftByDelta(deltaScrollLeft: number, isSmoothScroll: boolean = false): void {\n    isSmoothScroll\n      ? this.setSmoothContentScrollLeftByDelta(deltaScrollLeft)\n      : this.setContentScrollLeftByDelta(deltaScrollLeft);\n  }\n\n  public startScrollLeftByDeltaLoop(deltaScrollLeft: number): void {\n    this.scrollByDeltaSubscription = getAnimationFrameLoop()\n      .pipe(takeUntil(merge(this.scrolledToHorizontalStart, this.scrolledToHorizontalEnd)))\n      .subscribe(() => {\n        this.setScrollLeftByDelta(deltaScrollLeft);\n      });\n  }\n\n  public stopScrollLeftByDeltaLoop(): void {\n    this.scrollByDeltaSubscription?.unsubscribe();\n    this.scrollByDeltaSubscription = null;\n  }\n\n  public isIntersectsLeftScrollTriggerZone(positionX: number): boolean {\n    const clientRect: DOMRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n    const leftSensitivityZone: [number, number] = [\n      clientRect.left,\n      clientRect.left + HORIZONTAL_AUTO_SCROLL_SENSITIVITY_WIDTH_PX,\n    ];\n\n    return positionX >= leftSensitivityZone[0] && positionX <= leftSensitivityZone[1];\n  }\n\n  public isIntersectsRightScrollTriggerZone(positionX: number): boolean {\n    const clientRect: DOMRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n    const rightSensitivityZone: [number, number] = [\n      clientRect.right - HORIZONTAL_AUTO_SCROLL_SENSITIVITY_WIDTH_PX,\n      clientRect.right,\n    ];\n\n    return positionX >= rightSensitivityZone[0] && positionX <= rightSensitivityZone[1];\n  }\n\n  private processContentScrollEvent(): Subscription {\n    const contentElement: HTMLElement = this.contentElement;\n\n    return fromEvent(contentElement, 'scroll')\n      .pipe(\n        subscribeOutsideAngular(this.ngZone),\n        tap(() => {\n          this.scrollTopChanged.emit(contentElement.scrollTop);\n          this.scrollLeftChanged.emit(contentElement.scrollLeft);\n\n          this.verticalScrollbar.setContentScrollOffset(contentElement.scrollTop);\n          this.horizontalScrollbar.setContentScrollOffset(contentElement.scrollLeft);\n        }),\n        tap(() => {\n          contentElement.scrollTop > this.lastScrollTop\n            ? this.verticalScrollDirectionChanged.emit('down')\n            : this.verticalScrollDirectionChanged.emit('up');\n\n          this.lastScrollTop = contentElement.scrollTop <= 0 ? 0 : contentElement.scrollTop;\n\n          // prevents scrollLeft out of bounds in safari browser\n          const minScrollLeft: number = 0;\n          const maxScrollLeft: number = contentElement.scrollWidth - contentElement.clientWidth;\n          const currentScrollLeft: number = Math.min(Math.max(contentElement.scrollLeft, minScrollLeft), maxScrollLeft);\n\n          for (const scrollable of this.syncWith) {\n            scrollable.setScrollTop(contentElement.scrollTop);\n            scrollable.setScrollLeft(currentScrollLeft);\n          }\n        }),\n        switchMap(() => this.scrollVisibilityMode$),\n        filter((visibilityMode: ScrollVisibilityMode) => visibilityMode === 'onscroll'),\n        subscribeInsideAngular(this.ngZone),\n        tap(() => this.setContentScrolling(true)),\n        debounceTime(SCROLL_EVENT_DEBOUNCE_TIME_MS),\n        delay(SCROLL_THUMB_VISIBILITY_DEBOUNCE_TIME_MS),\n        tap(() => this.setContentScrolling(false))\n      )\n      .subscribe();\n  }\n\n  private processVerticalScrollbarPan(): Subscription {\n    let lastDeltaY: number = 0;\n\n    const contentElement: HTMLElement = this.contentElement;\n    const verticalScrollbarThumb: HTMLElement = this.verticalScrollbarThumbRef.nativeElement;\n\n    const hammer: HammerManager = new Hammer(verticalScrollbarThumb);\n    hammer.get('pan').set({ direction: Hammer.DIRECTION_VERTICAL });\n\n    return fromHammerEvent(hammer, ['panstart', 'panup', 'pandown', 'panend'])\n      .pipe(\n        subscribeOutsideAngular(this.ngZone),\n        switchMap((event: HammerInput) => {\n          const currentDeltaY: number = event.deltaY - lastDeltaY;\n          return forkJoin(\n            of(event),\n            this.verticalScrollbar.getContentScrollOffsetByScrollbarThumbDeltaOffset(currentDeltaY)\n          );\n        })\n      )\n      .subscribe(([event, deltaScrollTop]: [HammerInput, number]) => {\n        if (event.type === 'panstart') {\n          this.isVerticalThumbGrabbing$.next(true);\n          this.setBodyGrabbingCursor();\n        }\n\n        const prevContentScrollTop: number = contentElement.scrollTop;\n        this.setContentScrollTop(contentElement.scrollTop + deltaScrollTop);\n\n        if (contentElement.scrollTop !== prevContentScrollTop) {\n          lastDeltaY = event.deltaY;\n        }\n\n        if (event.type === 'panend') {\n          this.isVerticalThumbGrabbing$.next(false);\n          this.removeBodyGrabbingCursor();\n          lastDeltaY = 0;\n        }\n      });\n  }\n\n  private processHorizontalScrollbarPan(): Subscription {\n    let lastDeltaX: number = 0;\n\n    const contentElement: HTMLElement = this.contentElement;\n    const horizontalScrollbarThumb: HTMLElement = this.horizontalScrollbarThumbRef.nativeElement;\n\n    const hammer: HammerManager = new Hammer(horizontalScrollbarThumb);\n    hammer.get('pan').set({ direction: Hammer.DIRECTION_HORIZONTAL });\n\n    return fromHammerEvent(hammer, ['panstart', 'panleft', 'panright', 'panend'])\n      .pipe(\n        subscribeOutsideAngular(this.ngZone),\n        switchMap((event: HammerInput) => {\n          const currentDeltaX: number = event.deltaX - lastDeltaX;\n          return forkJoin(\n            of(event),\n            this.horizontalScrollbar.getContentScrollOffsetByScrollbarThumbDeltaOffset(currentDeltaX)\n          );\n        })\n      )\n      .subscribe(([event, deltaScrollLeftPx]: [HammerInput, number]) => {\n        if (event.type === 'panstart') {\n          this.isHorizontalThumbGrabbing$.next(true);\n          this.setBodyGrabbingCursor();\n        }\n\n        const prevContentScrollLeft: number = contentElement.scrollLeft;\n        this.setContentScrollLeft(contentElement.scrollLeft + deltaScrollLeftPx);\n\n        if (contentElement.scrollLeft !== prevContentScrollLeft) {\n          lastDeltaX = event.deltaX;\n        }\n\n        if (event.type === 'panend') {\n          this.isHorizontalThumbGrabbing$.next(false);\n          this.removeBodyGrabbingCursor();\n          lastDeltaX = 0;\n        }\n      });\n  }\n\n  private processScrollDragMode(): Subscription {\n    const contentElement: HTMLElement = this.contentElement;\n    let lastDeltaY: number = 0;\n    let lastDeltaX: number = 0;\n\n    return this.scrollDragMode$\n      .pipe(\n        switchMap((scrollDragMode: ScrollDragMode) => {\n          if (isNil(scrollDragMode)) {\n            return NEVER;\n          }\n\n          const hammer: HammerManager = new Hammer(contentElement);\n          hammer.get('pan').set({ direction: Hammer.DIRECTION_ALL });\n\n          const verticalPanEvents: string[] = ['vertical', 'all'].includes(scrollDragMode) ? ['panup', 'pandown'] : [];\n          const horizontalPanEvents: string[] = ['horizontal', 'all'].includes(scrollDragMode)\n            ? ['panleft', 'panright']\n            : [];\n\n          return fromHammerEvent(hammer, ['panstart', 'panend', ...verticalPanEvents, ...horizontalPanEvents]).pipe(\n            withLatestFrom(of(scrollDragMode))\n          );\n        }),\n        filter(([_event, scrollDragMode]: [HammerInput, ScrollDragMode]) => {\n          const isVerticalScrollingAvailable: boolean = contentElement.offsetHeight < contentElement.scrollHeight;\n          const isHorizontalScrollingAvailable: boolean = contentElement.offsetWidth < contentElement.scrollWidth;\n\n          if (scrollDragMode === 'vertical') {\n            return isVerticalScrollingAvailable;\n          }\n\n          if (scrollDragMode === 'horizontal') {\n            return isHorizontalScrollingAvailable;\n          }\n\n          return isVerticalScrollingAvailable || isHorizontalScrollingAvailable;\n        }),\n        subscribeOutsideAngular(this.ngZone)\n      )\n      .subscribe(([event, scrollDragMode]: [HammerInput, ScrollDragMode]) => {\n        if (event.type === 'panstart') {\n          this.setBodyGrabbingCursor();\n          this.contentDragStart.emit();\n        }\n\n        const isVerticalScrollDragMode: boolean = ['vertical', 'all'].includes(scrollDragMode);\n        const isHorizontalScrollDragMode: boolean = ['horizontal', 'all'].includes(scrollDragMode);\n\n        if (isVerticalScrollDragMode) {\n          const prevContentScrollTop: number = contentElement.scrollTop;\n          this.setContentScrollTop(contentElement.scrollTop + (lastDeltaY - event.deltaY));\n\n          if (contentElement.scrollTop !== prevContentScrollTop) {\n            lastDeltaY = event.deltaY;\n          }\n        }\n\n        if (isHorizontalScrollDragMode) {\n          const prevContentScrollLeft: number = contentElement.scrollLeft;\n          this.setContentScrollLeft(contentElement.scrollLeft + (lastDeltaX - event.deltaX));\n\n          if (contentElement.scrollLeft !== prevContentScrollLeft) {\n            lastDeltaX = event.deltaX;\n          }\n        }\n\n        if (event.type === 'panend') {\n          this.removeBodyGrabbingCursor();\n          lastDeltaY = 0;\n          lastDeltaX = 0;\n          this.contentDragEnd.emit();\n        }\n      });\n  }\n\n  private processVerticalScrollbarThumbSizeChanges(): Subscription {\n    const verticalScrollbarThumb: HTMLElement = this.verticalScrollbarThumbRef.nativeElement;\n\n    return this.verticalScrollbar.thumbSizePx$\n      .pipe(subscribeOutsideAngular(this.ngZone))\n      .subscribe((thumbSizePx: number) => {\n        this.renderer.setStyle(verticalScrollbarThumb, 'height', `${thumbSizePx}px`);\n      });\n  }\n\n  private processHorizontalScrollbarThumbSizeChanges(): Subscription {\n    const horizontalScrollbarThumb: HTMLElement = this.horizontalScrollbarThumbRef.nativeElement;\n\n    return this.horizontalScrollbar.thumbSizePx$\n      .pipe(subscribeOutsideAngular(this.ngZone))\n      .subscribe((thumbSizePx: number) => {\n        this.renderer.setStyle(horizontalScrollbarThumb, 'width', `${thumbSizePx}px`);\n      });\n  }\n\n  private processVerticalScrollbarThumbOffsetChanges(): Subscription {\n    const verticalScrollbarThumb: HTMLElement = this.verticalScrollbarThumbRef.nativeElement;\n\n    return this.verticalScrollbar.thumbOffsetPx$\n      .pipe(subscribeOutsideAngular(this.ngZone))\n      .subscribe((thumbOffsetPx: number) => {\n        this.renderer.setStyle(verticalScrollbarThumb, 'top', `${thumbOffsetPx}px`);\n      });\n  }\n\n  private processHorizontalScrollbarThumbOffsetChanges(): Subscription {\n    const horizontalScrollbarThumb: HTMLElement = this.horizontalScrollbarThumbRef.nativeElement;\n\n    return this.horizontalScrollbar.thumbOffsetPx$\n      .pipe(subscribeOutsideAngular(this.ngZone))\n      .subscribe((thumbOffsetPx: number) => {\n        this.renderer.setStyle(horizontalScrollbarThumb, 'left', `${thumbOffsetPx}px`);\n      });\n  }\n\n  private updateSizesOnAnimationFrame(): Subscription {\n    return getAnimationFrameLoop()\n      .pipe(subscribeOutsideAngular(this.ngZone), throttleTime(ANIMATION_FRAME_THROTTLE_TIME_MS))\n      .subscribe(() => {\n        this.setScrollBarsSizes();\n      });\n  }\n\n  private setContentElement(): void {\n    this.contentElement = isNil(this.directiveContentRef)\n      ? this.contentRef.nativeElement\n      : this.directiveContentRef.nativeElement;\n  }\n\n  private setScrollBarsSizes(): void {\n    const contentElement: HTMLElement = this.contentElement;\n    const verticalScrollbar: HTMLElement = this.verticalScrollbarRef.nativeElement;\n    const horizontalScrollbar: HTMLElement = this.horizontalScrollbarRef.nativeElement;\n\n    combineLatest([this.hasVerticalScrollbar$, this.hasHorizontalScrollbar$])\n      .pipe(take(1))\n      .subscribe(([hasVerticalScrollbar, hasHorizontalScrollbar]: [boolean, boolean]) => {\n        const hasVerticalScrollbarCurrent: boolean = contentElement.scrollHeight > contentElement.clientHeight;\n        const hasHorizontalScrollbarCurrent: boolean = contentElement.scrollWidth > contentElement.clientWidth;\n        this.hasVerticalScrollbar$.next(hasVerticalScrollbarCurrent);\n        this.hasHorizontalScrollbar$.next(hasHorizontalScrollbarCurrent);\n\n        const isVerticalScrollbarVisible: boolean =\n          !this.invisibleScrollbars.includes('vertical') && hasVerticalScrollbarCurrent;\n\n        const isHorizontalScrollbarVisible: boolean =\n          !this.invisibleScrollbars.includes('horizontal') && hasHorizontalScrollbarCurrent;\n\n        if (isVerticalScrollbarVisible !== hasVerticalScrollbar) {\n          this.ngZone.run(() => this.verticalScrollVisibilityChanged.emit(isVerticalScrollbarVisible));\n          this.setScrollbarsClassesByVerticalScrollbarVisibility(isVerticalScrollbarVisible);\n        }\n\n        if (isHorizontalScrollbarVisible !== hasHorizontalScrollbar) {\n          this.ngZone.run(() => this.horizontalScrollVisibilityChanged.emit(isHorizontalScrollbarVisible));\n          this.setScrollbarsClassesByHorizontalScrollbarVisibility(isHorizontalScrollbarVisible);\n        }\n\n        this.verticalScrollbar.setSizes({\n          contentSizePx: contentElement.clientHeight,\n          contentScrollSizePx: contentElement.scrollHeight,\n          scrollbarSizePx: verticalScrollbar.clientHeight,\n        });\n\n        this.horizontalScrollbar.setSizes({\n          contentSizePx: contentElement.clientWidth,\n          contentScrollSizePx: contentElement.scrollWidth,\n          scrollbarSizePx: horizontalScrollbar.clientWidth,\n        });\n      });\n  }\n\n  private setContentScrollTop(scrollTop: number): void {\n    const contentElement: HTMLElement = this.contentElement;\n    this.renderer.setProperty(contentElement, 'scrollTop', scrollTop);\n  }\n\n  private setContentScrollTopByDelta(scrollTopDelta: number): void {\n    const contentElement: HTMLElement = this.contentElement;\n    this.renderer.setProperty(contentElement, 'scrollTop', contentElement.scrollTop + scrollTopDelta);\n  }\n\n  private setContentScrollLeft(scrollLeft: number): void {\n    const contentElement: HTMLElement = this.contentElement;\n    this.renderer.setProperty(contentElement, 'scrollLeft', scrollLeft);\n  }\n\n  private setContentScrollLeftByDelta(scrollLeftDelta: number): void {\n    const contentElement: HTMLElement = this.contentElement;\n    this.renderer.setProperty(contentElement, 'scrollLeft', contentElement.scrollLeft + scrollLeftDelta);\n  }\n\n  private setSmoothContentScrollLeftByDelta(scrollLeftDelta: number): void {\n    const contentElement: HTMLElement = this.contentElement;\n    contentElement.scrollTo({ left: contentElement.scrollLeft + scrollLeftDelta, behavior: 'smooth' });\n  }\n\n  private setBodyGrabbingCursor(): void {\n    this.renderer.setStyle(this.document.body, 'cursor', 'grabbing', RendererStyleFlags2.Important);\n  }\n\n  private removeBodyGrabbingCursor(): void {\n    this.renderer.setStyle(this.document.body, 'cursor', null);\n  }\n\n  private setScrollbarsClassesByVerticalScrollbarVisibility(isVisible: boolean): void {\n    const verticalScrollbar: HTMLElement = this.verticalScrollbarRef.nativeElement;\n    const horizontalScrollbar: HTMLElement = this.horizontalScrollbarRef.nativeElement;\n\n    if (isVisible) {\n      this.renderer.addClass(verticalScrollbar, VERTICAL_SCROLLBAR_VISIBILITY_CLASS);\n      this.renderer.addClass(horizontalScrollbar, HORIZONTAL_SCROLLBAR_WITH_VERTICAL_CLASS);\n      return;\n    }\n\n    this.renderer.removeClass(verticalScrollbar, VERTICAL_SCROLLBAR_VISIBILITY_CLASS);\n    this.renderer.removeClass(horizontalScrollbar, HORIZONTAL_SCROLLBAR_WITH_VERTICAL_CLASS);\n  }\n\n  private setScrollbarsClassesByHorizontalScrollbarVisibility(isVisible: boolean): void {\n    const verticalScrollbar: HTMLElement = this.verticalScrollbarRef.nativeElement;\n    const horizontalScrollbar: HTMLElement = this.horizontalScrollbarRef.nativeElement;\n\n    if (isVisible) {\n      this.renderer.addClass(verticalScrollbar, VERTICAL_SCROLLBAR_WITH_HORIZONTAL_CLASS);\n      this.renderer.addClass(horizontalScrollbar, HORIZONTAL_SCROLLBAR_VISIBILITY_CLASS);\n      return;\n    }\n\n    this.renderer.removeClass(verticalScrollbar, VERTICAL_SCROLLBAR_WITH_HORIZONTAL_CLASS);\n    this.renderer.removeClass(horizontalScrollbar, HORIZONTAL_SCROLLBAR_VISIBILITY_CLASS);\n  }\n\n  private setContentScrolling(isContentScrolling: boolean): void {\n    this.isContentScrolling$.next(isContentScrolling);\n    for (const scrollable of this.syncWith) {\n      scrollable.isContentScrolling$.next(isContentScrolling);\n    }\n  }\n\n  private processScrollStartEndChanges(): Subscription {\n    const contentElement: HTMLElement = this.contentElement;\n\n    return merge(\n      fromEvent(contentElement, 'scroll'),\n      this.hasVerticalScrollbar$.pipe(distinctUntilChanged()),\n      this.hasHorizontalScrollbar$.pipe(distinctUntilChanged())\n    )\n      .pipe(\n        subscribeOutsideAngular(this.ngZone),\n        map(() => {\n          const scrolledToHorizontalStart: boolean = contentElement.scrollLeft > 0;\n          const scrolledToHorizontalEnd: boolean =\n            contentElement.offsetWidth + contentElement.scrollLeft < contentElement.scrollWidth;\n          const scrolledToVerticalStart: boolean = contentElement.scrollTop > 0;\n          const scrolledToVerticalEnd: boolean =\n            contentElement.offsetHeight + contentElement.scrollTop < contentElement.scrollHeight;\n\n          return [scrolledToHorizontalStart, scrolledToHorizontalEnd, scrolledToVerticalStart, scrolledToVerticalEnd];\n        }),\n        startWith([false, false, false, false]),\n        pairwise(),\n        tap(\n          ([\n            [\n              scrolledToHorizontalStartPrev,\n              scrolledToHorizontalEndPrev,\n              scrolledToVerticalStartPrev,\n              scrolledToVerticalEndPrev,\n            ],\n            [scrolledToHorizontalStart, scrolledToHorizontalEnd, scrolledToVerticalStart, scrolledToVerticalEnd],\n          ]: [boolean[], boolean[]]) => {\n            if (scrolledToHorizontalStartPrev !== scrolledToHorizontalStart) {\n              this.scrolledToHorizontalStart.emit(scrolledToHorizontalStart);\n            }\n            if (scrolledToHorizontalEndPrev !== scrolledToHorizontalEnd) {\n              this.scrolledToHorizontalEnd.emit(scrolledToHorizontalEnd);\n            }\n            if (scrolledToVerticalStartPrev !== scrolledToVerticalStart) {\n              this.scrolledToVerticalStart.emit(scrolledToVerticalStart);\n            }\n            if (scrolledToVerticalEndPrev !== scrolledToVerticalEnd) {\n              this.scrolledToVerticalEnd.emit(scrolledToVerticalEnd);\n            }\n          }\n        )\n      )\n      .subscribe();\n  }\n\n  private processScrollDragModeChanges(change: ComponentChange<this, ScrollDragMode>): void {\n    const updatedValue: ScrollDragMode | undefined = change?.currentValue;\n\n    if (updatedValue === undefined) {\n      return;\n    }\n\n    this.scrollDragMode$.next(updatedValue);\n  }\n\n  private processScrollVisibilityModeChanges(change: ComponentChange<this, ScrollVisibilityMode>): void {\n    const updatedValue: ScrollVisibilityMode | undefined = change?.currentValue;\n\n    if (updatedValue === undefined) {\n      return;\n    }\n\n    this.scrollVisibilityMode$.next(updatedValue);\n  }\n}\n","<div class=\"pupa-scrollable\">\n  <div class=\"pupa-scrollbars\">\n    <div #verticalScrollbar class=\"pupa-scrollbar pupa-scrollbar_vertical pupa-scrollbar_vertical_{{ position }}\">\n      <div\n        class=\"pupa-scrollbar__thumb-container thumb-container thumb-container_{{ size }}\"\n        [class.thumb-container_grabbing]=\"isVerticalThumbGrabbing$ | async\"\n        [class.thumb-container_scrolling]=\"isContentScrolling$ | async\"\n        [class.thumb-container_visible-onscroll]=\"isScrollbarVisibleOnScroll$ | async\"\n        #verticalScrollbarThumb\n      >\n        <div class=\"pupa-scrollbar__thumb thumb\"></div>\n      </div>\n    </div>\n    <div #horizontalScrollbar class=\"pupa-scrollbar pupa-scrollbar_horizontal pupa-scrollbar_horizontal_{{ position }}\">\n      <div\n        class=\"pupa-scrollbar__thumb-container thumb-container thumb-container_{{ size }}\"\n        [class.thumb-container_grabbing]=\"isHorizontalThumbGrabbing$ | async\"\n        [class.thumb-container_scrolling]=\"isContentScrolling$ | async\"\n        [class.thumb-container_visible-onscroll]=\"isScrollbarVisibleOnScroll$ | async\"\n        #horizontalScrollbarThumb\n      >\n        <div class=\"pupa-scrollbar__thumb thumb\"></div>\n      </div>\n    </div>\n  </div>\n\n  <div #content class=\"pupa-scrollable__content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScrollableComponent } from './components/scrollable/scrollable.component';\nimport { CommonModule } from '@angular/common';\nimport { ScrollableContentDirective } from './directives/scrollable-content.directive';\n\n@NgModule({\n  declarations: [ScrollableComponent, ScrollableContentDirective],\n  imports: [CommonModule],\n  exports: [ScrollableComponent, ScrollableContentDirective],\n})\nexport class PupaScrollableModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { createProviderIfMissing } from '@bimeister/pupakit.common';\nimport { DropdownRef } from '../../../../declarations/classes/dropdown-ref.class';\nimport { DropdownMenuContextService } from '../../services/dropdown-menu-context.service';\n\n@Component({\n  selector: 'pupa-dropdown-menu',\n  templateUrl: './dropdown-menu.component.html',\n  styleUrls: ['./dropdown-menu.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [createProviderIfMissing(DropdownMenuContextService, [])],\n})\nexport class DropdownMenuComponent implements OnChanges {\n  @Input() public dropdownRef?: DropdownRef;\n\n  constructor(private readonly contextService: DropdownMenuContextService) {}\n\n  public ngOnChanges(): void {\n    this.contextService.setDropdownRef(this.dropdownRef ?? null);\n  }\n}\n","<pupa-scrollable class=\"dropdown-content__menu\" tabindex=\"-1\" pupaAutofocus>\n  <div class=\"dropdown-content__scrollable-content\">\n    <ng-content></ng-content>\n  </div>\n</pupa-scrollable>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport { DropdownMenuItemComponent } from './components/dropdown-menu-item/dropdown-menu-item.component';\nimport { DropdownMenuSeparatorComponent } from './components/dropdown-menu-separator/dropdown-menu-separator.component';\n\nimport { CommonModule } from '@angular/common';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaOptionModule } from '../option/option.module';\nimport { PupaScrollableModule } from '../scrollable/scrollable.module';\nimport { PupaThemeWrapperModule } from '../theme-wrapper/theme-wrapper.module';\nimport { DropdownMenuComponent } from './components/dropdown-menu/dropdown-menu.component';\n\n@NgModule({\n  declarations: [DropdownMenuComponent, DropdownMenuItemComponent, DropdownMenuSeparatorComponent],\n  imports: [\n    CommonModule,\n    PupaIconsModule.forFeature(),\n    OverlayModule,\n    PupaScrollableModule,\n    PupaOptionModule,\n    PupaThemeWrapperModule,\n  ],\n  exports: [DropdownMenuComponent, DropdownMenuItemComponent, DropdownMenuSeparatorComponent],\n})\nexport class PupaDropdownMenuModule {}\n","import { InjectionToken } from '@angular/core';\nimport { TooltipServiceDeclaration } from '../../declarations/interfaces/tooltip-service-declaration.interface';\n\nexport const TOOLTIP_SERVICE_TOKEN: InjectionToken<TooltipServiceDeclaration> =\n  new InjectionToken<TooltipServiceDeclaration>('TOOLTIP_SERVICE_TOKEN');\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { filterFalsy, filterNotNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, fromEvent, Observable, Subscription, zip } from 'rxjs';\nimport { map, take, withLatestFrom } from 'rxjs/operators';\nimport { TOOLTIP_SERVICE_TOKEN } from '../../../../declarations/tokens/tooltip-service.token';\nimport { TooltipServiceDeclaration } from '../../../../declarations/interfaces/tooltip-service-declaration.interface';\n\nconst OFFSET_PX: number = 4;\nconst ANIMATION: string = `200ms ease-in-out`;\n\n@Component({\n  selector: 'pupa-tooltip-content',\n  templateUrl: './tooltip-content.component.html',\n  styleUrls: ['./tooltip-content.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('tooltipShow', [\n      state('void', style({ opacity: 0 })),\n      state('enter', style({ opacity: 1 })),\n      transition('* => *', animate(ANIMATION)),\n    ]),\n  ],\n})\nexport class TooltipContentComponent implements OnDestroy {\n  private readonly tooltipService: TooltipServiceDeclaration;\n  private readonly tooltipHideOnHoverHover$: Observable<boolean>;\n  public readonly tooltipContent$: Observable<Nullable<string>>;\n  public readonly tooltipContentTemplate$: Observable<Nullable<TemplateRef<unknown>>>;\n  private readonly tooltipPosition$: Observable<ConnectedOverlayPositionChange>;\n\n  private readonly hostElementMouseEnter$: Observable<MouseEvent> = fromEvent<MouseEvent>(\n    this.hostElementRef.nativeElement,\n    'mouseenter'\n  );\n\n  private readonly hostElementMouseLeave$: Observable<MouseEvent> = fromEvent<MouseEvent>(\n    this.hostElementRef.nativeElement,\n    'mouseleave'\n  );\n\n  public readonly styleTransform$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(null);\n\n  private readonly subscription: Subscription = new Subscription();\n  constructor(\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private readonly injector: Injector,\n    private readonly hostElementRef: ElementRef<HTMLElement>\n  ) {\n    this.tooltipService = this.injector.get(TOOLTIP_SERVICE_TOKEN);\n    this.tooltipHideOnHoverHover$ = this.tooltipService.tooltipHideOnHoverHover$;\n    this.tooltipContent$ = this.tooltipService.tooltipContent$;\n    this.tooltipContentTemplate$ = this.tooltipService.tooltipContentTemplate$;\n    this.tooltipPosition$ = this.tooltipService.tooltipPosition$;\n\n    this.subscription.add(this.calculateTooltipStyleTransform());\n    this.subscription.add(this.processContentMouseEnterEvent());\n    this.subscription.add(this.processContentMouseEnterLeave());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processContentMouseEnterEvent(): Subscription {\n    return this.hostElementMouseEnter$\n      .pipe(withLatestFrom(this.tooltipHideOnHoverHover$.pipe(take(1), filterFalsy())))\n      .subscribe(() => {\n        this.tooltipService.processContentMouseEnter();\n      });\n  }\n\n  private processContentMouseEnterLeave(): Subscription {\n    return this.hostElementMouseLeave$.subscribe(() => {\n      this.tooltipService.processContentMouseLeave();\n    });\n  }\n\n  private calculateTooltipStyleTransform(): Subscription {\n    const offsetXPx$: Observable<number> = this.tooltipPosition$.pipe(\n      filterNotNil(),\n      map((tooltipPosition: ConnectedOverlayPositionChange) => tooltipPosition.connectionPair),\n      map((connectionPair: ConnectionPositionPair) => {\n        switch (connectionPair.overlayX) {\n          case 'end':\n            return -OFFSET_PX;\n          case 'start':\n            return OFFSET_PX;\n          default:\n            return 0;\n        }\n      })\n    );\n\n    const offsetYPx$: Observable<number> = this.tooltipPosition$.pipe(\n      filterNotNil(),\n      map((tooltipPosition: ConnectedOverlayPositionChange) => tooltipPosition.connectionPair),\n      map((connectionPair: ConnectionPositionPair) => {\n        switch (connectionPair.overlayY) {\n          case 'bottom':\n            return -OFFSET_PX;\n          case 'top':\n            return OFFSET_PX;\n          default:\n            return 0;\n        }\n      })\n    );\n\n    return zip(offsetXPx$, offsetYPx$)\n      .pipe(map(([offsetXPx, offsetYPx]: [number, number]) => `translate(${offsetXPx}px, ${offsetYPx}px)`))\n      .subscribe((transformStyle: string) => {\n        this.styleTransform$.next(transformStyle);\n        this.detectChanges();\n      });\n  }\n\n  private detectChanges(): void {\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<div class=\"tooltip\" [@tooltipShow]>\n  <div class=\"tooltip__animation-container\" [style.transform]=\"styleTransform$ | async\">\n    <div class=\"tooltip__content-container\">\n      <div class=\"tooltip__content\">\n        <ng-container *ngIf=\"tooltipContentTemplate$ | async as tooltipContentTemplate; else simpleTooltipContent\">\n          <ng-container [ngTemplateOutlet]=\"tooltipContentTemplate\"></ng-container>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n</div>\n\n<ng-template #simpleTooltipContent>\n  <ng-container *ngIf=\"tooltipContent$ | async as tooltipContent; else emptyTooltipContent\">\n    {{ tooltipContent }}\n  </ng-container>\n</ng-template>\n\n<ng-template #emptyTooltipContent> Looks like you forgot to give the tooltip content </ng-template>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\n\nconst CENTER_BOTTOM_POSITION: ConnectedPosition = {\n  originX: 'center',\n  originY: 'top',\n  overlayX: 'center',\n  overlayY: 'bottom',\n};\nconst CENTER_TOP_POSITION: ConnectedPosition = {\n  originX: 'center',\n  originY: 'bottom',\n  overlayX: 'center',\n  overlayY: 'top',\n};\n\nexport const OVERLAY_POSITIONS: ConnectedPosition[] = [CENTER_TOP_POSITION, CENTER_BOTTOM_POSITION];\n","import {\n  ConnectedOverlayPositionChange,\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ElementRef, Injectable, Injector, OnDestroy, TemplateRef } from '@angular/core';\nimport { OVERLAY_VIEWPORT_MARGIN_PX } from '@bimeister/pupakit.common';\nimport { filterNotNil, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators';\nimport { TOOLTIP_SERVICE_TOKEN } from '../../../declarations/tokens/tooltip-service.token';\nimport { TooltipServiceDeclaration } from '../../../declarations/interfaces/tooltip-service-declaration.interface';\nimport { TooltipContentComponent } from '../components/tooltip-content/tooltip-content.component';\nimport { OVERLAY_POSITIONS } from '../positions';\n\n@Injectable()\nexport class TooltipService implements OnDestroy, TooltipServiceDeclaration {\n  private readonly subscription: Subscription = new Subscription();\n\n  private readonly mouseOverTrigger$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  private readonly mouseOverContent$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  private readonly mouseOverTooltip$: Observable<boolean> = combineLatest([\n    this.mouseOverTrigger$.pipe(distinctUntilChanged()),\n    this.mouseOverContent$.pipe(distinctUntilChanged()),\n  ]).pipe(\n    debounceTime(0),\n    map(([mouseOverTrigger, mouseOverContent]: [boolean, boolean]) => mouseOverTrigger || mouseOverContent)\n  );\n\n  private readonly isOpenedState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isOpened$: Observable<boolean> = this.isOpenedState$.pipe(distinctUntilChanged());\n\n  private readonly isDisabledState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isDisabled$: Observable<boolean> = this.isDisabledState$.pipe(distinctUntilChanged());\n\n  private readonly tooltipContentState$: BehaviorSubject<Nullable<string>> = new BehaviorSubject<Nullable<string>>(\n    null\n  );\n  public readonly tooltipContent$: Observable<Nullable<string>> = this.tooltipContentState$.pipe(\n    distinctUntilChanged()\n  );\n\n  private readonly tooltipContentTemplateState$: BehaviorSubject<Nullable<TemplateRef<unknown>>> = new BehaviorSubject<\n    Nullable<TemplateRef<unknown>>\n  >(null);\n  public readonly tooltipContentTemplate$: Observable<Nullable<TemplateRef<unknown>>> =\n    this.tooltipContentTemplateState$.pipe(distinctUntilChanged());\n\n  private readonly tooltipHideOnHoverState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n  public readonly tooltipHideOnHoverHover$: Observable<boolean> = this.tooltipHideOnHoverState$.pipe(\n    distinctUntilChanged()\n  );\n\n  private readonly overlayRef$: BehaviorSubject<Nullable<OverlayRef>> = new BehaviorSubject<Nullable<OverlayRef>>(null);\n  private readonly triggerRef$: BehaviorSubject<Nullable<ElementRef<HTMLElement>>> = new BehaviorSubject<\n    Nullable<ElementRef<HTMLElement>>\n  >(null);\n\n  private readonly tooltipPositionStrategy$: BehaviorSubject<Nullable<FlexibleConnectedPositionStrategy>> =\n    new BehaviorSubject<Nullable<FlexibleConnectedPositionStrategy>>(null);\n  public readonly tooltipPosition$: Observable<ConnectedOverlayPositionChange> = this.tooltipPositionStrategy$.pipe(\n    filterNotNil(),\n    switchMap((positionStrategy: FlexibleConnectedPositionStrategy) => positionStrategy.positionChanges),\n    shareReplayWithRefCount()\n  );\n\n  constructor(private readonly overlay: Overlay) {\n    this.subscription.add(this.processMouseOverTooltipChanges());\n  }\n\n  public ngOnDestroy(): void {\n    this.close();\n    this.subscription.unsubscribe();\n  }\n\n  public registerTooltipTriggerRef(triggerRef: ElementRef<HTMLElement>): void {\n    this.triggerRef$.next(triggerRef);\n  }\n\n  public setOpenedState(isOpened: boolean): void {\n    this.isOpenedState$\n      .pipe(\n        take(1),\n        filter((currentOpenedState: boolean) => currentOpenedState !== isOpened)\n      )\n      .subscribe(() => (isOpened ? this.open() : this.close()));\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.isDisabledState$.next(isDisabled);\n  }\n\n  public setTooltipHideOnHoverState(hideOnTooltipHover: boolean): void {\n    this.tooltipHideOnHoverState$.next(hideOnTooltipHover);\n  }\n\n  public setTooltipContentState(content: string): void {\n    this.tooltipContentState$.next(content);\n  }\n\n  public setTooltipContentTemplateState(template: TemplateRef<unknown>): void {\n    this.tooltipContentTemplateState$.next(template);\n  }\n\n  public processTriggerMouseEnter(): void {\n    this.mouseOverTrigger$.next(true);\n  }\n\n  public processTriggerMouseLeave(): void {\n    this.mouseOverTrigger$.next(false);\n  }\n\n  public processContentMouseEnter(): void {\n    this.mouseOverContent$.next(true);\n  }\n\n  public processContentMouseLeave(): void {\n    this.mouseOverContent$.next(false);\n  }\n\n  private processMouseOverTooltipChanges(): Subscription {\n    return this.mouseOverTooltip$.subscribe((mouseOverTooltip: boolean) => {\n      this.setOpenedState(mouseOverTooltip);\n    });\n  }\n\n  private createOverlay(): void {\n    this.getPositionStrategy()\n      .pipe(take(1), filterNotNil())\n      .subscribe((positionStrategy: FlexibleConnectedPositionStrategy) => {\n        const overlayConfig: OverlayConfig = new OverlayConfig({\n          positionStrategy,\n        });\n        const overlayRef: OverlayRef = this.overlay.create(overlayConfig);\n        this.overlayRef$.next(overlayRef);\n        this.tooltipPositionStrategy$.next(positionStrategy);\n      });\n  }\n\n  private getPositionStrategy(): Observable<FlexibleConnectedPositionStrategy> {\n    return this.triggerRef$.pipe(\n      take(1),\n      filterNotNil(),\n      map((triggerRef: ElementRef<HTMLElement>) => {\n        const positionStrategy: FlexibleConnectedPositionStrategy = this.overlay\n          .position()\n          .flexibleConnectedTo(triggerRef)\n          .withPositions(OVERLAY_POSITIONS)\n          .withViewportMargin(OVERLAY_VIEWPORT_MARGIN_PX);\n\n        return positionStrategy;\n      })\n    );\n  }\n\n  private open(): void {\n    this.createOverlay();\n    this.overlayRef$.pipe(filterNotNil(), take(1)).subscribe((overlayRef: OverlayRef) => {\n      overlayRef.attach(this.getComponentPortal());\n      overlayRef.updatePosition();\n\n      this.isOpenedState$.next(true);\n    });\n  }\n\n  private close(): void {\n    this.overlayRef$.pipe(filterNotNil(), take(1)).subscribe((overlayRef: OverlayRef) => {\n      this.isOpenedState$.next(false);\n      overlayRef.dispose();\n      overlayRef.detach();\n      this.overlayRef$.next(null);\n    });\n  }\n\n  private getComponentPortal(): ComponentPortal<TooltipContentComponent> {\n    const portalInjector: Injector = Injector.create({\n      providers: [\n        {\n          provide: TOOLTIP_SERVICE_TOKEN,\n          useValue: this,\n        },\n      ],\n    });\n    return new ComponentPortal(TooltipContentComponent, null, portalInjector);\n  }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, TemplateRef } from '@angular/core';\nimport { ComponentChange, ComponentChanges, isTabletDevice } from '@bimeister/pupakit.common';\nimport { filterFalsy, isNil, Nullable } from '@bimeister/utilities';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { delay, filter, switchMap, take, tap } from 'rxjs/operators';\nimport { TOOLTIP_SERVICE_TOKEN } from '../../../declarations/tokens/tooltip-service.token';\nimport { TooltipService } from '../services/tooltip.service';\n\n@Directive({\n  selector: '[pupaTooltip]',\n  providers: [\n    TooltipService,\n    {\n      provide: TOOLTIP_SERVICE_TOKEN,\n      useExisting: TooltipService,\n    },\n  ],\n  exportAs: 'pupaTooltip',\n})\nexport class PupaTooltipDirective implements OnChanges, OnDestroy, AfterViewInit {\n  @Input() public tooltipHideOnHover: boolean = true;\n  @Input() public tooltipDisabled: boolean = false;\n  @Input() public tooltipDelayMs: number = 0;\n\n  @Input() public pupaTooltip: Nullable<string> = null;\n  @Input() public tooltipContentTemplate: Nullable<TemplateRef<unknown>> = null;\n\n  public readonly isOpened$: Observable<boolean> = this.tooltipService.isOpened$;\n  private readonly isDisabled$: Observable<boolean> = this.tooltipService.isDisabled$;\n\n  private readonly triggerMouseEnter$: Observable<MouseEvent> = fromEvent<MouseEvent>(\n    this.triggerRef.nativeElement,\n    'mouseenter'\n  );\n  private readonly triggerMouseLeave$: Observable<MouseEvent> = fromEvent<MouseEvent>(\n    this.triggerRef.nativeElement,\n    'mouseleave'\n  );\n\n  private isMouseOverElement: boolean = false;\n\n  private readonly subscription: Subscription = new Subscription();\n  constructor(private readonly tooltipService: TooltipService, public readonly triggerRef: ElementRef<HTMLElement>) {}\n\n  public ngAfterViewInit(): void {\n    this.registerTooltipTriggerRef();\n\n    this.subscription.add(this.processTriggerMouseEnterEvent());\n    this.subscription.add(this.processTriggerMouseLeaveEvent());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processDisabledChanges(changes?.tooltipDisabled);\n    this.processHideOnTooltipHoverChanges(changes?.tooltipHideOnHover);\n    this.processTooltipContentChanges(changes?.pupaTooltip);\n    this.processTooltipContentTemplateChanges(changes?.tooltipContentTemplate);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processDisabledChanges(change: ComponentChange<this, boolean>): void {\n    if (isNil(change)) {\n      return;\n    }\n    this.tooltipService.setDisabledState(change.currentValue);\n  }\n\n  private processHideOnTooltipHoverChanges(change: ComponentChange<this, boolean>): void {\n    if (isNil(change)) {\n      return;\n    }\n    this.tooltipService.setTooltipHideOnHoverState(change.currentValue);\n  }\n\n  private processTooltipContentChanges(change: ComponentChange<this, string>): void {\n    const updatedValue: string | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.tooltipService.setTooltipContentState(updatedValue);\n  }\n\n  private processTooltipContentTemplateChanges(change: ComponentChange<this, TemplateRef<unknown>>): void {\n    const updatedValue: TemplateRef<unknown> | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n    this.tooltipService.setTooltipContentTemplateState(updatedValue);\n  }\n\n  private registerTooltipTriggerRef(): void {\n    this.tooltipService.registerTooltipTriggerRef(this.triggerRef);\n  }\n\n  private processTriggerMouseEnterEvent(): Subscription {\n    return this.triggerMouseEnter$\n      .pipe(\n        tap(() => {\n          this.isMouseOverElement = true;\n        }),\n        delay(this.tooltipDelayMs),\n        filter(() => this.isMouseOverElement),\n        switchMap(() =>\n          this.isDisabled$.pipe(\n            take(1),\n            filterFalsy(),\n            filter(() => !Boolean(isTabletDevice()))\n          )\n        )\n      )\n      .subscribe(() => {\n        this.tooltipService.processTriggerMouseEnter();\n      });\n  }\n\n  private processTriggerMouseLeaveEvent(): Subscription {\n    return this.triggerMouseLeave$\n      .pipe(\n        tap(() => {\n          this.isMouseOverElement = false;\n        })\n      )\n      .subscribe(() => {\n        this.tooltipService.processTriggerMouseLeave();\n      });\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { PupaThemeWrapperModule } from '../theme-wrapper/theme-wrapper.module';\nimport { TooltipContentComponent } from './components/tooltip-content/tooltip-content.component';\nimport { PupaTooltipDirective } from './directives/tooltip.directive';\n\nconst INTERNAL_COMPONENTS: Type<unknown>[] = [TooltipContentComponent];\n\nconst EXTERNAL_DIRECTIVES: Type<unknown>[] = [PupaTooltipDirective];\n\nconst IMPORTS: (Type<unknown> | ModuleWithProviders<unknown>)[] = [CommonModule, PupaThemeWrapperModule, OverlayModule];\n\n@NgModule({\n  declarations: [...INTERNAL_COMPONENTS, ...EXTERNAL_DIRECTIVES],\n  imports: IMPORTS,\n  exports: [...EXTERNAL_DIRECTIVES],\n})\nexport class PupaTooltipModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-breadcrumb-separator',\n  templateUrl: './breadcrumb-separator.component.html',\n  styleUrls: ['./breadcrumb-separator.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbSeparatorComponent {}\n","<pupa-icon class=\"separator\" name=\"app-chevron-right\"></pupa-icon>\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { filterTruthy } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Component({\n  selector: 'pupa-breadcrumb-unfit-trigger',\n  templateUrl: './breadcrumb-unfit-trigger.component.html',\n  styleUrls: ['./breadcrumb-unfit-trigger.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbUnfitTriggerComponent {\n  @Input() public active: boolean = false;\n\n  @ViewChild('trigger') private readonly triggerRef: ElementRef<HTMLElement>;\n\n  public readonly isFocused$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public onKeyDown(_event: MouseEvent): void {\n    this.isFocused$.pipe(take(1), filterTruthy()).subscribe(() => {\n      this.triggerRef.nativeElement?.click();\n    });\n  }\n\n  public handleFocusEvent(): void {\n    this.isFocused$.next(true);\n  }\n\n  public handleBlurEvent(): void {\n    this.isFocused$.next(false);\n  }\n}\n","<div\n  class=\"trigger\"\n  [tabindex]=\"0\"\n  [class.trigger_active]=\"active\"\n  #trigger\n  (focus)=\"handleFocusEvent()\"\n  (blur)=\"handleBlurEvent()\"\n  (keydown.enter)=\"onKeyDown($event)\"\n>\n  ...\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { filterTruthy, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { BreadcrumbContext } from '../../../../declarations/interfaces/breadcrumb-context.interface';\nimport { Breadcrumb } from '../../../../declarations/interfaces/breadcrumb.interface';\n\n@Component({\n  selector: 'pupa-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  styleUrls: ['./breadcrumb.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbComponent {\n  @Input() public breadcrumb: Nullable<Breadcrumb> = null;\n  @Input() public active: boolean = false;\n  @Input() public template: TemplateRef<BreadcrumbContext>;\n\n  @ViewChild('breadcrumb') private readonly breadcrumbRef: ElementRef<HTMLElement>;\n\n  public readonly isFocused$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public onKeyDown(_event: MouseEvent): void {\n    this.isFocused$.pipe(take(1), filterTruthy()).subscribe(() => {\n      this.breadcrumbRef.nativeElement?.click();\n    });\n  }\n\n  public handleFocusEvent(): void {\n    this.isFocused$.next(true);\n  }\n\n  public handleBlurEvent(): void {\n    this.isFocused$.next(false);\n  }\n}\n","<ng-container *ngIf=\"breadcrumb\">\n  <ng-container [ngSwitch]=\"active\">\n    <ng-container *ngSwitchCase=\"true\">\n      <ng-container\n        [ngTemplateOutlet]=\"blockTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: breadcrumb }\"\n      ></ng-container>\n    </ng-container>\n    <ng-container *ngSwitchDefault>\n      <ng-container\n        [ngTemplateOutlet]=\"linkTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: breadcrumb }\"\n      ></ng-container>\n    </ng-container>\n  </ng-container>\n</ng-container>\n\n<ng-template #linkTemplate let-breadcrumb>\n  <a\n    class=\"breadcrumb\"\n    #breadcrumb\n    [tabindex]=\"0\"\n    [id]=\"breadcrumb.id\"\n    [routerLink]=\"breadcrumb.routerLink\"\n    [pupaTooltip]\n    [tooltipContentTemplate]=\"breadcrumbTemplate\"\n    (focus)=\"handleFocusEvent()\"\n    (blur)=\"handleBlurEvent()\"\n    (keydown.enter)=\"onKeyDown($event)\"\n  >\n    <ng-container [ngTemplateOutlet]=\"breadcrumbTemplate\"></ng-container>\n  </a>\n</ng-template>\n\n<ng-template #blockTemplate let-breadcrumb>\n  <div\n    class=\"breadcrumb breadcrumb_active\"\n    [tabindex]=\"0\"\n    [id]=\"breadcrumb.id\"\n    [pupaTooltip]\n    [tooltipContentTemplate]=\"breadcrumbTemplate\"\n  >\n    <ng-container [ngTemplateOutlet]=\"breadcrumbTemplate\"></ng-container>\n  </div>\n</ng-template>\n\n<ng-template #breadcrumbTemplate>\n  <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: breadcrumb }\"></ng-container>\n</ng-template>\n","import { Nullable } from '@bimeister/utilities';\nimport { Breadcrumb } from '../interfaces/breadcrumb.interface';\nimport { BreadcrumbsData } from '../interfaces/breadcrumbs-data.interface';\nimport { BreadcrumbsParts } from '../interfaces/breadcrumbs-parts.interface';\n\nconst UNFIT_BREADCRUMB_DESKTOP_FIRST_INDEX: number = 1;\nconst UNFIT_BREADCRUMB_MOBILE_FIRST_INDEX: number = 0;\n\ninterface WidthWithIndex {\n  widthPx: number;\n  index: number;\n}\ninterface AccumulatedValue {\n  freeSpaceWidthPx: number;\n  fitBreadcrumbsIndexes: number[];\n}\n\nexport class BreadcrumbsProducer {\n  private readonly breadcrumbs: Breadcrumb[];\n  private readonly breadcrumbsContainerWidthPx: number;\n  private readonly isContainerFullFitted: boolean;\n  private readonly breadcrumbWidthList: number[];\n  private readonly isMobile: boolean;\n  private readonly unfitBreadcrumbTriggerWidthPx: number;\n  private readonly hasRoot: boolean;\n\n  constructor({\n    breadcrumbs,\n    breadcrumbsContainerWidthPx,\n    isContainerFullFitted,\n    breadcrumbWidthList,\n    isMobile,\n    unfitBreadcrumbTriggerWidthPx,\n  }: BreadcrumbsData) {\n    this.breadcrumbs = breadcrumbs;\n    this.breadcrumbsContainerWidthPx = breadcrumbsContainerWidthPx;\n    this.isContainerFullFitted = isContainerFullFitted;\n    this.breadcrumbWidthList = breadcrumbWidthList;\n    this.isMobile = isMobile;\n    this.unfitBreadcrumbTriggerWidthPx = unfitBreadcrumbTriggerWidthPx;\n    this.hasRoot = breadcrumbs.length > 1;\n  }\n\n  public getBreadcrumbsParts(): BreadcrumbsParts {\n    const rootBreadcrumbWidth: number = this.getRootBreadcrumbWidthPx();\n    const moreBreadcrumbsTriggerWidthPx: number = this.isContainerFullFitted ? 0 : this.unfitBreadcrumbTriggerWidthPx;\n\n    const freeSpaceWidthInitial: number =\n      this.breadcrumbsContainerWidthPx - rootBreadcrumbWidth - moreBreadcrumbsTriggerWidthPx;\n\n    const unfitBreadcrumbFirstIndex: number = this.isMobile\n      ? UNFIT_BREADCRUMB_MOBILE_FIRST_INDEX\n      : UNFIT_BREADCRUMB_DESKTOP_FIRST_INDEX;\n\n    const lastBreadcrumbIndex: number = this.breadcrumbs.length - 1;\n    const parsedUnfitBreadcrumbFirstIndex: number = Math.min(unfitBreadcrumbFirstIndex, lastBreadcrumbIndex);\n\n    const fitBreadcrumbsIndexes: number[] = BreadcrumbsProducer.getFitBreadcrumbIndexes(\n      freeSpaceWidthInitial,\n      this.breadcrumbWidthList,\n      parsedUnfitBreadcrumbFirstIndex\n    );\n\n    const firstFitBreadcrumbIndex: number = fitBreadcrumbsIndexes[0];\n    const unfitBreadcrumbs: Breadcrumb[] = this.breadcrumbs.slice(unfitBreadcrumbFirstIndex, firstFitBreadcrumbIndex);\n\n    const fitBreadcrumbs: Breadcrumb[] = fitBreadcrumbsIndexes.map(\n      (capacityIndex: number) => this.breadcrumbs[capacityIndex]\n    );\n    const rootBreadcrumb: Nullable<Breadcrumb> = this.hasRoot ? this.breadcrumbs[0] : null;\n\n    return { unfitBreadcrumbs, fitBreadcrumbs, rootBreadcrumb };\n  }\n\n  private getRootBreadcrumbWidthPx(): number {\n    return !this.hasRoot || this.isMobile ? 0 : this.breadcrumbWidthList[0];\n  }\n\n  private static getFitBreadcrumbIndexes(\n    freeSpacePx: number,\n    breadcrumbWidthList: number[],\n    unfitBreadcrumbFirstIndex: number = 0\n  ): number[] {\n    const initialReduceData: AccumulatedValue = {\n      freeSpaceWidthPx: freeSpacePx,\n      fitBreadcrumbsIndexes: [],\n    };\n\n    const result: AccumulatedValue = breadcrumbWidthList\n      .map((widthPx: number, index: number) => ({\n        widthPx,\n        index,\n      }))\n      .filter(({ index }: WidthWithIndex) => index >= unfitBreadcrumbFirstIndex)\n      .reduceRight((accumulatedValue: AccumulatedValue, currentWidthWithIndex: WidthWithIndex) => {\n        const { freeSpaceWidthPx, fitBreadcrumbsIndexes }: AccumulatedValue = accumulatedValue;\n        const { widthPx, index }: WidthWithIndex = currentWidthWithIndex;\n\n        const remainingFreeSpacePx: number = freeSpaceWidthPx - widthPx;\n        if (remainingFreeSpacePx < 0) {\n          return accumulatedValue;\n        }\n\n        return {\n          freeSpaceWidthPx: remainingFreeSpacePx,\n          fitBreadcrumbsIndexes: [...fitBreadcrumbsIndexes, index],\n        };\n      }, initialReduceData);\n\n    return result.fitBreadcrumbsIndexes.reverse();\n  }\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { BreadcrumbContext } from '../../../declarations/interfaces/breadcrumb-context.interface';\n\n@Directive({\n  selector: '[pupaBreadcrumbTemplate]',\n})\nexport class PupaBreadcrumbTemplateDirective {\n  constructor(public readonly templateRef: TemplateRef<BreadcrumbContext>) {}\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  distinctUntilSerializedChanged,\n  filterNotEmpty,\n  filterNotNil,\n  isEmpty,\n  isNil,\n  Nullable,\n  resizeObservable,\n} from '@bimeister/utilities';\nimport { animationFrameScheduler, BehaviorSubject, combineLatest, merge, Observable, of, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, observeOn, switchMap } from 'rxjs/operators';\nimport { BreadcrumbsProducer } from '../../../../declarations/classes/breadcrumbs-producer.class';\nimport { BreadcrumbContext } from '../../../../declarations/interfaces/breadcrumb-context.interface';\nimport { Breadcrumb } from '../../../../declarations/interfaces/breadcrumb.interface';\nimport { BreadcrumbsParts } from '../../../../declarations/interfaces/breadcrumbs-parts.interface';\nimport { PupaBreadcrumbTemplateDirective } from '../../directives/breadcrumb-template.directive';\nimport { ComponentChanges, ComponentChange, Uuid, ClientUiStateHandlerService } from '@bimeister/pupakit.common';\nimport { DropdownMenuContextService } from '../../../dropdown-menu/services/dropdown-menu-context.service';\n\n@Component({\n  selector: 'pupa-breadcrumbs',\n  templateUrl: './breadcrumbs.component.html',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [DropdownMenuContextService],\n})\nexport class BreadcrumbsComponent implements OnChanges, OnDestroy, AfterViewInit {\n  @Input() public breadcrumbs: Breadcrumb[] = [];\n  public readonly breadcrumbs$: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n\n  @Output() public clickedBreadcrumbId: EventEmitter<Uuid> = new EventEmitter<Uuid>();\n\n  @ViewChild('breadcrumbs') private readonly breadcrumbsContainerRef: ElementRef<HTMLElement>;\n  @ViewChildren('breadcrumb') private readonly breadcrumbList: QueryList<ElementRef<HTMLElement>>;\n  @ViewChild('unfitBreadcrumbsTrigger') private readonly unfitBreadcrumbsTriggerRef: ElementRef<HTMLElement>;\n  @ViewChild('defaultInnerTemplate') private readonly defaultInnerTemplateRef: TemplateRef<BreadcrumbContext>;\n\n  @ContentChild(PupaBreadcrumbTemplateDirective) public readonly breadcrumbTemplate: PupaBreadcrumbTemplateDirective;\n\n  private readonly breadcrumbsContainer$: BehaviorSubject<Nullable<HTMLElement>> = new BehaviorSubject<\n    Nullable<HTMLDivElement>\n  >(null);\n\n  private readonly breadcrumbList$: BehaviorSubject<HTMLElement[]> = new BehaviorSubject<HTMLElement[]>([]);\n  private readonly breadcrumbWidthList$: BehaviorSubject<number[]> = new BehaviorSubject<number[]>([]);\n  private readonly unfitBreadcrumbTriggerWidthPx$: BehaviorSubject<Nullable<number>> = new BehaviorSubject<\n    Nullable<number>\n  >(null);\n  public readonly isContainerFullFitted$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  private readonly breadcrumbsContainerWidthPx$: Observable<number> = this.breadcrumbsContainer$.pipe(\n    observeOn(animationFrameScheduler),\n    distinctUntilChanged(),\n    switchMap((element: Nullable<HTMLDivElement>) => (!isNil(element) ? resizeObservable(element) : of([]))),\n    map(([entry]: ResizeObserverEntry[]) => (!isNil(entry) ? entry.contentRect.width : 0))\n  );\n\n  public readonly isMobile$: Observable<boolean> = this.clientUiStateHandlerService.breakpointIsLessThanMd$;\n\n  public readonly unfitBreadcrumbs$: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n  public readonly fitBreadcrumbs$: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n  public readonly rootBreadcrumb$: BehaviorSubject<Breadcrumb | null> = new BehaviorSubject<Breadcrumb | null>(null);\n\n  private readonly subscription: Subscription = new Subscription();\n  constructor(\n    private readonly clientUiStateHandlerService: ClientUiStateHandlerService,\n    private readonly changeDetectorRef: ChangeDetectorRef\n  ) {}\n\n  public ngAfterViewInit(): void {\n    this.setBreadcrumbsContainer();\n    this.setOverflowBreadcrumbTriggerWidth();\n    this.subscription.add(this.setBreadcrumbListOnChanges());\n\n    this.subscription.add(this.calculateBreadcrumbsWidths());\n    this.subscription.add(this.calculateIsContainerFullFitted());\n    this.subscription.add(this.calculateBreadcrumbsPlacement());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processBreadcrumbChange(changes?.breadcrumbs);\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public getBreadcrumbTemplate(): TemplateRef<BreadcrumbContext> {\n    return this.breadcrumbTemplate?.templateRef ?? this.defaultInnerTemplateRef;\n  }\n\n  public handleClickOnUnfitTrigger(): void {\n    this.detectChanges();\n  }\n\n  public emitClickedId(clickedId: Uuid, isActive: boolean = false): void {\n    if (isActive) {\n      return;\n    }\n    this.clickedBreadcrumbId.emit(clickedId);\n  }\n\n  private processBreadcrumbChange(change: ComponentChange<this, Breadcrumb[]>): void {\n    const updatedBreadcrumbs: Breadcrumb[] | undefined = change?.currentValue;\n\n    if (!Array.isArray(updatedBreadcrumbs) || isEmpty(updatedBreadcrumbs)) {\n      return;\n    }\n    this.breadcrumbs$.next(updatedBreadcrumbs);\n  }\n\n  private setBreadcrumbsContainer(): void {\n    this.breadcrumbsContainer$.next(this.breadcrumbsContainerRef.nativeElement);\n  }\n\n  private setOverflowBreadcrumbTriggerWidth(): void {\n    const triggerElement: HTMLElement = this.unfitBreadcrumbsTriggerRef.nativeElement;\n    this.unfitBreadcrumbTriggerWidthPx$.next(triggerElement.offsetWidth);\n  }\n\n  private setBreadcrumbListOnChanges(): Subscription {\n    return merge(this.breadcrumbList.changes, of(this.breadcrumbList)).subscribe(\n      (breadcrumbList: QueryList<ElementRef<HTMLElement>>) => {\n        this.breadcrumbList$.next(breadcrumbList.map(({ nativeElement }: ElementRef<HTMLElement>) => nativeElement));\n      }\n    );\n  }\n\n  private calculateBreadcrumbsWidths(): Subscription {\n    return this.breadcrumbsContainerWidthPx$\n      .pipe(\n        observeOn(animationFrameScheduler),\n        switchMap(() => this.breadcrumbList$),\n        filterNotEmpty(),\n        map((breadcrumbElementList: HTMLElement[]) =>\n          breadcrumbElementList.map(({ offsetWidth }: HTMLElement) => offsetWidth)\n        )\n      )\n      .subscribe((elementWidthList: number[]) => this.breadcrumbWidthList$.next(elementWidthList));\n  }\n\n  private calculateIsContainerFullFitted(): Subscription {\n    return combineLatest([this.breadcrumbsContainerWidthPx$, this.breadcrumbWidthList$])\n      .pipe(\n        map(([containerWidth, widthList]: [number, number[]]) => {\n          const sumOfWidths: number = widthList.reduce(\n            (partialSum: number, currentWidth: number) => partialSum + currentWidth,\n            0\n          );\n          return sumOfWidths <= containerWidth;\n        })\n      )\n      .subscribe((isContainerFullFitted: boolean) => this.isContainerFullFitted$.next(isContainerFullFitted));\n  }\n\n  private calculateBreadcrumbsPlacement(): Subscription {\n    return combineLatest([\n      this.breadcrumbs$,\n      this.breadcrumbsContainerWidthPx$,\n      this.isContainerFullFitted$,\n      this.breadcrumbWidthList$.pipe(filterNotEmpty()),\n      this.isMobile$,\n      this.unfitBreadcrumbTriggerWidthPx$.pipe(filterNotNil()),\n    ])\n      .pipe(\n        map(\n          ([\n            breadcrumbs,\n            breadcrumbsContainerWidthPx,\n            isContainerFullFitted,\n            breadcrumbWidthList,\n            isMobile,\n            unfitBreadcrumbTriggerWidthPx,\n          ]: [Breadcrumb[], number, boolean, number[], boolean, number]) =>\n            new BreadcrumbsProducer({\n              breadcrumbs,\n              breadcrumbsContainerWidthPx,\n              isContainerFullFitted,\n              breadcrumbWidthList,\n              isMobile,\n              unfitBreadcrumbTriggerWidthPx,\n            }).getBreadcrumbsParts()\n        ),\n        distinctUntilSerializedChanged()\n      )\n      .subscribe(({ unfitBreadcrumbs, fitBreadcrumbs, rootBreadcrumb }: BreadcrumbsParts) => {\n        this.unfitBreadcrumbs$.next(unfitBreadcrumbs);\n        this.fitBreadcrumbs$.next(fitBreadcrumbs);\n        this.rootBreadcrumb$.next(rootBreadcrumb);\n        this.detectChanges();\n      });\n  }\n\n  private detectChanges(): void {\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<ng-container\n  [ngTemplateOutlet]=\"mainTemplate\"\n  [ngTemplateOutletContext]=\"{ breadcrumbTemplate: getBreadcrumbTemplate() }\"\n></ng-container>\n\n<ng-content></ng-content>\n\n<ng-template #mainTemplate let-breadcrumbTemplate=\"breadcrumbTemplate\">\n  <div class=\"breadcrumbs breadcrumbs_hidden\" [tabindex]=\"-1\" #breadcrumbs>\n    <ng-container *ngFor=\"let breadcrumb of breadcrumbs$ | async; let isActive = last\">\n      <div class=\"breadcrumbs__breadcrumb-wrapper\" #breadcrumb>\n        <pupa-breadcrumb\n          [template]=\"breadcrumbTemplate\"\n          [breadcrumb]=\"breadcrumb\"\n          [active]=\"isActive\"\n        ></pupa-breadcrumb>\n        <pupa-breadcrumb-separator *ngIf=\"!isActive\"></pupa-breadcrumb-separator>\n      </div>\n    </ng-container>\n\n    <div class=\"breadcrumbs__breadcrumb-wrapper\" #unfitBreadcrumbsTrigger>\n      <pupa-breadcrumb-unfit-trigger></pupa-breadcrumb-unfit-trigger>\n      <pupa-breadcrumb-separator></pupa-breadcrumb-separator>\n    </div>\n  </div>\n\n  <div class=\"breadcrumbs breadcrumbs_visible-layer\">\n    <ng-container *ngIf=\"!(isMobile$ | async)\">\n      <div class=\"breadcrumbs__breadcrumb-wrapper\" *ngIf=\"rootBreadcrumb$ | async as rootBreadcrumb\">\n        <pupa-breadcrumb\n          [template]=\"breadcrumbTemplate\"\n          [breadcrumb]=\"rootBreadcrumb\"\n          (click)=\"emitClickedId(rootBreadcrumb.id)\"\n        ></pupa-breadcrumb>\n        <pupa-breadcrumb-separator></pupa-breadcrumb-separator>\n      </div>\n    </ng-container>\n\n    <div class=\"breadcrumbs__breadcrumb-wrapper\" *ngIf=\"!(isContainerFullFitted$ | async)\">\n      <div #dropdown=\"pupaDropdown\" pupaDropdown>\n        <pupa-breadcrumb-unfit-trigger\n          [active]=\"dropdown.opened$ | async\"\n          (click)=\"handleClickOnUnfitTrigger()\"\n        ></pupa-breadcrumb-unfit-trigger>\n      </div>\n\n      <pupa-dropdown-menu *pupaDropdownTemplate=\"dropdown; let dropdownRef\" [dropdownRef]=\"dropdownRef\">\n        <pupa-dropdown-menu-item\n          *ngFor=\"let breadcrumb of unfitBreadcrumbs$ | async\"\n          [id]=\"breadcrumb.id\"\n          [routerLink]=\"breadcrumb.routerLink\"\n          (select)=\"emitClickedId(breadcrumb.id)\"\n        >\n          <ng-container\n            [ngTemplateOutlet]=\"breadcrumbTemplate\"\n            [ngTemplateOutletContext]=\"{ $implicit: breadcrumb }\"\n          ></ng-container>\n        </pupa-dropdown-menu-item>\n      </pupa-dropdown-menu>\n\n      <pupa-breadcrumb-separator></pupa-breadcrumb-separator>\n    </div>\n\n    <ng-container *ngFor=\"let breadcrumb of fitBreadcrumbs$ | async; let isActive = last\">\n      <div class=\"breadcrumbs__breadcrumb-wrapper\">\n        <pupa-breadcrumb\n          [template]=\"breadcrumbTemplate\"\n          [breadcrumb]=\"breadcrumb\"\n          [active]=\"isActive\"\n          (click)=\"emitClickedId(breadcrumb.id, isActive)\"\n        ></pupa-breadcrumb>\n        <pupa-breadcrumb-separator *ngIf=\"!isActive\"></pupa-breadcrumb-separator>\n      </div>\n    </ng-container>\n  </div>\n</ng-template>\n\n<ng-template #defaultInnerTemplate let-breadcrumb>\n  {{ breadcrumb.name }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { appChevronRightIcon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaButtonsModule } from '../buttons/buttons.module';\nimport { PupaDropdownMenuModule } from '../dropdown-menu/dropdown-menu.module';\nimport { PupaDropdownModule } from '../dropdown/dropdown.module';\nimport { PupaTooltipModule } from '../tooltip/tooltip.module';\nimport { BreadcrumbSeparatorComponent } from './components/breadcrumb-separator/breadcrumb-separator.component';\nimport { BreadcrumbUnfitTriggerComponent } from './components/breadcrumb-unfit-trigger/breadcrumb-unfit-trigger.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\nimport { PupaBreadcrumbTemplateDirective } from './directives/breadcrumb-template.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  BreadcrumbsComponent,\n  BreadcrumbComponent,\n  BreadcrumbSeparatorComponent,\n  BreadcrumbUnfitTriggerComponent,\n];\nconst DIRECTIVES: Type<unknown>[] = [PupaBreadcrumbTemplateDirective];\n\nconst DECLARATIONS: Type<unknown>[] = [...COMPONENTS, ...DIRECTIVES];\nconst EXPORTS: Type<unknown>[] = [...DECLARATIONS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [\n    CommonModule,\n    RouterModule,\n    PupaIconsModule.forFeature([appChevronRightIcon]),\n    PupaButtonsModule,\n    PupaDropdownModule,\n    PupaDropdownMenuModule,\n    PupaTooltipModule,\n  ],\n  exports: [...EXPORTS],\n})\nexport class PupaBreadcrumbsModule {}\n","import {\n  filterNotNil,\n  isEmpty,\n  isNil,\n  Nullable,\n  resizeObservable,\n  shareReplayWithRefCount,\n  VOID,\n} from '@bimeister/utilities';\nimport { asyncScheduler, BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map, observeOn, subscribeOn, switchMap, take } from 'rxjs/operators';\nimport { ScrollableComponent } from '../../../components/scrollable/components/scrollable/scrollable.component';\n\nexport abstract class TabsServiceBase<T> {\n  protected readonly tabNameToHtmlElementMap: Map<string, HTMLElement> = new Map<string, HTMLElement>();\n  private readonly activeTabNameState$: BehaviorSubject<Nullable<T>> = new BehaviorSubject<Nullable<T>>(null);\n  public readonly activeTabName$: Observable<Nullable<T>> = this.activeTabNameState$.asObservable();\n\n  protected readonly hostElement$: BehaviorSubject<Nullable<HTMLElement>> = new BehaviorSubject<Nullable<HTMLElement>>(\n    null\n  );\n  protected readonly scrollable$: BehaviorSubject<Nullable<ScrollableComponent>> = new BehaviorSubject<\n    Nullable<ScrollableComponent>\n  >(null);\n  protected readonly tabsHtmlElement$: BehaviorSubject<Nullable<HTMLElement>> = new BehaviorSubject<\n    Nullable<HTMLElement>\n  >(null);\n\n  private readonly activeHtmlElement$: Observable<HTMLElement> = this.activeTabName$.pipe(\n    filterNotNil(),\n    map((activeTabName: T) => this.tabNameToHtmlElementMap.get(JSON.stringify(activeTabName))),\n    shareReplayWithRefCount()\n  );\n\n  private readonly tabsContainerResize$: Observable<ResizeObserverEntry[]> = this.tabsHtmlElement$.pipe(\n    filterNotNil(),\n    switchMap((tabsHtmlElement: HTMLElement) => resizeObservable(tabsHtmlElement))\n  );\n\n  private readonly refresh$: BehaviorSubject<void> = new BehaviorSubject<void>(VOID);\n\n  public readonly railHighlighterOffsetLeftPx$: Observable<number> = combineLatest([\n    this.activeHtmlElement$.pipe(filterNotNil()),\n    this.tabsHtmlElement$.pipe(filterNotNil()),\n    this.tabsContainerResize$,\n    this.refresh$,\n  ]).pipe(\n    observeOn(asyncScheduler),\n    map(([activeHtmlElement, tabsHtmlElement]: [HTMLElement, HTMLElement, ResizeObserverEntry[], void]) => {\n      const activeClientRect: ClientRect = activeHtmlElement.getBoundingClientRect();\n      const tabsClientRect: ClientRect = tabsHtmlElement.getBoundingClientRect();\n      return activeClientRect.left - tabsClientRect.left;\n    })\n  );\n  public readonly railHighlighterWidthPx$: Observable<number> = combineLatest([\n    this.activeHtmlElement$,\n    this.tabsContainerResize$,\n    this.refresh$,\n  ]).pipe(\n    observeOn(asyncScheduler),\n    map(([activeHtmlElement]: [HTMLElement, ResizeObserverEntry[], void]) => activeHtmlElement.clientWidth)\n  );\n\n  private tabNames: T[] = [];\n\n  private readonly isContentDraggingState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isContentDragging$: Observable<boolean> = this.isContentDraggingState$.pipe(distinctUntilChanged());\n\n  public registerTab(tabName: T): void {\n    this.tabNames.push(tabName);\n\n    this.refresh$.next();\n  }\n\n  public unregisterTab(tabName: T): void {\n    this.tabNames = this.tabNames.filter((tab: T) => tab !== tabName);\n\n    this.resetActiveTabIfUnregisteredTabIsActive(tabName);\n\n    this.refresh$.next();\n  }\n\n  public setInitialTab(): void {\n    this.activeTabName$\n      .pipe(\n        take(1),\n        filter((activeTab: Nullable<T>) => isNil(activeTab) && !isEmpty(this.tabNames)),\n        subscribeOn(asyncScheduler)\n      )\n      .subscribe(() => {\n        this.setActiveTab(this.tabNames[0]);\n      });\n  }\n\n  public setActiveTab(tabName: T): void {\n    this.activeTabNameState$.next(tabName);\n    this.correctScrollLeftByTargetTab(tabName);\n  }\n\n  public registerTabsHtmlElement(htmlElement: HTMLElement): void {\n    this.tabsHtmlElement$.next(htmlElement);\n  }\n\n  public registerHostHtmlElement(htmlElement: HTMLElement): void {\n    this.hostElement$.next(htmlElement);\n  }\n\n  public registerScrollable(scrollable: ScrollableComponent): void {\n    this.scrollable$.next(scrollable);\n  }\n\n  public registerTabHtmlElement(tabName: T, htmlElement: HTMLElement): void {\n    this.tabNameToHtmlElementMap.set(JSON.stringify(tabName), htmlElement);\n  }\n\n  public setContentDraggingStateState(isContentDragging: boolean): void {\n    this.isContentDraggingState$.next(isContentDragging);\n  }\n\n  private correctScrollLeftByTargetTab(tabName: T): void {\n    const targetElement: HTMLElement = this.tabNameToHtmlElementMap.get(JSON.stringify(tabName));\n\n    if (isNil(targetElement)) {\n      return;\n    }\n\n    combineLatest([this.hostElement$.pipe(filterNotNil()), this.scrollable$.pipe(filterNotNil())])\n      .pipe(\n        take(1),\n        map(([hostElement, scrollable]: [HTMLElement, ScrollableComponent]) => {\n          const hostClientRect: ClientRect = hostElement.getBoundingClientRect();\n          const targetClientRect: ClientRect = targetElement.getBoundingClientRect();\n\n          const leftOffsetPx: number = targetClientRect.left - hostClientRect.left;\n          const rightOffsetPx: number = hostClientRect.right - targetClientRect.right;\n          const centerLeftDeltaPx: number = (hostClientRect.width - targetClientRect.width) / 2;\n          return [leftOffsetPx, rightOffsetPx, scrollable, centerLeftDeltaPx];\n        })\n      )\n      .subscribe(\n        ([leftOffsetPx, rightOffsetPx, scrollable, centerLeftDeltaPx]: [\n          number,\n          number,\n          ScrollableComponent,\n          number\n        ]) => {\n          const isNeedScrollToLeft: boolean = leftOffsetPx < rightOffsetPx;\n          const isNeedScrollToRight: boolean = rightOffsetPx < leftOffsetPx;\n\n          const isSmoothScroll: boolean = true;\n\n          if (isNeedScrollToLeft) {\n            scrollable.setScrollLeftByDelta(Math.ceil(-centerLeftDeltaPx + leftOffsetPx), isSmoothScroll);\n            return;\n          }\n\n          if (isNeedScrollToRight) {\n            scrollable.setScrollLeftByDelta(Math.ceil(-rightOffsetPx + centerLeftDeltaPx), isSmoothScroll);\n            return;\n          }\n        }\n      );\n  }\n\n  private resetActiveTabIfUnregisteredTabIsActive(removedTabName: T): void {\n    this.activeTabName$\n      .pipe(\n        take(1),\n        filter((activeTabName: T) => activeTabName === removedTabName)\n      )\n      .subscribe(() => this.setActiveTab(null));\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabsServiceBase } from '../classes/abstract/tabs-service-base.abstract';\n\nexport const BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN: InjectionToken<TabsServiceBase<unknown>> = new InjectionToken<\n  TabsServiceBase<unknown>\n>('BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN');\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ButtonGroupSize } from '../../../declarations/types/button-group-size.type';\nimport { TabsServiceBase } from '../../../declarations/classes/abstract/tabs-service-base.abstract';\n\n@Injectable()\nexport class ButtonGroupStateService<T> extends TabsServiceBase<T> {\n  private readonly buttonGroupSizeState$: BehaviorSubject<ButtonGroupSize> = new BehaviorSubject<ButtonGroupSize>('m');\n  public readonly buttonGroupSize$: Observable<ButtonGroupSize> = this.buttonGroupSizeState$.asObservable();\n\n  public setButtonGroupSize(size: ButtonGroupSize): void {\n    this.buttonGroupSizeState$.next(size);\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/button-group-state-service.token';\nimport { ButtonGroupStateService } from '../../services/button-group-state.service';\n\n@Component({\n  selector: 'pupa-button-group-container',\n  templateUrl: './button-group-container.component.html',\n  styleUrls: ['./button-group-container.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN,\n      useClass: ButtonGroupStateService,\n    },\n  ],\n})\nexport class ButtonGroupContainerComponent {}\n","<ng-content></ng-content>\n","import {\n  AfterContentInit,\n  Directive,\n  OnChanges,\n  OnDestroy,\n  QueryList,\n  TemplateRef,\n  TrackByFunction,\n} from '@angular/core';\nimport { ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterNotNil, isNil, Nullable } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { ContentTemplateNameDirective } from '../../interfaces/content-template-name.interface';\nimport { TabTemplateRef } from '../../interfaces/tab-template-ref.interface';\nimport { TabsServiceBase } from './tabs-service-base.abstract';\n\n@Directive()\nexport abstract class TabsContentBase<T, S extends TabsServiceBase<T>>\n  implements OnChanges, AfterContentInit, OnDestroy\n{\n  protected readonly subscription: Subscription = new Subscription();\n\n  public abstract destroyable: boolean;\n  protected readonly destroyable$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  public abstract tabTemplates: QueryList<ContentTemplateNameDirective<T>>;\n\n  protected readonly activeTabName$: Observable<T> = this.stateService.activeTabName$.pipe(filterNotNil());\n\n  public readonly activeTemplateRef$: BehaviorSubject<Nullable<TemplateRef<unknown>>> = new BehaviorSubject<\n    Nullable<TemplateRef<unknown>>\n  >(null);\n  public readonly nonDestroyableTemplateRefs$: BehaviorSubject<TabTemplateRef<T>[]> = new BehaviorSubject<\n    TabTemplateRef<T>[]\n  >([]);\n\n  constructor(protected readonly stateService: S) {}\n\n  public readonly tabTrackBy: TrackByFunction<TabTemplateRef<T>> = (index: number) => index;\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processInputDestroyableChanges(changes.destroyable?.currentValue);\n  }\n\n  public ngAfterContentInit(): void {\n    this.subscription.add(this.processActiveTabChanges());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processInputDestroyableChanges(destroyable: Nullable<boolean>): void {\n    if (isNil(destroyable)) {\n      return;\n    }\n\n    this.destroyable$.next(destroyable);\n  }\n\n  private processActiveTabChanges(): Subscription {\n    return combineLatest([this.destroyable$, this.activeTabName$]).subscribe(\n      ([destroyable, activeTabName]: [boolean, T]) => {\n        if (destroyable) {\n          const targetTemplate: ContentTemplateNameDirective<T> = this.tabTemplates.find(\n            (template: ContentTemplateNameDirective<T>) => template.getTemplateName() === activeTabName\n          );\n          this.activeTemplateRef$.next(targetTemplate.templateRef);\n          return;\n        }\n\n        const templates: TabTemplateRef<T>[] = this.tabTemplates.map((template: ContentTemplateNameDirective<T>) => ({\n          templateRef: template.templateRef,\n          name: template.getTemplateName(),\n          isActive: template.getTemplateName() === activeTabName,\n        }));\n\n        this.nonDestroyableTemplateRefs$.next(templates);\n      }\n    );\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { ContentTemplateNameDirective } from '../../../declarations/interfaces/content-template-name.interface';\n\n@Directive({\n  selector: '[pupaButtonGroupItemContentTemplate]',\n})\nexport class ButtonGroupItemContentTemplateDirective<T> implements ContentTemplateNameDirective<T> {\n  @Input() public pupaButtonGroupItemContentTemplate: T;\n\n  constructor(public readonly templateRef: TemplateRef<unknown>) {}\n\n  public getTemplateName(): T {\n    return this.pupaButtonGroupItemContentTemplate;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  Inject,\n  Input,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/button-group-state-service.token';\nimport { TabsContentBase } from '../../../../declarations/classes/abstract/tabs-content-base.abstract';\nimport { ContentTemplateNameDirective } from '../../../../declarations/interfaces/content-template-name.interface';\nimport { ButtonGroupItemContentTemplateDirective } from '../../directives/button-group-item-content-template.directive';\nimport { ButtonGroupStateService } from '../../services/button-group-state.service';\n\n@Component({\n  selector: 'pupa-button-group-content',\n  templateUrl: './button-group-content.component.html',\n  styleUrls: ['./button-group-content.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonGroupContentComponent<T> extends TabsContentBase<T, ButtonGroupStateService<T>> {\n  @Input() public destroyable: boolean = true;\n\n  @ContentChildren(ButtonGroupItemContentTemplateDirective)\n  public tabTemplates: QueryList<ContentTemplateNameDirective<T>>;\n\n  constructor(@Inject(BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN) stateService: ButtonGroupStateService<T>) {\n    super(stateService);\n  }\n}\n","<ng-container\n  *ngIf=\"destroyable; else buttonGroupContent\"\n  [ngTemplateOutlet]=\"activeTemplateRef$ | async\"\n></ng-container>\n\n<ng-content></ng-content>\n\n<ng-template #buttonGroupContent>\n  <div\n    *ngFor=\"let buttonTemplate of nonDestroyableTemplateRefs$ | async; trackBy: tabTrackBy\"\n    class=\"button-group\"\n    [class.button-group_visible]=\"buttonTemplate.isActive\"\n  >\n    <ng-container [ngTemplateOutlet]=\"buttonTemplate.templateRef\"></ng-container>\n  </div>\n</ng-template>\n","import { Directive, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil, Nullable } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TabsServiceBase } from './tabs-service-base.abstract';\n\n@Directive()\nexport abstract class TabsItemBase<T, S extends TabsServiceBase<T>> implements OnChanges, OnInit, OnDestroy {\n  public abstract name: T;\n  public abstract isActive: Nullable<boolean>;\n  public abstract disabled: Nullable<boolean>;\n\n  protected readonly stateService: S = !isNil(this.containerService) ? this.containerService : this.tabsService;\n  public readonly isActive$: Observable<boolean> = this.stateService.activeTabName$.pipe(\n    map((activeTab: T | null) => activeTab === this.name)\n  );\n\n  public readonly isContentDragging$: Observable<boolean> = this.tabsService.isContentDragging$;\n\n  constructor(private readonly tabsService: S, private readonly containerService?: S) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processInputIsActiveChanges(changes.isActive?.currentValue);\n  }\n\n  public ngOnInit(): void {\n    this.stateService.registerTab(this.name);\n  }\n\n  public ngOnDestroy(): void {\n    this.stateService.unregisterTab(this.name);\n  }\n\n  public setAsActive(): void {\n    if (this.disabled || !isNil(this.isActive)) {\n      return;\n    }\n    this.stateService.setActiveTab(this.name);\n  }\n\n  private processInputIsActiveChanges(isActive: Nullable<boolean>): void {\n    if (this.disabled || !isActive) {\n      return;\n    }\n    queueMicrotask(() => this.stateService.setActiveTab(this.name));\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Nullable } from '@bimeister/utilities';\nimport { BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/button-group-state-service.token';\nimport { TabsItemBase } from '../../../../declarations/classes/abstract/tabs-item-base.abstract';\nimport { ButtonGroupStateService } from '../../services/button-group-state.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ButtonGroupSize } from '../../../../declarations/types/button-group-size.type';\n\n@Component({\n  selector: 'pupa-button-group-item',\n  templateUrl: './button-group-item.component.html',\n  styleUrls: ['./button-group-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ButtonGroupItemComponent<T> extends TabsItemBase<T, ButtonGroupStateService<T>> implements OnInit {\n  @Input() public name: T;\n  @Input() public isActive: Nullable<boolean>;\n  @Input() public disabled: Nullable<boolean>;\n\n  public readonly sizeClass$: Observable<string> = this.stateService.buttonGroupSize$.pipe(\n    map((size: ButtonGroupSize) => `button-group-item_${size}`)\n  );\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    stateService: ButtonGroupStateService<T>,\n    @Optional()\n    @Inject(BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN)\n    fromContainerStateService?: ButtonGroupStateService<T>\n  ) {\n    super(stateService, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.stateService.registerTabHtmlElement(this.name, this.elementRef.nativeElement);\n  }\n}\n","<div\n  class=\"button-group-item\"\n  [class.button-group-item_disabled]=\"disabled\"\n  [class.button-group-item_active]=\"isActive$ | async\"\n  [class]=\"sizeClass$ | async\"\n  (click)=\"setAsActive()\"\n>\n  <ng-content></ng-content>\n</div>\n","import { AfterViewChecked, ChangeDetectorRef, Directive, EventEmitter, NgZone, OnDestroy } from '@angular/core';\nimport { filterNotNil, isNil, Nullable, shareReplayWithRefCount } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { TabsServiceBase } from './tabs-service-base.abstract';\n\n@Directive()\nexport abstract class TabsBase<T, S extends TabsServiceBase<T>> implements AfterViewChecked, OnDestroy {\n  protected readonly subscription: Subscription = new Subscription();\n\n  public abstract readonly activeTabNameChange: EventEmitter<T>;\n\n  protected readonly stateService: S = !isNil(this.containerService) ? this.containerService : this.tabsService;\n  private readonly activeTabName$: Observable<Nullable<T>> = this.stateService.activeTabName$;\n  public readonly railHighlighterOffsetLeftTransform$: BehaviorSubject<string> = new BehaviorSubject<string>(null);\n  public readonly railHighlighterWidthPx$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n\n  public readonly isLeftGradient$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly isRightGradient$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isHorizontalScrollExist$: Observable<boolean> = combineLatest([\n    this.isLeftGradient$,\n    this.isRightGradient$,\n  ]).pipe(\n    map(([isLeftGradient, isRightGradient]: [boolean, boolean]) => isLeftGradient || isRightGradient),\n    distinctUntilChanged(),\n    shareReplayWithRefCount()\n  );\n\n  public readonly isContentDragging$: Observable<boolean> = this.tabsService.isContentDragging$;\n\n  constructor(\n    private readonly tabsService: S,\n    protected readonly changeDetectorRef: ChangeDetectorRef,\n    private readonly ngZone: NgZone,\n    private readonly containerService?: S\n  ) {\n    this.subscription.add(this.processActiveTabNameChanges());\n    this.subscription.add(this.processRailHighlighterOffsetLeftTransform());\n    this.subscription.add(this.processRailHighlighterWidthPx());\n  }\n\n  protected detectChanges(): void {\n    this.changeDetectorRef.detectChanges();\n  }\n\n  public ngAfterViewChecked(): void {\n    this.stateService.setInitialTab();\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public handleContentDragStart(): void {\n    this.tabsService.setContentDraggingStateState(true);\n    this.detectChanges();\n  }\n\n  public handleContentDragEnd(): void {\n    this.tabsService.setContentDraggingStateState(false);\n    this.detectChanges();\n  }\n\n  public setLeftGradient(isLeftGradient: boolean): void {\n    this.isLeftGradient$.next(isLeftGradient);\n    this.detectChanges();\n  }\n\n  public setRightGradient(isRightGradient: boolean): void {\n    this.isRightGradient$.next(isRightGradient);\n    this.detectChanges();\n  }\n\n  private processActiveTabNameChanges(): Subscription {\n    return this.activeTabName$.pipe(filterNotNil()).subscribe((activeTabName: T) => {\n      this.activeTabNameChange.emit(activeTabName);\n    });\n  }\n\n  private processRailHighlighterOffsetLeftTransform(): Subscription {\n    return this.stateService.railHighlighterOffsetLeftPx$\n      .pipe(map((railHighlighterOffsetLeftPx: number) => `translateX(${railHighlighterOffsetLeftPx}px)`))\n      .subscribe((transformRailHighlighterOffsetLeftPx: string) => {\n        this.ngZone.run(() => this.railHighlighterOffsetLeftTransform$.next(transformRailHighlighterOffsetLeftPx));\n      });\n  }\n\n  private processRailHighlighterWidthPx(): Subscription {\n    return this.stateService.railHighlighterWidthPx$.subscribe((processRailHighlighterWidthPx: number) => {\n      this.ngZone.run(() => this.railHighlighterWidthPx$.next(processRailHighlighterWidthPx));\n    });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/button-group-state-service.token';\nimport { TabsBase } from '../../../../declarations/classes/abstract/tabs-base.abstract';\nimport { ButtonGroupStateService } from '../../services/button-group-state.service';\nimport { ScrollableComponent } from '../../../scrollable/components/scrollable/scrollable.component';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { ButtonGroupSize } from '../../../../declarations/types/button-group-size.type';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n  selector: 'pupa-button-group',\n  templateUrl: './button-group.component.html',\n  styleUrls: ['./button-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [ButtonGroupStateService],\n})\nexport class ButtonGroupComponent<T> extends TabsBase<T, ButtonGroupStateService<T>> implements OnInit, OnChanges {\n  @Input() public size: ButtonGroupSize = 'm';\n\n  @ViewChild('buttonGroupContainer', { static: true })\n  private readonly buttonGroupContainerRef: ElementRef<HTMLElement>;\n  @ViewChild('scrollable', { static: true }) private readonly scrollable: ScrollableComponent;\n\n  @Output() public readonly activeTabNameChange: EventEmitter<T> = new EventEmitter<T>();\n\n  public readonly sizeClass$: Observable<string> = this.stateService.buttonGroupSize$.pipe(\n    map((size: ButtonGroupSize) => `button-group_${size}`)\n  );\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    stateService: ButtonGroupStateService<T>,\n    changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    @Optional()\n    @Inject(BUTTON_GROUP_CONTAINER_STATE_SERVICE_TOKEN)\n    fromContainerStateService?: ButtonGroupStateService<T>\n  ) {\n    super(stateService, changeDetectorRef, ngZone, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    this.stateService.registerHostHtmlElement(this.elementRef.nativeElement);\n    this.stateService.registerScrollable(this.scrollable);\n    this.stateService.registerTabsHtmlElement(this.buttonGroupContainerRef.nativeElement);\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    if (changes.hasOwnProperty('size')) {\n      this.processSizeChange(changes.size);\n    }\n  }\n\n  private processSizeChange(size: ComponentChange<this, ButtonGroupSize>): void {\n    this.stateService.setButtonGroupSize(size.currentValue);\n  }\n}\n","<pupa-scrollable\n  #scrollable\n  class=\"button-group\"\n  [class]=\"sizeClass$ | async\"\n  [invisibleScrollbars]=\"['horizontal', 'vertical']\"\n>\n  <div class=\"button-group__container\" #buttonGroupContainer>\n    <div class=\"button-group__rail-container\">\n      <div class=\"button-group__rail button-group-rail\">\n        <div\n          [style.width.px]=\"railHighlighterWidthPx$ | async\"\n          [style.transform]=\"railHighlighterOffsetLeftTransform$ | async\"\n          class=\"button-group-rail__highlighter\"\n        ></div>\n      </div>\n    </div>\n    <ng-content></ng-content>\n  </div>\n</pupa-scrollable>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaScrollableModule } from '../scrollable/scrollable.module';\nimport { ButtonGroupContainerComponent } from './components/button-group-container/button-group-container.component';\nimport { ButtonGroupContentComponent } from './components/button-group-content/button-group-content.component';\nimport { ButtonGroupItemComponent } from './components/button-group-item/button-group-item.component';\nimport { ButtonGroupComponent } from './components/button-group/button-group.component';\nimport { ButtonGroupItemContentTemplateDirective } from './directives/button-group-item-content-template.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  ButtonGroupComponent,\n  ButtonGroupItemComponent,\n  ButtonGroupContainerComponent,\n  ButtonGroupContentComponent,\n  ButtonGroupItemContentTemplateDirective,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [\n  ButtonGroupComponent,\n  ButtonGroupItemComponent,\n  ButtonGroupContainerComponent,\n  ButtonGroupContentComponent,\n  ButtonGroupItemContentTemplateDirective,\n];\n\n@NgModule({\n  declarations: [...COMPONENTS, ...DIRECTIVES],\n  imports: [CommonModule, PupaScrollableModule],\n  exports: [...COMPONENTS, ...DIRECTIVES],\n})\nexport class PupaButtonGroupModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-card-action',\n  templateUrl: './card-action.component.html',\n  styleUrls: ['./card-action.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardActionComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Nullable } from '@bimeister/utilities';\n\n@Component({\n  selector: 'pupa-card-container',\n  templateUrl: './card-container.component.html',\n  styleUrls: ['./card-container.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardContainerComponent {\n  @Input() public disabled: boolean = false;\n\n  @Input() public clickable: boolean = false;\n\n  @Input() public tabIndex: number = 0;\n  public get tabIndexAttribute(): Nullable<number> {\n    return this.clickable ? this.tabIndex : null;\n  }\n}\n","<div\n  class=\"container\"\n  [class.container_disabled]=\"disabled\"\n  [class.container_clickable]=\"clickable\"\n  [attr.tabindex]=\"tabIndexAttribute\"\n>\n  <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-card-cover',\n  templateUrl: './card-cover.component.html',\n  styleUrls: ['./card-cover.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardCoverComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-card-description',\n  templateUrl: './card-description.component.html',\n  styleUrls: ['./card-description.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardDescriptionComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-card-header',\n  templateUrl: './card-header.component.html',\n  styleUrls: ['./card-header.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardHeaderComponent {}\n","<div class=\"header\">\n  <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\ntype MaxRows = number | 'auto';\ntype LineClamp = number | 'none';\n\nconst DEFAULT_MAX_ROWS: MaxRows = 1;\n\n@Component({\n  selector: 'pupa-card-title',\n  templateUrl: './card-title.component.html',\n  styleUrls: ['./card-title.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardTitleComponent implements OnChanges {\n  @Input() public maxRows: MaxRows = DEFAULT_MAX_ROWS;\n  private readonly maxRows$: BehaviorSubject<MaxRows> = new BehaviorSubject<MaxRows>(DEFAULT_MAX_ROWS);\n\n  public readonly lineClamp$: Observable<LineClamp> = this.maxRows$.pipe(\n    distinctUntilChanged(),\n    map((maxRows: MaxRows) => (maxRows === 'auto' ? 'none' : maxRows))\n  );\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processMaxRowsChange(changes?.maxRows);\n  }\n\n  private processMaxRowsChange(change: ComponentChange<this, MaxRows>): void {\n    const updatedValue: MaxRows | undefined = change?.currentValue;\n\n    const isValidValue: boolean = updatedValue === 'auto' || (typeof updatedValue === 'number' && !isNaN(updatedValue));\n\n    if (!isValidValue) {\n      return;\n    }\n\n    this.maxRows$.next(updatedValue);\n  }\n}\n","<div class=\"card-title\" [style.--line-clamp]=\"lineClamp$ | async\">\n  <ng-content></ng-content>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CardSize } from '../../../declarations/types/card-size.type';\n\n@Injectable()\nexport class CardStateService {\n  public readonly size$: BehaviorSubject<CardSize> = new BehaviorSubject<CardSize>('large');\n  public readonly disabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly clickable$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public setSize(size: CardSize): void {\n    this.size$.next(size);\n  }\n\n  public setDisabledState(disabled: boolean): void {\n    this.disabled$.next(disabled);\n  }\n\n  public setClickableState(clickable: boolean): void {\n    this.clickable$.next(clickable);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { CardSize } from '../../../../declarations/types/card-size.type';\nimport { CardStateService } from '../../service/card-state.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\n\n@Component({\n  selector: 'pupa-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [CardStateService],\n})\nexport class CardComponent implements OnChanges {\n  @Input() public size: CardSize = 'large';\n  private readonly size$: Observable<CardSize> = this.cardStateService.size$.asObservable();\n  public readonly sizeClass$: Observable<string> = this.size$.pipe(map((size: CardSize) => `card_${size}`));\n\n  @Input() public disabled: boolean = false;\n  public readonly disabled$: Observable<boolean> = this.cardStateService.disabled$.asObservable();\n\n  @Input() public clickable: boolean = false;\n  public readonly clickable$: Observable<boolean> = this.cardStateService.clickable$.asObservable();\n\n  @Input() public tabIndex: number = 0;\n\n  constructor(private readonly cardStateService: CardStateService) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processDisabledChange(changes?.disabled);\n    this.processSizeChange(changes?.size);\n    this.processClickableChange(changes?.clickable);\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.cardStateService.setDisabledState(updatedValue);\n  }\n\n  private processSizeChange(change: ComponentChange<this, CardSize>): void {\n    const updatedValue: CardSize | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.cardStateService.setSize(updatedValue);\n  }\n\n  private processClickableChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.cardStateService.setClickableState(updatedValue);\n  }\n}\n","<div class=\"card\" [class]=\"sizeClass$ | async\">\n  <pupa-card-container [tabIndex]=\"tabIndex\" [disabled]=\"disabled$ | async\" [clickable]=\"clickable$ | async\">\n    <div class=\"card__inner-wrapper\">\n      <ng-content></ng-content>\n    </div>\n  </pupa-card-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { CardActionComponent } from './components/card-action/card-action.component';\nimport { CardContainerComponent } from './components/card-container/card-container.component';\nimport { CardCoverComponent } from './components/card-cover/card-cover.component';\nimport { CardDescriptionComponent } from './components/card-description/card-description.component';\nimport { CardHeaderComponent } from './components/card-header/card-header.component';\nimport { CardTitleComponent } from './components/card-title/card-title.component';\nimport { CardComponent } from './components/card/card.component';\n\nconst COMPONENTS: Type<unknown>[] = [\n  CardComponent,\n  CardCoverComponent,\n  CardHeaderComponent,\n  CardTitleComponent,\n  CardDescriptionComponent,\n  CardActionComponent,\n  CardContainerComponent,\n];\n\n@NgModule({\n  declarations: [...COMPONENTS],\n  imports: [CommonModule, PupaIconsModule],\n  exports: [...COMPONENTS],\n})\nexport class PupaCardModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CountColor } from '../../../../declarations/types/count-color.type';\nimport { CounterMode } from '../../../../declarations/types/counter-mode.type';\n\n@Component({\n  selector: 'pupa-counter',\n  templateUrl: './counter.component.html',\n  styleUrls: ['./counter.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CounterComponent {\n  @Input() public count: number;\n  @Input() public color: CountColor = 'neutral';\n  @Input() public mode: CounterMode = 'default';\n}\n","<div class=\"counter\" [ngClass]=\"'counter_' + color\" [ngSwitch]=\"mode\">\n  <ng-container *ngSwitchCase=\"'full'\">\n    {{ count }}\n  </ng-container>\n  <ng-container *ngSwitchDefault>\n    {{ count | formatCount }}\n  </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\n\nimport { CounterComponent } from './components/counter/counter.component';\n\n@NgModule({\n  declarations: [CounterComponent],\n  imports: [CommonModule, PupaPipesModule],\n  exports: [CounterComponent],\n})\nexport class PupaCounterModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { IconHolderSize } from '../../../../declarations/types/icon-holder-size.type';\n\n@Component({\n  selector: 'pupa-icon-holder',\n  templateUrl: './icon-holder.component.html',\n  styleUrls: ['./icon-holder.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconHolderComponent {\n  @Input() public size: IconHolderSize = 'large';\n\n  @Input() public withBackground: boolean = true;\n}\n","<div class=\"holder\" [class]=\"'holder_' + size\" [class.holder_with-background]=\"withBackground\">\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { IconHolderComponent } from './components/icon-holder/icon-holder.component';\n\n@NgModule({\n  declarations: [IconHolderComponent],\n  exports: [IconHolderComponent],\n  imports: [],\n})\nexport class PupaIconHolderModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { LoaderType } from '../declarations/types/loader-type.type';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LoaderService {\n  private readonly loaderVisibilityState$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  private readonly loaderTypeState$: BehaviorSubject<LoaderType> = new BehaviorSubject<LoaderType>(null);\n  private readonly loaderOverlayTopOffsetPxState$: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n  public readonly isLoaderVisible$: Observable<boolean> = this.loaderVisibilityState$;\n  public readonly loaderType$: Observable<LoaderType> = this.loaderTypeState$;\n  public readonly loaderOverlayTopOffsetPx$: Observable<number> = this.loaderOverlayTopOffsetPxState$;\n\n  public setLoaderState(value: boolean, type: LoaderType = 'transparent', overlayTopOffsetPx: number = 0): void {\n    this.loaderVisibilityState$.next(value);\n    this.loaderTypeState$.next(value ? type : null);\n    this.loaderOverlayTopOffsetPxState$.next(overlayTopOffsetPx);\n  }\n\n  public showLoader(type: LoaderType = 'transparent', overlayTopOffsetPx: number = 0): void {\n    this.setLoaderState(true, type, overlayTopOffsetPx);\n  }\n\n  public hideLoader(): void {\n    this.setLoaderState(false);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GridStateService {\n  public readonly isGridVisible$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public toggleGridVisibleState(): void {\n    this.isGridVisible$\n      .pipe(\n        take(1),\n        map((isGridVisible: boolean) => !isGridVisible)\n      )\n      .subscribe((newState: boolean) => this.isGridVisible$.next(newState));\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ClientUiStateHandlerService, UiState } from '@bimeister/pupakit.common';\nimport { filterNotNil } from '@bimeister/utilities';\nimport { Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LoaderType } from '../../../../declarations/types/loader-type.type';\nimport { GridStateService } from '../../../../services/grid-state.service';\nimport { LoaderService } from '../../../../services/loader.service';\n\n@Component({\n  selector: 'pupa-layout',\n  templateUrl: './layout.component.html',\n  styleUrls: ['./layout.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LayoutComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('iframe', { static: true }) private readonly iframeElementRef: ElementRef<HTMLIFrameElement>;\n\n  public readonly isLoaderVisible$: Observable<boolean> = this.loaderService.isLoaderVisible$;\n  public readonly loaderType$: Observable<LoaderType> = this.loaderService.loaderType$;\n  public readonly loaderOverlayTopOffsetPx$: Observable<number> = this.loaderService.loaderOverlayTopOffsetPx$.pipe(\n    filterNotNil()\n  );\n\n  public readonly countOfColumns$: Observable<number> = this.clientUiHandlerService.uiState$.pipe(\n    filterNotNil(),\n    map(({ countOfColumns }: UiState) => countOfColumns),\n    filterNotNil()\n  );\n\n  public readonly columns$: Observable<number[]> = this.countOfColumns$.pipe(\n    map((countOfColumns: number) =>\n      Array(countOfColumns)\n        .fill(undefined)\n        .map((_: undefined, index: number) => index + 1)\n    )\n  );\n\n  public readonly isGridVisible$: Observable<boolean> = this.gridStateService.isGridVisible$;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(\n    private readonly loaderService: LoaderService,\n    private readonly clientUiHandlerService: ClientUiStateHandlerService,\n    private readonly gridStateService: GridStateService\n  ) {}\n\n  public ngAfterViewInit(): void {\n    this.setIframeElement();\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  public readonly trackByColumnIndex: TrackByFunction<number> = (_: number, item: number) => item;\n\n  private setIframeElement(): void {\n    this.clientUiHandlerService.setIframeElement(this.iframeElementRef.nativeElement);\n  }\n}\n","<div class=\"layout-wrapper content\">\n  <div class=\"wrapper\">\n    <div class=\"layout-wrapper grid\" *ngIf=\"isGridVisible$ | async\">\n      <div class=\"grid__column\" *ngFor=\"let column of columns$ | async; trackBy: trackByColumnIndex\">\n        <div class=\"grid__column-digit\">\n          {{ column }}\n        </div>\n      </div>\n    </div>\n    <ng-content></ng-content>\n    <div\n      class=\"layout-wrapper loader\"\n      [ngClass]=\"loaderType$ | async\"\n      [style.top.px]=\"loaderOverlayTopOffsetPx$ | async\"\n      *ngIf=\"isLoaderVisible$ | async\"\n    >\n      <pupa-spinner [size]=\"'48px'\"></pupa-spinner>\n    </div>\n  </div>\n</div>\n<div class=\"layout-wrapper context-menus\"></div>\n<iframe class=\"layout-wrapper iframe\" #iframe frameborder=\"0\"></iframe>\n","import { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nenum ElementState {\n  initial = 'void',\n  disappeared = 'false',\n  appeared = 'true',\n}\n\n@Component({\n  selector: 'pupa-loader',\n  templateUrl: './loader.component.html',\n  styleUrls: ['./loader.component.scss'],\n  animations: [\n    trigger('lineAppeared', [\n      state(\n        ElementState.disappeared,\n        style({\n          transform: 'scale(0)',\n        })\n      ),\n      state(\n        ElementState.appeared,\n        style({\n          transform: 'scale(1)',\n        })\n      ),\n      transition('false => true', animate('0.4s ease-out')),\n      transition('true => false', animate('0.5s cubic-bezier(0.5, 1, 1, 1.2)')),\n    ]),\n    trigger('rectangleAppeared', [\n      state(\n        ElementState.disappeared,\n        style({\n          transform: 'scale(0)',\n        })\n      ),\n      state(\n        ElementState.appeared,\n        style({\n          transform: 'scale(1)',\n        })\n      ),\n      transition('false => true', animate('0.5s cubic-bezier(0.2, 1, 1, 1)')),\n      transition('true => false', animate('0.25s cubic-bezier(0.5, 1, 0.8, 1)')),\n    ]),\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoaderComponent implements AfterViewInit {\n  public isLeftLineVisible$: BehaviorSubject<string> = new BehaviorSubject<string>(ElementState.disappeared);\n  public isCenterLineVisible$: BehaviorSubject<string> = new BehaviorSubject<string>(ElementState.disappeared);\n  public isRightLineVisible$: BehaviorSubject<string> = new BehaviorSubject<string>(ElementState.disappeared);\n  public isTopRectangleVisible$: BehaviorSubject<string> = new BehaviorSubject<string>(ElementState.disappeared);\n  public isBottomRectangleVisible$: BehaviorSubject<string> = new BehaviorSubject<string>(ElementState.disappeared);\n\n  public ngAfterViewInit(): void {\n    this.startAnimation();\n  }\n\n  public switchLineState(\n    animationEvent: AnimationEvent,\n    animationStateRef: BehaviorSubject<string>,\n    delay: number = 0\n  ): void {\n    if (animationEvent.fromState === ElementState.initial || animationEvent.toState === ElementState.disappeared) {\n      return;\n    }\n    setTimeout(() => {\n      animationStateRef.next(ElementState.appeared);\n    }, delay);\n  }\n\n  public switchRectangleState(\n    animationEvent: AnimationEvent,\n    animationStateRef: BehaviorSubject<string>,\n    delay: number = 0\n  ): void {\n    if (animationEvent.fromState === ElementState.initial || animationEvent.toState === ElementState.disappeared) {\n      return;\n    }\n    setTimeout(() => {\n      animationStateRef.next(ElementState.appeared);\n    }, delay);\n  }\n\n  public hideAllElements(animationEvent: AnimationEvent, delay: number = 0): void {\n    if (animationEvent.fromState === ElementState.appeared || animationEvent.toState === ElementState.disappeared) {\n      return;\n    }\n    setTimeout(() => {\n      this.isLeftLineVisible$.next(ElementState.disappeared);\n      this.isCenterLineVisible$.next(ElementState.disappeared);\n      this.isRightLineVisible$.next(ElementState.disappeared);\n      this.isTopRectangleVisible$.next(ElementState.disappeared);\n      this.isBottomRectangleVisible$.next(ElementState.disappeared);\n    }, delay);\n    const repeatDelay: number = 2000;\n    this.startAnimation(repeatDelay);\n  }\n\n  private startAnimation(delay: number = 0): void {\n    setTimeout(() => {\n      this.isCenterLineVisible$.next(ElementState.appeared);\n    }, delay);\n  }\n}\n","<div class=\"loader\">\n  <div\n    class=\"loader__line loader__line_left\"\n    [@lineAppeared]=\"isLeftLineVisible$ | async\"\n    (@lineAppeared.start)=\"switchRectangleState($event, isBottomRectangleVisible$, 400)\"\n  >\n    <svg height=\"100%\" viewBox=\"0 0 2 79\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m63.4050633 96.2101507v79.6096743\"\n        style=\"\n          stroke: #ff602b;\n          stroke-width: 0.9;\n          fill: none;\n          stroke-dasharray: 3 2;\n          stroke-linecap: round;\n          stroke-linejoin: round;\n        \"\n        transform=\"translate(-62 -96)\"\n      />\n    </svg>\n  </div>\n  <div\n    class=\"loader__line loader__line_center\"\n    [@lineAppeared]=\"isCenterLineVisible$ | async\"\n    (@lineAppeared.done)=\"switchLineState($event, isRightLineVisible$)\"\n  >\n    <svg height=\"100%\" viewBox=\"0 0 2 79\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m63.4050633 96.2101507v79.6096743\"\n        style=\"\n          stroke: #ff602b;\n          stroke-width: 0.9;\n          fill: none;\n          stroke-dasharray: 3 2;\n          stroke-linecap: round;\n          stroke-linejoin: round;\n        \"\n        transform=\"translate(-62 -96)\"\n      />\n    </svg>\n  </div>\n  <div\n    class=\"loader__line loader__line_right\"\n    [@lineAppeared]=\"isRightLineVisible$ | async\"\n    (@lineAppeared.start)=\"switchLineState($event, isLeftLineVisible$, 350)\"\n    (@lineAppeared.done)=\"switchRectangleState($event, isTopRectangleVisible$)\"\n  >\n    <svg height=\"100%\" viewBox=\"0 0 2 79\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m63.4050633 96.2101507v79.6096743\"\n        style=\"\n          stroke: #ff602b;\n          stroke-width: 0.9;\n          fill: none;\n          stroke-dasharray: 3 2;\n          stroke-linecap: round;\n          stroke-linejoin: round;\n        \"\n        transform=\"translate(-62 -96)\"\n      />\n    </svg>\n  </div>\n  <div class=\"loader__rectangle loader__rectangle_top\" [@rectangleAppeared]=\"isTopRectangleVisible$ | async\">\n    <svg height=\"100%\" viewBox=\"0 0 125 65\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m18.64727 18.1512875 65.2351888 22.40698 22.4069802 65.2351885-67.5355463-20.1066223z\"\n        fill=\"#004560\"\n        fill-rule=\"evenodd\"\n        transform=\"matrix(.70710678 -.70710678 .70710678 .70710678 -25.524527 31.323084)\"\n      />\n    </svg>\n  </div>\n  <div\n    class=\"loader__rectangle loader__rectangle_bottom\"\n    [@rectangleAppeared]=\"isBottomRectangleVisible$ | async\"\n    (@rectangleAppeared.done)=\"hideAllElements($event, 1000)\"\n  >\n    <svg height=\"100%\" viewBox=\"0 0 125 65\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m18.64727 18.1512875 65.2351888 22.40698 22.4069802 65.2351885-67.5355463-20.1066223z\"\n        fill=\"#004560\"\n        fill-rule=\"evenodd\"\n        transform=\"matrix(.70710678 -.70710678 .70710678 .70710678 -25.524527 31.323084)\"\n      />\n    </svg>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PupaPipesModule } from '@bimeister/pupakit.common';\nimport { mdCloseIcon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaSpinnerModule } from '../spinner/spinner.module';\n\nimport { LayoutComponent } from './components/layout/layout.component';\nimport { LoaderComponent } from './components/loader/loader.component';\n\n@NgModule({\n  imports: [CommonModule, PupaIconsModule.forFeature([mdCloseIcon]), PupaSpinnerModule, PupaPipesModule],\n  declarations: [LayoutComponent, LoaderComponent],\n  exports: [LayoutComponent, LoaderComponent],\n})\nexport class PupaLayoutModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'a[pupaLink], button[pupaLink]',\n  templateUrl: './link.component.html',\n  styleUrls: ['./link.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n  @Input() public icon: string;\n}\n","<span class=\"link-content\">\n  <pupa-icon *ngIf=\"icon\" class=\"icon\" [name]=\"icon\"></pupa-icon>\n  <ng-content></ng-content>\n  <div class=\"substrate\"></div>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaIconsModule } from '@bimeister/pupakit.icons';\n\nimport { LinkComponent } from './components/link/link.component';\n\nconst EXPORTS: Type<unknown>[] = [LinkComponent];\n\n@NgModule({\n  declarations: [...EXPORTS],\n  imports: [CommonModule, PupaIconsModule.forFeature()],\n  exports: EXPORTS,\n})\nexport class PupaLinkModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\ninterface CalculatedParameters {\n  radius: number;\n  innerRadius: number;\n  strokeDashArray: number;\n  strokeDashOffset: number;\n}\n\n@Component({\n  selector: 'pupa-progress-bar',\n  templateUrl: './progress-bar.component.html',\n  styleUrls: ['./progress-bar.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBarComponent implements OnChanges, AfterViewInit, OnDestroy {\n  @ViewChild('progressBar') public readonly progressBarRef: ElementRef<SVGElement>;\n  @ViewChild('mainCircle') public readonly mainCircleRef: ElementRef<SVGCircleElement>;\n  @ViewChild('progressCircle') public readonly progressCircleRef: ElementRef<SVGCircleElement>;\n\n  @Input() public sizePx: number = 64;\n  private readonly sizePx$: BehaviorSubject<number> = new BehaviorSubject(64);\n\n  @Input() public strokeWidthPx: number = 16;\n  private readonly strokeWidthPx$: BehaviorSubject<number> = new BehaviorSubject(16);\n\n  @Input() public percentage: number = 0;\n  private readonly percentage$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n  private readonly calculatedParameters$: Observable<CalculatedParameters> = combineLatest([\n    this.sizePx$,\n    this.strokeWidthPx$,\n    this.percentage$,\n  ]).pipe(\n    map(([sizePx, strokeWidthPx, percentage]: [number, number, number]): CalculatedParameters => {\n      const radius: number = sizePx / 2;\n      const innerRadius: number = radius - strokeWidthPx / 2;\n      const strokeDashArray: number = innerRadius * Math.PI * 2;\n\n      const normalizedPercentage: number = percentage / 100;\n      const strokeDashOffset: number = strokeDashArray * (1 - normalizedPercentage);\n\n      return {\n        radius,\n        innerRadius,\n        strokeDashArray,\n        strokeDashOffset,\n      };\n    })\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(private readonly renderer: Renderer2) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processSizePxChanges(changes.sizePx);\n    this.processStrokeWidthPxChanges(changes.strokeWidthPx);\n    this.processPercentageChanges(changes.percentage);\n  }\n\n  public ngAfterViewInit(): void {\n    this.subscription.add(this.processParametersChanges());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processSizePxChanges(change: ComponentChange<this, number>): void {\n    const sizePx: number | undefined = change?.currentValue;\n\n    if (isNil(sizePx)) {\n      return;\n    }\n\n    this.sizePx$.next(sizePx);\n  }\n\n  private processStrokeWidthPxChanges(change: ComponentChange<this, number>): void {\n    const strokeWidthPx: number | undefined = change?.currentValue;\n\n    if (isNil(strokeWidthPx)) {\n      return;\n    }\n\n    this.strokeWidthPx$.next(strokeWidthPx);\n  }\n\n  private processPercentageChanges(change: ComponentChange<this, number>): void {\n    const percentage: number | undefined = change?.currentValue;\n\n    if (isNil(percentage)) {\n      return;\n    }\n\n    this.percentage$.next(percentage);\n  }\n\n  private processParametersChanges(): Subscription {\n    return this.calculatedParameters$.subscribe((calculatedParameters: CalculatedParameters) => {\n      this.setProgressBarSize();\n      this.setMainCircleSize(calculatedParameters);\n      this.setProgressCircleSize(calculatedParameters);\n    });\n  }\n\n  private setProgressBarSize(): void {\n    const progressBarElement: SVGElement = this.progressBarRef.nativeElement;\n    this.renderer.setAttribute(progressBarElement, 'width', this.sizePx.toString());\n    this.renderer.setAttribute(progressBarElement, 'height', this.sizePx.toString());\n  }\n\n  private setMainCircleSize(calculatedParameters: CalculatedParameters): void {\n    const mainCircleElement: SVGCircleElement = this.mainCircleRef.nativeElement;\n    this.renderer.setAttribute(mainCircleElement, 'cx', calculatedParameters.radius.toString());\n    this.renderer.setAttribute(mainCircleElement, 'cy', calculatedParameters.radius.toString());\n    this.renderer.setAttribute(mainCircleElement, 'r', calculatedParameters.innerRadius.toString());\n    this.renderer.setAttribute(mainCircleElement, 'stroke-width', this.strokeWidthPx.toString());\n  }\n\n  private setProgressCircleSize(calculatedParameters: CalculatedParameters): void {\n    const progressCircleElement: SVGCircleElement = this.progressCircleRef.nativeElement;\n    this.renderer.setAttribute(progressCircleElement, 'cx', calculatedParameters.radius.toString());\n    this.renderer.setAttribute(progressCircleElement, 'cy', calculatedParameters.radius.toString());\n    this.renderer.setAttribute(progressCircleElement, 'r', calculatedParameters.innerRadius.toString());\n    this.renderer.setAttribute(progressCircleElement, 'stroke-width', this.strokeWidthPx.toString());\n    this.renderer.setAttribute(\n      progressCircleElement,\n      'stroke-dasharray',\n      calculatedParameters.strokeDashArray.toString()\n    );\n    this.renderer.setAttribute(\n      progressCircleElement,\n      'stroke-dashoffset',\n      calculatedParameters.strokeDashOffset.toString()\n    );\n  }\n}\n","<svg #progressBar class=\"progress-bar\" fill=\"none\" width=\"0\" height=\"0\">\n  <circle class=\"progress-bar__main-circle\" #mainCircle />\n  <circle class=\"progress-bar__progress-circle\" #progressCircle stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n</svg>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ProgressBarComponent } from './components/progress-bar/progress-bar.component';\n\n@NgModule({\n  declarations: [ProgressBarComponent],\n  imports: [CommonModule],\n  exports: [ProgressBarComponent],\n})\nexport class PupaProgressBarModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-section-container',\n  templateUrl: './section-container.component.html',\n  styleUrls: ['./section-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SectionContainerComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-section-sub-title',\n  templateUrl: './section-sub-title.component.html',\n  styleUrls: ['./section-sub-title.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SectionSubTitleComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-section-title',\n  templateUrl: './section-title.component.html',\n  styleUrls: ['./section-title.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SectionTitleComponent {}\n","<ng-content></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { SectionContainerComponent } from './components/section-container/section-container.component';\nimport { SectionSubTitleComponent } from './components/section-sub-title/section-sub-title.component';\nimport { SectionTitleComponent } from './components/section-title/section-title.component';\n\nconst COMPONENTS: Type<unknown>[] = [SectionContainerComponent, SectionTitleComponent, SectionSubTitleComponent];\n\n@NgModule({\n  declarations: [COMPONENTS],\n  imports: [],\n  exports: [COMPONENTS],\n})\nexport class PupaSectionModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-skeleton-group',\n  templateUrl: './skeleton-group.component.html',\n  styleUrls: ['./skeleton-group.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonGroupComponent {\n  constructor(private readonly changeDetectorRef: ChangeDetectorRef) {\n    this.changeDetectorRef.detach();\n  }\n}\n","<div class=\"skeleton__group\">\n  <ng-content></ng-content>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChanges, ComponentChange } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { ReplaySubject } from 'rxjs';\n\n@Component({\n  selector: 'pupa-skeleton',\n  templateUrl: './skeleton.component.html',\n  styleUrls: ['./skeleton.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent implements OnChanges {\n  @Input() public isActive?: boolean;\n\n  public readonly isActive$: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\n\n  constructor(private readonly changeDetectorRef: ChangeDetectorRef) {\n    this.changeDetectorRef.detach();\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    if (isNil(changes)) {\n      return;\n    }\n    this.processIsActivePropertyChange(changes?.isActive);\n  }\n\n  private processIsActivePropertyChange(change: ComponentChange<this, boolean>): void {\n    if (isNil(change?.currentValue)) {\n      return;\n    }\n    this.isActive$.next(change.currentValue);\n  }\n}\n","<div class=\"skeleton\">\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Host,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { ComponentChanges, UnitWidthStyleChangesProcessor, WidthUnitBinding } from '@bimeister/pupakit.common';\nimport { Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\n\n@Component({\n  selector: 'pupa-skeleton-line',\n  templateUrl: './skeleton-line.component.html',\n  styleUrls: ['./skeleton-line.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonLineComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, WidthUnitBinding {\n  private readonly unitWidthStyleChangesProcessor: UnitWidthStyleChangesProcessor<this> =\n    new UnitWidthStyleChangesProcessor(this.domSanitizer);\n\n  @Input() public width: string | null = null;\n  /* eslint-disable @angular-eslint/no-input-rename */\n  @Input('width.%') public widthPercents: number | null = null;\n  @Input('width.px') public widthPx: number | null = null;\n  @Input('width.vw') public widthVw: number | null = null;\n  @Input('width.rem') public widthRem: number | null = null;\n  /* eslint-enable @angular-eslint/no-input-rename */\n  @Input() public hasMarginLeft: boolean = true;\n\n  @HostBinding('style.width') public widthStyle: SafeStyle;\n\n  public readonly width$: Observable<SafeStyle> = this.unitWidthStyleChangesProcessor.safeStyle$;\n\n  private readonly subscription: Subscription = new Subscription();\n\n  private isDestroyed: boolean = true;\n\n  public readonly isActive$: Observable<boolean> = this.skeletonComponent.isActive$;\n\n  constructor(\n    @Optional() @Host() private readonly skeletonComponent: SkeletonComponent,\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private readonly domSanitizer: DomSanitizer\n  ) {\n    this.changeDetectorRef.detach();\n  }\n\n  public ngOnInit(): void {\n    this.isDestroyed = false;\n    this.subscription\n      .add(this.detectChangesOnWidthChanges())\n      .add(this.detectChangesOnIsActiveValueChanges())\n      .add(this.updateHostWidthOnWidthChanges());\n  }\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.unitWidthStyleChangesProcessor.process(changes);\n  }\n\n  public ngAfterViewInit(): void {\n    this.detectChanges();\n  }\n\n  public ngOnDestroy(): void {\n    this.isDestroyed = true;\n    this.subscription.unsubscribe();\n  }\n\n  private detectChangesOnWidthChanges(): Subscription {\n    return this.width$.pipe(distinctUntilChanged()).subscribe(() => {\n      this.detectChanges();\n    });\n  }\n\n  private detectChangesOnIsActiveValueChanges(): Subscription {\n    return this.isActive$.pipe(distinctUntilChanged()).subscribe(() => {\n      this.detectChanges();\n    });\n  }\n\n  private updateHostWidthOnWidthChanges(): Subscription {\n    return this.width$.pipe(distinctUntilChanged()).subscribe((widthStyle: SafeStyle) => {\n      this.widthStyle = widthStyle;\n    });\n  }\n\n  private detectChanges(): void {\n    if (!this.isDestroyed) {\n      this.changeDetectorRef.detectChanges();\n    }\n  }\n}\n","<div\n  class=\"skeleton__line\"\n  [class.skeleton__line_active]=\"isActive$ | async\"\n  [class.skeleton__line_has-margin-left]=\"hasMarginLeft\"\n  [style.width]=\"width$ | async\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkeletonGroupComponent } from './components/skeleton-group/skeleton-group.component';\nimport { SkeletonLineComponent } from './components/skeleton-line/skeleton-line.component';\nimport { SkeletonComponent } from './components/skeleton/skeleton.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SkeletonComponent, SkeletonLineComponent, SkeletonGroupComponent],\n  exports: [SkeletonComponent, SkeletonLineComponent, SkeletonGroupComponent],\n})\nexport class PupaSkeletonModule {}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { StatusColor } from '../../../../declarations/types/status-color.type';\nimport { StatusKind } from '../../../../declarations/types/status-kind.type';\n\n@Component({\n  selector: 'pupa-status',\n  templateUrl: './status.component.html',\n  styleUrls: ['./status.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusComponent {\n  @Input() public color: StatusColor = 'primary';\n  @Input() public kind: StatusKind = 'line';\n  @Input() public disabled: boolean = false;\n\n  public get colorClass(): string {\n    return `status_${this.color}`;\n  }\n\n  public get kindClass(): string {\n    return `status__marker_${this.kind}`;\n  }\n}\n","<div class=\"status\" [class]=\"colorClass\" [class.disabled]=\"disabled\">\n  <div class=\"status__marker\" [class]=\"kindClass\"></div>\n  <div class=\"status__text\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule, Type } from '@angular/core';\nimport { StatusComponent } from './components/status/status.component';\n\nconst COMPONENTS: Type<unknown>[] = [StatusComponent];\n\nconst DECLARATIONS: Type<unknown>[] = [...COMPONENTS];\nconst EXPORTS: Type<unknown>[] = [...DECLARATIONS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [],\n  exports: [...EXPORTS],\n})\nexport class PupaStatusModule {}\n","import { InjectionToken } from '@angular/core';\nimport { TabsServiceBase } from '../../declarations/classes/abstract/tabs-service-base.abstract';\n\nexport const STEPPER_CONTAINER_STATE_SERVICE_TOKEN: InjectionToken<TabsServiceBase<unknown>> = new InjectionToken<\n  TabsServiceBase<unknown>\n>('STEPPER_CONTAINER_STATE_SERVICE_TOKEN');\n","import { Injectable } from '@angular/core';\nimport { TabsServiceBase } from '../../../declarations/classes/abstract/tabs-service-base.abstract';\n\n@Injectable()\nexport class StepperStateService<T> extends TabsServiceBase<T> {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { STEPPER_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/stepper-container-state-service.token';\nimport { StepperStateService } from '../../services/stepper-state.service';\n\n@Component({\n  selector: 'pupa-stepper-container',\n  templateUrl: './stepper-container.component.html',\n  styleUrls: ['./stepper-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [\n    {\n      provide: STEPPER_CONTAINER_STATE_SERVICE_TOKEN,\n      useClass: StepperStateService,\n    },\n  ],\n})\nexport class StepperContainerComponent {}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { TabsServiceBase } from '../../../declarations/classes/abstract/tabs-service-base.abstract';\n\n@Injectable()\nexport class TabsStateService<T> extends TabsServiceBase<T> {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { ContentTemplateNameDirective } from '../../../declarations/interfaces/content-template-name.interface';\n\n@Directive({\n  selector: '[pupaStepperItemContentTemplate]',\n})\nexport class StepperItemContentDirective<T> implements ContentTemplateNameDirective<T> {\n  @Input() public pupaStepperItemContentTemplate: T;\n\n  constructor(public readonly templateRef: TemplateRef<unknown>) {}\n\n  public getTemplateName(): T {\n    return this.pupaStepperItemContentTemplate;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  Inject,\n  Input,\n  QueryList,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { STEPPER_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/stepper-container-state-service.token';\nimport { TabsContentBase } from '../../../../declarations/classes/abstract/tabs-content-base.abstract';\nimport { TabsStateService } from '../../../tabs/services/tabs-state.service';\nimport { StepperItemContentDirective } from '../../directives/stepper-item-content.directive';\nimport { StepperStateService } from '../../services/stepper-state.service';\n\n@Component({\n  selector: 'pupa-stepper-content',\n  templateUrl: './stepper-content.component.html',\n  styleUrls: ['./stepper-content.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class StepperContentComponent<T> extends TabsContentBase<T, TabsStateService<T>> {\n  @Input() public destroyable: boolean = true;\n\n  @ContentChildren(StepperItemContentDirective) public tabTemplates: QueryList<StepperItemContentDirective<T>>;\n\n  constructor(@Inject(STEPPER_CONTAINER_STATE_SERVICE_TOKEN) stateService: StepperStateService<T>) {\n    super(stateService);\n  }\n}\n","<ng-container *ngIf=\"destroyable; else stepper\" [ngTemplateOutlet]=\"activeTemplateRef$ | async\"></ng-container>\n\n<ng-content></ng-content>\n\n<ng-template #stepper>\n  <div\n    *ngFor=\"let stepperTemplate of nonDestroyableTemplateRefs$ | async; trackBy: tabTrackBy\"\n    class=\"stepper\"\n    [class.stepper_visible]=\"stepperTemplate.isActive\"\n  >\n    <ng-container [ngTemplateOutlet]=\"stepperTemplate.templateRef\"></ng-container>\n  </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-stepper-counter',\n  templateUrl: './stepper-counter.component.html',\n  styleUrls: ['./stepper-counter.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class StepperCounterComponent {\n  @Input() public stepCount: number = 1;\n\n  @Input() public disabled: boolean = false;\n  @Input() public active: boolean = false;\n}\n","<div class=\"stepper-counter\" [class.stepper-counter_disabled]=\"disabled\" [class.stepper-counter_active]=\"active\">\n  {{ stepCount }}\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { StepperItem } from '../../../declarations/interfaces/stepper-item.interface';\n\n@Injectable()\nexport class StepperRegistryService<T> {\n  private readonly stepperItemsState$: BehaviorSubject<StepperItem<T>[]> = new BehaviorSubject([]);\n\n  public readonly stepperItems$: Observable<StepperItem<T>[]> = this.stepperItemsState$.asObservable();\n\n  public readonly stepperItemsLength$: Observable<number> = this.stepperItems$.pipe(\n    map((stepperItems: StepperItem<T>[]) => stepperItems.length)\n  );\n\n  public registerStepperItem(stepperItem: StepperItem<T>): void {\n    this.stepperItemsState$.pipe(take(1)).subscribe((stepperItems: StepperItem<T>[]) => {\n      this.stepperItemsState$.next([...stepperItems, stepperItem]);\n    });\n  }\n\n  public getStepperItemIndex(stepperItemComponent: StepperItem<T>): Observable<number> {\n    return this.stepperItems$.pipe(\n      take(1),\n      map((stepperItems: StepperItem<T>[]) =>\n        stepperItems.findIndex((stepperItem: StepperItem<T>) => stepperItem === stepperItemComponent)\n      ),\n      map((stepperItemIndex: number) => stepperItemIndex + 1)\n    );\n  }\n\n  public isLastStepperItem(stepperItemComponent: StepperItem<T>): Observable<boolean> {\n    return combineLatest([this.stepperItemsLength$, this.getStepperItemIndex(stepperItemComponent)]).pipe(\n      map(([stepperItemsLength, stepperItemIndex]: [number, number]) => stepperItemsLength === stepperItemIndex)\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { filterNotNil, Nullable } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { STEPPER_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/stepper-container-state-service.token';\nimport { TabsItemBase } from '../../../../declarations/classes/abstract/tabs-item-base.abstract';\nimport { StepperItem } from '../../../../declarations/interfaces/stepper-item.interface';\nimport { TabsStateService } from '../../../tabs/services/tabs-state.service';\nimport { StepperRegistryService } from '../../services/stepper-registry.service';\nimport { StepperStateService } from '../../services/stepper-state.service';\n\n@Component({\n  selector: 'pupa-stepper-item',\n  templateUrl: './stepper-item.component.html',\n  styleUrls: ['./stepper-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class StepperItemComponent<T> extends TabsItemBase<T, TabsStateService<T>> implements OnInit, StepperItem<T> {\n  @Input() public name: T;\n  @Input() public isActive: Nullable<boolean>;\n  @Input() public disabled: Nullable<boolean>;\n\n  @ViewChild('stepperItem', { static: true }) private readonly stepperItemElement: ElementRef;\n\n  public readonly counter$: Observable<number> = this.stepperRegistryService.getStepperItemIndex(this).pipe(\n    filterNotNil(),\n    filter((counter: number) => counter > 0)\n  );\n\n  public readonly isLastStepperItem$: Observable<boolean> = this.stepperRegistryService.isLastStepperItem(this);\n\n  constructor(\n    private readonly stepperRegistryService: StepperRegistryService<T>,\n    stateService: StepperStateService<T>,\n    @Optional() @Inject(STEPPER_CONTAINER_STATE_SERVICE_TOKEN) fromContainerStateService?: StepperStateService<T>\n  ) {\n    super(stateService, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.stateService.registerTabHtmlElement(this.name, this.stepperItemElement.nativeElement);\n    this.stepperRegistryService.registerStepperItem(this);\n  }\n}\n","<div\n  #stepperItem\n  class=\"stepper-item\"\n  [class.stepper-item_disabled]=\"disabled\"\n  [class.stepper-item_grabbing]=\"isContentDragging$ | async\"\n  (tap)=\"setAsActive()\"\n>\n  <div class=\"stepper-item__counter\">\n    <pupa-stepper-counter\n      [disabled]=\"disabled\"\n      [active]=\"isActive$ | async\"\n      [stepCount]=\"counter$ | async\"\n    ></pupa-stepper-counter>\n  </div>\n  <div class=\"stepper-item__title-wrapper\">\n    <div class=\"stepper-item__title\">\n      <ng-content></ng-content>\n      <div></div>\n    </div>\n  </div>\n</div>\n<div class=\"step-line\" *ngIf=\"!(isLastStepperItem$ | async)\"></div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  NgZone,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { STEPPER_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/stepper-container-state-service.token';\nimport { TabsBase } from '../../../../declarations/classes/abstract/tabs-base.abstract';\nimport { TabsStateService } from '../../../tabs/services/tabs-state.service';\nimport { StepperRegistryService } from '../../services/stepper-registry.service';\nimport { StepperStateService } from '../../services/stepper-state.service';\nimport { ScrollableComponent } from '../../../scrollable/components/scrollable/scrollable.component';\n\n@Component({\n  selector: 'pupa-stepper',\n  templateUrl: './stepper.component.html',\n  styleUrls: ['./stepper.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [StepperStateService, StepperRegistryService],\n})\nexport class StepperComponent<T> extends TabsBase<T, TabsStateService<T>> implements OnInit {\n  @ViewChild('stepperContainer', { static: true }) private readonly stepperContainerRef: ElementRef<HTMLElement>;\n  @ViewChild('scrollable', { static: true }) private readonly scrollable: ScrollableComponent;\n\n  @Output() public readonly activeTabNameChange: EventEmitter<T> = new EventEmitter<T>();\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    stateService: StepperStateService<T>,\n    changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    @Optional() @Inject(STEPPER_CONTAINER_STATE_SERVICE_TOKEN) fromContainerStateService?: StepperStateService<T>\n  ) {\n    super(stateService, changeDetectorRef, ngZone, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    this.stateService.registerHostHtmlElement(this.elementRef.nativeElement);\n    this.stateService.registerScrollable(this.scrollable);\n    this.stateService.registerTabsHtmlElement(this.stepperContainerRef.nativeElement);\n  }\n}\n","<div class=\"gradient gradient_left\" [class.gradient_visible]=\"isLeftGradient$ | async\"></div>\n<div class=\"gradient gradient_right\" [class.gradient_visible]=\"isRightGradient$ | async\"></div>\n\n<pupa-scrollable\n  #scrollable\n  class=\"stepper\"\n  [class.stepper_grab]=\"isHorizontalScrollExist$ | async\"\n  [class.stepper_grabbing]=\"isContentDragging$ | async\"\n  [invisibleScrollbars]=\"['horizontal', 'vertical']\"\n  [scrollDragMode]=\"'horizontal'\"\n  (scrolledToHorizontalStart)=\"setLeftGradient($event)\"\n  (scrolledToHorizontalEnd)=\"setRightGradient($event)\"\n  (contentDragStart)=\"handleContentDragStart()\"\n  (contentDragEnd)=\"handleContentDragEnd()\"\n>\n  <div class=\"stepper__container\" #stepperContainer>\n    <div class=\"stepper__items\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</pupa-scrollable>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaScrollableModule } from '../scrollable/scrollable.module';\nimport { StepperContainerComponent } from './components/stepper-container/stepper-container.component';\nimport { StepperContentComponent } from './components/stepper-content/stepper-content.component';\nimport { StepperCounterComponent } from './components/stepper-counter/stepper-counter.component';\nimport { StepperItemComponent } from './components/stepper-item/stepper-item.component';\nimport { StepperComponent } from './components/stepper/stepper.component';\nimport { StepperItemContentDirective } from './directives/stepper-item-content.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  StepperComponent,\n  StepperContainerComponent,\n  StepperContentComponent,\n  StepperItemComponent,\n  StepperCounterComponent,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [StepperItemContentDirective];\n\n@NgModule({\n  declarations: [...COMPONENTS, ...DIRECTIVES],\n  imports: [CommonModule, PupaScrollableModule],\n  exports: [...COMPONENTS, ...DIRECTIVES],\n})\nexport class PupaStepperModule {}\n","import { InjectionToken } from '@angular/core';\nimport { TabsServiceBase } from '../../declarations/classes/abstract/tabs-service-base.abstract';\n\nexport const TABS_CONTAINER_STATE_SERVICE_TOKEN: InjectionToken<TabsServiceBase<unknown>> = new InjectionToken<\n  TabsServiceBase<unknown>\n>('TABS_CONTAINER_STATE_SERVICE_TOKEN');\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { TabsStateService } from '../../services/tabs-state.service';\nimport { TABS_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/tabs-container-state-service.token';\n\n@Component({\n  selector: 'pupa-tabs-container',\n  templateUrl: './tabs-container.component.html',\n  styleUrls: ['./tabs-container.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: TABS_CONTAINER_STATE_SERVICE_TOKEN,\n      useClass: TabsStateService,\n    },\n  ],\n})\nexport class TabsContainerComponent {}\n","<ng-content></ng-content>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { ContentTemplateNameDirective } from '../../../declarations/interfaces/content-template-name.interface';\n\n@Directive({\n  selector: '[pupaTabsItemContentTemplate]',\n})\nexport class TabsItemContentTemplateDirective<T> implements ContentTemplateNameDirective<T> {\n  @Input() public pupaTabsItemContentTemplate: T;\n\n  constructor(public readonly templateRef: TemplateRef<unknown>) {}\n\n  public getTemplateName(): T {\n    return this.pupaTabsItemContentTemplate;\n  }\n}\n","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  Inject,\n  Input,\n} from '@angular/core';\nimport { TabsItemContentTemplateDirective } from '../../directives/tabs-item-content-template.directive';\nimport { TabsStateService } from '../../services/tabs-state.service';\nimport { TABS_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/tabs-container-state-service.token';\nimport { TabsContentBase } from '../../../../declarations/classes/abstract/tabs-content-base.abstract';\n\n@Component({\n  selector: 'pupa-tabs-content',\n  templateUrl: './tabs-content.component.html',\n  styleUrls: ['./tabs-content.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsContentComponent<T> extends TabsContentBase<T, TabsStateService<T>> {\n  @Input() public destroyable: boolean = true;\n  @ContentChildren(TabsItemContentTemplateDirective) public tabTemplates: QueryList<\n    TabsItemContentTemplateDirective<T>\n  >;\n\n  constructor(@Inject(TABS_CONTAINER_STATE_SERVICE_TOKEN) stateService: TabsStateService<T>) {\n    super(stateService);\n  }\n}\n","<ng-container *ngIf=\"destroyable; else tabs\" [ngTemplateOutlet]=\"activeTemplateRef$ | async\"></ng-container>\n\n<ng-content></ng-content>\n\n<ng-template #tabs>\n  <div\n    *ngFor=\"let tabTemplate of nonDestroyableTemplateRefs$ | async; trackBy: tabTrackBy\"\n    class=\"tab\"\n    [class.tab_visible]=\"tabTemplate.isActive\"\n  >\n    <ng-container [ngTemplateOutlet]=\"tabTemplate.templateRef\"></ng-container>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Nullable } from '@bimeister/utilities';\nimport { TABS_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/tabs-container-state-service.token';\nimport { TabsItemBase } from '../../../../declarations/classes/abstract/tabs-item-base.abstract';\nimport { TabsStateService } from '../../services/tabs-state.service';\n\n@Component({\n  selector: 'pupa-tabs-item',\n  templateUrl: './tabs-item.component.html',\n  styleUrls: ['./tabs-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TabsItemComponent<T> extends TabsItemBase<T, TabsStateService<T>> implements OnInit {\n  @Input() public name: T;\n  @Input() public isActive: Nullable<boolean>;\n  @Input() public disabled: Nullable<boolean>;\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    stateService: TabsStateService<T>,\n    @Optional() @Inject(TABS_CONTAINER_STATE_SERVICE_TOKEN) fromContainerStateService?: TabsStateService<T>\n  ) {\n    super(stateService, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.stateService.registerTabHtmlElement(this.name, this.elementRef.nativeElement);\n  }\n}\n","<div\n  class=\"tabs-item\"\n  [class.tabs-item_disabled]=\"disabled\"\n  [class.tabs-item_active]=\"isActive$ | async\"\n  [class.tabs-item_grabbing]=\"isContentDragging$ | async\"\n  (tap)=\"setAsActive()\"\n>\n  <ng-content></ng-content>\n</div>\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n  selector: 'pupa-tabs-separator',\n  templateUrl: './tabs-separator.component.html',\n  styleUrls: ['./tabs-separator.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsSeparatorComponent {}\n","<div class=\"separator\"></div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  NgZone,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TABS_CONTAINER_STATE_SERVICE_TOKEN } from '../../../../declarations/tokens/tabs-container-state-service.token';\nimport { TabsBase } from '../../../../declarations/classes/abstract/tabs-base.abstract';\nimport { TabsStateService } from '../../services/tabs-state.service';\nimport { ScrollableComponent } from '../../../scrollable/components/scrollable/scrollable.component';\n\n@Component({\n  selector: 'pupa-tabs',\n  templateUrl: './tabs.component.html',\n  styleUrls: ['./tabs.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [TabsStateService],\n})\nexport class TabsComponent<T> extends TabsBase<T, TabsStateService<T>> implements OnInit {\n  @ViewChild('tabsContainer', { static: true }) private readonly tabsContainerRef: ElementRef<HTMLElement>;\n  @ViewChild('scrollable', { static: true }) private readonly scrollable: ScrollableComponent;\n  @ViewChild('rail', { static: true }) private readonly railRef: ElementRef<HTMLElement>;\n\n  @Output() public readonly activeTabNameChange: EventEmitter<T> = new EventEmitter<T>();\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly renderer: Renderer2,\n    stateService: TabsStateService<T>,\n    changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    @Optional() @Inject(TABS_CONTAINER_STATE_SERVICE_TOKEN) fromContainerStateService?: TabsStateService<T>\n  ) {\n    super(stateService, changeDetectorRef, ngZone, fromContainerStateService);\n  }\n\n  public ngOnInit(): void {\n    this.stateService.registerHostHtmlElement(this.elementRef.nativeElement);\n    this.stateService.registerScrollable(this.scrollable);\n    this.stateService.registerTabsHtmlElement(this.tabsContainerRef.nativeElement);\n  }\n\n  public processScrollLeft(scrollLeft: number): void {\n    this.renderer.setStyle(this.railRef?.nativeElement, 'transform', `translateX(${-scrollLeft}px)`);\n  }\n}\n","<div class=\"gradient gradient_left\" [class.gradient_visible]=\"isLeftGradient$ | async\"></div>\n<div class=\"gradient gradient_right\" [class.gradient_visible]=\"isRightGradient$ | async\"></div>\n\n<pupa-scrollable\n  #scrollable\n  class=\"tabs\"\n  [class.tabs_grab]=\"isHorizontalScrollExist$ | async\"\n  [class.tabs_grabbing]=\"isContentDragging$ | async\"\n  (scrollLeftChanged)=\"processScrollLeft($event)\"\n  [invisibleScrollbars]=\"['horizontal', 'vertical']\"\n  [scrollDragMode]=\"'horizontal'\"\n  (scrolledToHorizontalStart)=\"setLeftGradient($event)\"\n  (scrolledToHorizontalEnd)=\"setRightGradient($event)\"\n  (contentDragStart)=\"handleContentDragStart()\"\n  (contentDragEnd)=\"handleContentDragEnd()\"\n>\n  <div class=\"tabs__container\" #tabsContainer>\n    <div class=\"tabs__items\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</pupa-scrollable>\n<div class=\"tabs__rail-container\">\n  <div class=\"tabs__rail tabs-rail\" #rail>\n    <div\n      [style.width.px]=\"railHighlighterWidthPx$ | async\"\n      [style.transform]=\"railHighlighterOffsetLeftTransform$ | async\"\n      class=\"tabs-rail__highlighter\"\n    ></div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { PupaScrollableModule } from '../scrollable/scrollable.module';\nimport { TabsContainerComponent } from './components/tabs-container/tabs-container.component';\nimport { TabsContentComponent } from './components/tabs-content/tabs-content.component';\nimport { TabsItemComponent } from './components/tabs-item/tabs-item.component';\nimport { TabsSeparatorComponent } from './components/tabs-separator/tabs-separator.component';\nimport { TabsComponent } from './components/tabs/tabs.component';\nimport { TabsItemContentTemplateDirective } from './directives/tabs-item-content-template.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  TabsComponent,\n  TabsItemComponent,\n  TabsContainerComponent,\n  TabsContentComponent,\n  TabsItemContentTemplateDirective,\n  TabsSeparatorComponent,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [\n  TabsComponent,\n  TabsItemComponent,\n  TabsContainerComponent,\n  TabsContentComponent,\n  TabsItemContentTemplateDirective,\n];\n\n@NgModule({\n  declarations: [...COMPONENTS, ...DIRECTIVES],\n  imports: [CommonModule, PupaScrollableModule],\n  exports: [...COMPONENTS, ...DIRECTIVES],\n})\nexport class PupaTabsModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TagStateServiceDeclaration } from '../../../declarations/interfaces/tag-state-service.interface';\nimport { TagKind } from '../../../declarations/types/tag-kind.type';\n\n@Injectable()\nexport class TagStateService implements TagStateServiceDeclaration {\n  public readonly isDisabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly tabIndex$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n  public readonly isClickable$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public readonly kind$: BehaviorSubject<TagKind> = new BehaviorSubject<TagKind>('opacity');\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { filterTruthy } from '@bimeister/utilities';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { TagStateService } from '../../services/tag-state.service';\n\n@Component({\n  selector: 'pupa-tag-delete-button',\n  templateUrl: './pupa-tag-delete-button.component.html',\n  styleUrls: ['./pupa-tag-delete-button.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagDeleteButtonComponent {\n  public readonly isDisabled$: Observable<boolean> = this.tagStateService.isDisabled$;\n\n  constructor(private readonly tagStateService: TagStateService) {}\n\n  public closeHandler(event: Event): void {\n    this.isDisabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\n  }\n}\n","<pupa-icon\n  class=\"tag-delete-button\"\n  [class.tag-delete-button_disabled]=\"isDisabled$ | async\"\n  name=\"app-exceptions-cross-8\"\n  (click)=\"closeHandler($event)\"\n></pupa-icon>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'pupa-tag-text',\n  templateUrl: './pupa-tag-text.component.html',\n  styleUrls: ['./pupa-tag-text.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagTextComponent {}\n","<ng-content></ng-content>\n","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  Input,\n  OnChanges,\n  AfterViewInit,\n  ElementRef,\n  NgZone,\n  OnDestroy,\n} from '@angular/core';\nimport { isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, fromEvent, merge, Observable, Subscription } from 'rxjs';\nimport { map, take, withLatestFrom } from 'rxjs/operators';\nimport { TagKind } from '../../../../declarations/types/tag-kind.type';\nimport { TagStateService } from '../../services/tag-state.service';\nimport { ComponentChange, ComponentChanges, subscribeOutsideAngular } from '@bimeister/pupakit.common';\n\n@Component({\n  selector: 'pupa-tag-action-button',\n  templateUrl: './tag-action-button.component.html',\n  styleUrls: ['./tag-action-button.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagActionButtonComponent implements AfterViewInit, OnChanges, OnDestroy {\n  @Input() public readonly active: boolean = false;\n  public isActive$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public readonly isDisabled$: Observable<boolean> = this.tagStateService.isDisabled$;\n  public readonly kindClass$: Observable<string> = this.tagStateService.kind$.pipe(\n    map((kind: TagKind) => `button_${kind}`)\n  );\n\n  private readonly subscription: Subscription = new Subscription();\n\n  constructor(\n    private readonly tagStateService: TagStateService,\n    private readonly hostElementRef: ElementRef,\n    private readonly ngZone: NgZone\n  ) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processActiveChange(changes?.active);\n  }\n\n  public ngAfterViewInit(): void {\n    this.subscription.add(this.processSelfClickAndTouch());\n  }\n\n  public ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  private processActiveChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isActive$.next(updatedValue);\n  }\n\n  private processSelfClickAndTouch(): Subscription {\n    return merge(\n      fromEvent(this.hostElementRef.nativeElement, 'click'),\n      fromEvent(this.hostElementRef.nativeElement, 'touchstart')\n    )\n      .pipe(subscribeOutsideAngular(this.ngZone), withLatestFrom(this.isDisabled$.pipe(take(1))))\n      .subscribe(([event, isDisabled]: [Event, boolean]) =>\n        isDisabled ? event.stopImmediatePropagation() : event.stopPropagation()\n      );\n  }\n}\n","<div>\n  <button\n    type=\"button\"\n    class=\"action-button\"\n    [class.active]=\"isActive$ | async\"\n    [attr.disabled]=\"(isDisabled$ | async) ? true : null\"\n    [class]=\"kindClass$ | async\"\n  >\n    <ng-content></ng-content>\n  </button>\n</div>\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { filterTruthy, isNil } from '@bimeister/utilities';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { TagStateServiceDeclaration } from '../../interfaces/tag-state-service.interface';\nimport { TagKind } from '../../types/tag-kind.type';\n\n@Directive()\nexport abstract class TagBase implements OnChanges {\n  @Input() public disabled: boolean = false;\n  public readonly isDisabled$: BehaviorSubject<boolean> = this.tagStateService.isDisabled$;\n\n  @Input() public clickable: boolean = false;\n  public readonly isClickable$: BehaviorSubject<boolean> = this.tagStateService.isClickable$;\n\n  @Input() public kind: TagKind = 'opacity';\n  private readonly kind$: BehaviorSubject<TagKind> = this.tagStateService.kind$;\n\n  public readonly kindClass$: Observable<string> = this.kind$.pipe(map((kind: TagKind) => `tag_${kind}`));\n  public readonly isInteractive$: Observable<boolean> = combineLatest([\n    this.tagStateService.isDisabled$,\n    this.tagStateService.isClickable$,\n  ]).pipe(map(([isDisabled, isClickable]: [boolean, boolean]) => !isDisabled && isClickable));\n\n  constructor(protected readonly tagStateService: TagStateServiceDeclaration) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processDisabledChange(changes?.disabled);\n    this.processClickableChange(changes?.clickable);\n    this.processColorChange(changes?.kind);\n  }\n\n  public processInteraction(event: Event): void {\n    this.isDisabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\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.isDisabled$.next(updatedValue);\n  }\n\n  private processClickableChange(change: ComponentChange<this, boolean>): void {\n    const updatedValue: boolean | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.isClickable$.next(updatedValue);\n  }\n\n  private processColorChange(change: ComponentChange<this, TagKind>): void {\n    const updatedValue: TagKind | undefined = change?.currentValue;\n\n    if (isNil(updatedValue)) {\n      return;\n    }\n\n    this.kind$.next(updatedValue);\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Renderer2,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { isNil, Nullable } from '@bimeister/utilities';\nimport { TagBase } from '../../../../declarations/classes/abstract/tag-base.abstract';\nimport { TagStateService } from '../../services/tag-state.service';\n\n@Component({\n  selector: 'pupa-tag-inline, [pupaTagInline]',\n  templateUrl: './tag-inline.component.html',\n  styleUrls: ['./tag-inline.component.scss'],\n  providers: [TagStateService],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagInlineComponent extends TagBase implements AfterContentInit {\n  constructor(\n    private readonly elementRef: ElementRef,\n    private readonly renderer2: Renderer2,\n    tagStateService: TagStateService\n  ) {\n    super(tagStateService);\n  }\n\n  public ngAfterContentInit(): void {\n    this.setInlineStyleForElements(this.elementRef?.nativeElement?.children);\n  }\n\n  private setInlineStyleForElements(elements: Nullable<HTMLCollection>): void {\n    if (isNil(elements)) {\n      return;\n    }\n\n    Array.from(elements).forEach((element: HTMLElement) => {\n      if (element.children.length !== 0) {\n        this.setInlineStyleForElements(element.children);\n      }\n      this.setInlineStyle(element);\n    });\n  }\n\n  private setInlineStyle(element: HTMLElement): void {\n    this.renderer2.setStyle(element, 'display', 'inline');\n  }\n}\n","<div\n  class=\"tag\"\n  [class.tag_disabled]=\"isDisabled$ | async\"\n  [class]=\"kindClass$ | async\"\n  [class.tag_clickable]=\"isClickable$ | async\"\n>\n  <ng-content></ng-content>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[pupaTagActionButtonTemplate]',\n})\nexport class TagActionButtonTemplateDirective {\n  constructor(public readonly templateRef: TemplateRef<unknown>) {}\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { filterTruthy } from '@bimeister/utilities';\nimport { TagBase } from '../../../../declarations/classes/abstract/tag-base.abstract';\nimport { take } from 'rxjs/operators';\nimport { TagActionButtonTemplateDirective } from '../../directives/tag-action-button-template.directive';\nimport { TagStateService } from '../../services/tag-state.service';\n\n@Component({\n  selector: 'pupa-tag',\n  templateUrl: './tag.component.html',\n  styleUrls: ['./tag.component.scss'],\n  providers: [TagStateService],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagComponent extends TagBase {\n  @ContentChild(TagActionButtonTemplateDirective)\n  public readonly tagActionButtonTemplateDirective: TagActionButtonTemplateDirective;\n\n  constructor(tagStateService: TagStateService) {\n    super(tagStateService);\n  }\n\n  public processInteraction(event: Event): void {\n    this.isDisabled$.pipe(take(1), filterTruthy()).subscribe(() => {\n      event.stopPropagation();\n    });\n  }\n}\n","<div class=\"tag-wrapper\" (click)=\"processInteraction($event)\">\n  <ng-container *ngIf=\"isInteractive$ | async; else nonInteractiveTagTemplate\">\n    <button\n      type=\"button\"\n      class=\"tag tag_clickable\"\n      [class.tag_disabled]=\"isDisabled$ | async\"\n      [class]=\"kindClass$ | async\"\n    >\n      <ng-container [ngTemplateOutlet]=\"tagContentTemplate\"></ng-container>\n    </button>\n  </ng-container>\n\n  <ng-container *ngIf=\"tagActionButtonTemplateDirective\">\n    <ng-container [ngTemplateOutlet]=\"tagActionButtonTemplateDirective.templateRef\"></ng-container>\n  </ng-container>\n</div>\n\n<ng-template #nonInteractiveTagTemplate>\n  <div class=\"tag\" [class.tag_disabled]=\"isDisabled$ | async\" [class]=\"kindClass$ | async\">\n    <ng-container [ngTemplateOutlet]=\"tagContentTemplate\"></ng-container>\n  </div>\n</ng-template>\n\n<ng-template #tagContentTemplate>\n  <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { appExceptionsCross8Icon, PupaIconsModule } from '@bimeister/pupakit.icons';\nimport { PupaDropdownModule } from '../dropdown/dropdown.module';\nimport { TagDeleteButtonComponent } from './components/pupa-tag-delete-button/pupa-tag-delete-button.component';\nimport { TagTextComponent } from './components/pupa-tag-text/pupa-tag-text.component';\nimport { TagActionButtonComponent } from './components/tag-action-button/tag-action-button.component';\nimport { TagInlineComponent } from './components/tag-inline/tag-inline.component';\nimport { TagComponent } from './components/tag/tag.component';\nimport { TagActionButtonTemplateDirective } from './directives/tag-action-button-template.directive';\n\nconst COMPONENTS: Type<unknown>[] = [\n  TagComponent,\n  TagDeleteButtonComponent,\n  TagTextComponent,\n  TagActionButtonComponent,\n  TagInlineComponent,\n];\n\nconst DIRECTIVES: Type<unknown>[] = [TagActionButtonTemplateDirective];\n\nconst DECLARATIONS: Type<unknown>[] = [...COMPONENTS, ...DIRECTIVES];\nconst EXPORTS: Type<unknown>[] = [...DECLARATIONS];\n\n@NgModule({\n  declarations: [...DECLARATIONS],\n  imports: [CommonModule, PupaDropdownModule, PupaIconsModule.forFeature([appExceptionsCross8Icon])],\n  exports: [...EXPORTS],\n})\nexport class PupaTagModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';\nimport { isNil } from '@bimeister/utilities';\nimport { asyncScheduler, BehaviorSubject, Observable, Subscription, timer } from 'rxjs';\nimport { map, observeOn, switchMap, take } from 'rxjs/operators';\n\nconst MAX_SECONDS: number = 999;\nconst SMALL_FONT_AFTER: number = 99;\nconst SVG_VIEWPORT_SIZE_PX: number = 24;\nconst TIMER_INDICATOR_WIDTH_PX: number = 2;\n\n@Component({\n  selector: 'pupa-timer-round',\n  templateUrl: './timer-round.component.html',\n  styleUrls: ['./timer-round.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimerRoundComponent implements OnChanges {\n  @ViewChild('timerPath', { static: true }) private readonly timerPathRef: ElementRef<SVGPathElement>;\n\n  @Output() public readonly timeIsUp: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input() public seconds: number = 0;\n  private sanitizedSecondsInput: number = 0;\n\n  private readonly radiusPx: number = (SVG_VIEWPORT_SIZE_PX - TIMER_INDICATOR_WIDTH_PX / 2) / 2;\n  private readonly strokeLength: number = 2 * Math.PI * this.radiusPx;\n\n  private subscription: Subscription | null = null;\n\n  private readonly seconds$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n  public readonly displaySeconds$: Observable<number> = this.seconds$.pipe(\n    map((seconds: number) => Math.min(seconds + 1, this.sanitizedSecondsInput))\n  );\n  public readonly isSmallLabel$: Observable<boolean> = this.displaySeconds$.pipe(\n    map((seconds: number) => seconds > SMALL_FONT_AFTER)\n  );\n\n  public readonly isActive$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  constructor(public readonly renderer: Renderer2) {}\n\n  public ngOnChanges(changes: ComponentChanges<this>): void {\n    this.processMsChanges(changes.seconds);\n  }\n\n  public restart(): void {\n    this.stopTimer();\n    setTimeout(() => this.initTimer());\n  }\n\n  public stop(): void {\n    this.stopTimer();\n  }\n\n  private processMsChanges(change: ComponentChange<this, number>): void {\n    const seconds: number = change?.currentValue ?? 0;\n    this.sanitizedSecondsInput = seconds > MAX_SECONDS ? MAX_SECONDS : seconds;\n    this.initTimer();\n  }\n\n  private initTimer(): void {\n    this.seconds$.next(this.sanitizedSecondsInput);\n    this.setTimerPercentage(100);\n\n    this.startTimer();\n  }\n\n  private startTimer(): void {\n    this.stopTimer();\n\n    this.isActive$.next(true);\n    this.subscription = timer(0, 1000)\n      .pipe(\n        observeOn(asyncScheduler),\n        switchMap(() => this.seconds$.pipe(take(1)))\n      )\n      .subscribe((seconds: number) => {\n        const remainingSeconds: number = seconds - 1;\n        this.seconds$.next(remainingSeconds);\n\n        if (seconds === 0) {\n          this.stopTimer();\n          this.timeIsUp.emit();\n          return;\n        }\n\n        this.setTimerPercentage((remainingSeconds / this.sanitizedSecondsInput) * 100);\n      });\n  }\n\n  private stopTimer(): void {\n    this.isActive$.next(false);\n    this.seconds$.next(this.sanitizedSecondsInput);\n    this.setTimerPercentage(100);\n\n    if (isNil(this.subscription)) {\n      return;\n    }\n\n    this.subscription.unsubscribe();\n    this.subscription = null;\n  }\n\n  private setTimerPercentage(percentage: number): void {\n    this.renderer.setAttribute(\n      this.timerPathRef.nativeElement,\n      'stroke-dasharray',\n      `${(this.strokeLength * percentage) / 100} ${this.strokeLength}`\n    );\n  }\n}\n","<div class=\"timer\" [class.timer_active]=\"isActive$ | async\">\n  <svg class=\"timer__svg\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g class=\"timer__circle\">\n      <circle class=\"timer__path-elapsed\" cx=\"12\" cy=\"12\" r=\"11\" />\n      <path\n        #timerPath\n        class=\"timer__path-remaining\"\n        d=\"\n          M 12, 12\n          m -11, 0\n          a 11,11 0 1,0 22,0\n          a 11,11 0 1,0 -22,0\n        \"\n      ></path>\n    </g>\n  </svg>\n  <span class=\"timer__label\" [class.timer__label_small]=\"isSmallLabel$ | async\">\n    {{ displaySeconds$ | async }}\n  </span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { TimerRoundComponent } from './components/timer-round/timer-round.component';\n\nconst EXPORTS: Type<unknown>[] = [TimerRoundComponent];\n\n@NgModule({\n  declarations: [...EXPORTS],\n  imports: [CommonModule],\n  exports: EXPORTS,\n})\nexport class PupaTimerModule {}\n","import { NgModule, Type } from '@angular/core';\nimport { PupaAccordionModule } from './components/accordion/accordion.module';\nimport { PupaAvatarModule } from './components/avatar/avatar.module';\nimport { PupaBadgeModule } from './components/badge/badge.module';\nimport { PupaBreadcrumbsModule } from './components/breadcrumbs/breadcrumbs.module';\nimport { PupaButtonGroupModule } from './components/button-group/button-group.module';\nimport { PupaButtonsModule } from './components/buttons/buttons.module';\nimport { PupaCardModule } from './components/card/card.module';\nimport { PupaCheckboxModule } from './components/checkbox/checkbox.module';\nimport { PupaCounterModule } from './components/counter/counter.module';\nimport { PupaDropdownMenuModule } from './components/dropdown-menu/dropdown-menu.module';\nimport { PupaDropdownModule } from './components/dropdown/dropdown.module';\nimport { PupaIconHolderModule } from './components/icon-holder/icon-holder.module';\nimport { PupaLayoutModule } from './components/layout/layout.module';\nimport { PupaLinkModule } from './components/link/link.module';\nimport { PupaOptionModule } from './components/option/option.module';\nimport { PupaProgressBarModule } from './components/progress-bar/progress-bar.module';\nimport { PupaScrollableModule } from './components/scrollable/scrollable.module';\nimport { PupaSectionModule } from './components/section/section.module';\nimport { PupaSkeletonModule } from './components/skeleton/skeleton.module';\nimport { PupaSpinnerModule } from './components/spinner/spinner.module';\nimport { PupaStatusModule } from './components/status/status.module';\nimport { PupaStepperModule } from './components/stepper/stepper.module';\nimport { PupaTabsModule } from './components/tabs/tabs.module';\nimport { PupaTagModule } from './components/tag/tag.module';\nimport { PupaThemeWrapperModule } from './components/theme-wrapper/theme-wrapper.module';\nimport { PupaTimerModule } from './components/timer/timer.module';\nimport { PupaTooltipModule } from './components/tooltip/tooltip.module';\n\nconst MODULES: Type<unknown>[] = [\n  PupaSkeletonModule,\n  PupaScrollableModule,\n  PupaTagModule,\n  PupaDropdownModule,\n  PupaTooltipModule,\n  PupaSpinnerModule,\n  PupaButtonsModule,\n  PupaCheckboxModule,\n  PupaOptionModule,\n  PupaTimerModule,\n  PupaLinkModule,\n  PupaDropdownMenuModule,\n  PupaAccordionModule,\n  PupaAvatarModule,\n  PupaBadgeModule,\n  PupaBreadcrumbsModule,\n  PupaButtonGroupModule,\n  PupaCardModule,\n  PupaCounterModule,\n  PupaIconHolderModule,\n  PupaLayoutModule,\n  PupaProgressBarModule,\n  PupaSectionModule,\n  PupaStatusModule,\n  PupaTabsModule,\n  PupaStepperModule,\n  PupaThemeWrapperModule,\n];\n\n@NgModule({\n  declarations: [],\n  imports: MODULES,\n  exports: MODULES,\n})\nexport class PupaKitModule {}\n"],"names":["i2","COMPONENTS","i1","i1.ThemeWrapperService","i2.ThemeWrapperComponent","i3.ThemeWrapperService","i2.SpinnerComponent","i3","i4.DropdownDirective","DECLARATIONS","EXPORTS","i1.CheckboxService","i2.CheckboxComponent","i1.DropdownMenuContextService","i2.OptionComponent","DIRECTIVES","i2.ScrollableComponent","i1.TooltipService","i3.PupaTooltipDirective","i5.DropdownTemplateDirective","i6.DropdownMenuComponent","i7.DropdownMenuItemComponent","i8.BreadcrumbComponent","i9.BreadcrumbSeparatorComponent","i10.BreadcrumbUnfitTriggerComponent","i1.CardStateService","i2.CardContainerComponent","i1.LoaderService","i3.GridStateService","i4","i5.SpinnerComponent","i1.SkeletonComponent","i4.StepperCounterComponent","i1.TagStateService"],"mappings":"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"}