@design-factory/design-factory 19.0.1 → 19.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"design-factory.mjs","sources":["../../../projects/design-factory/src/lib/angular/accessibility/directives/skip-link.directive.ts","../../../projects/design-factory/src/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.ts","../../../projects/design-factory/src/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.html","../../../projects/design-factory/src/lib/angular/accessibility/accessibility.module.ts","../../../projects/design-factory/src/lib/angular/icon/insert/insert-icon.directive.ts","../../../projects/design-factory/src/lib/angular/icon/insert/insert-icon.module.ts","../../../projects/design-factory/src/lib/angular/toast/toast.module.ts","../../../projects/design-factory/src/lib/angular/alert/alert.module.ts","../../../projects/design-factory/src/lib/angular/inputs/click/trigger-click.directive.ts","../../../projects/design-factory/src/lib/angular/inputs/icon/inputicon.directive.ts","../../../projects/design-factory/src/lib/angular/inputs/input-advanced.module.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-keyboard-nav.service.ts","../../../projects/design-factory/src/lib/angular/right-to-left/directionDetection.service.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-range.directive.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-range.service.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker.module.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/mediaUtils.service.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/media.service.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/ifMedia.directive.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/media.module.ts","../../../projects/design-factory/src/lib/angular/footer/footer.module.ts","../../../projects/design-factory/src/lib/angular/icon/amadeus-icon.ts","../../../projects/design-factory/src/lib/angular/icon/icon.module.ts","../../../projects/design-factory/src/lib/angular/modal/modal.service.ts","../../../projects/design-factory/src/lib/angular/popover/config/popover.config.ts","../../../projects/design-factory/src/lib/angular/popover/popover.module.ts","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.component.ts","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.component.html","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.module.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-config.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-container.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/default/default-spinner.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/default/default-spinner.component.html","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-backdrop.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-ref.ts","../../../projects/design-factory/src/lib/angular/utils/scrollbar.service.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.service.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.directive.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.module.ts","../../../projects/design-factory/src/lib/angular/slider/direction/sliderdirection.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/options.ts","../../../projects/design-factory/src/lib/angular/slider/lib/pointer-type.ts","../../../projects/design-factory/src/lib/angular/slider/lib/change-context.ts","../../../projects/design-factory/src/lib/angular/slider/lib/value-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/compatibility-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/math-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/event-listener.ts","../../../projects/design-factory/src/lib/angular/slider/lib/event-listener-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-element.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-handle.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-label.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/tooltip-wrapper.component.ts","../../../projects/design-factory/src/lib/angular/slider/lib/tooltip-wrapper.component.html","../../../projects/design-factory/src/lib/angular/slider/lib/slider.component.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider.component.html","../../../projects/design-factory/src/lib/angular/slider/slider.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav-config.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.service.ts","../../../projects/design-factory/src/environment.ts","../../../projects/design-factory/src/lib/angular/animation/util.ts","../../../projects/design-factory/src/lib/angular/animation/ngbTransition.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapseConfig.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.service.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavAnimation.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/manage-sidenav.directive.ts","../../../projects/design-factory/src/lib/angular/utils/html-element-helper.ts","../../../projects/design-factory/src/lib/angular/utils/titleTruncate.directive.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenavlist.component.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenavlist.component.html","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.component.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.component.html","../../../projects/design-factory/src/lib/angular/sidenav/excludeTrap.directive.ts","../../../projects/design-factory/src/lib/angular/selects/select.model.ts","../../../projects/design-factory/src/lib/angular/selects/nav/manage-nav-select.directive.ts","../../../projects/design-factory/src/lib/angular/selects/option-highlight.directive.ts","../../../projects/design-factory/src/lib/angular/selects/events/manage-badge-events.directive.ts","../../../projects/design-factory/src/lib/angular/selects/select.module.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.service.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.directive.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.component.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.component.html","../../../projects/design-factory/src/lib/angular/stepper/stepper.module.ts","../../../projects/design-factory/src/lib/angular/tooltip/truncate/tooltipTruncate.directive.ts","../../../projects/design-factory/src/lib/angular/tooltip/tooltip.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.module.ts","../../../projects/design-factory/src/lib/angular/card/manage-card-selection.directive.ts","../../../projects/design-factory/src/lib/angular/card/card-advanced.module.ts","../../../projects/design-factory/src/lib/angular/df.module.ts","../../../projects/design-factory/src/lib/angular/waves-of-progress/waves.directive.ts","../../../projects/design-factory/src/lib/angular/waves-of-progress/waves.module.ts","../../../projects/design-factory/src/lib/index.ts","../../../projects/design-factory/src/index.ts","../../../projects/design-factory/src/design-factory.ts"],"sourcesContent":["import { Directive, ElementRef, signal, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[dfSkipLink]',\n host: {\n class: 'list-group-item list-group-item-action',\n '(focus)': 'inFocus.set(true)',\n '(click)': 'focusOnTarget()',\n '(blur)': 'inFocus.set(false)'\n }\n})\nexport class SkipLinkDirective {\n readonly inFocus = signal(false);\n\n private readonly element = inject(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n focusOnTarget() {\n const href = String(this.element.nativeElement.getAttribute('href'));\n const parts = href.split('#');\n if (parts.length < 2) {\n return;\n }\n const id = parts.pop();\n if (!id) {\n return;\n }\n setTimeout(() => {\n const target = this.document.getElementById(id);\n if (target) {\n target.focus();\n this.inFocus.set(false);\n }\n });\n }\n}\n","import { SkipLinkDirective } from '../../directives/skip-link.directive';\nimport { Component, ChangeDetectionStrategy, contentChildren, computed } from '@angular/core';\n\n@Component({\n selector: 'df-skip-links-container',\n templateUrl: './skip-links-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkipLinksContainerComponent {\n private readonly links = contentChildren(SkipLinkDirective);\n readonly inFocus = computed(() => this.links().some((link) => link.inFocus()));\n}\n","<section class=\"df-skip-links__section\">\n <div class=\"df-skip-links\">\n <div class=\"df-skip-links-wrap list-group\" [class.focus]=\"inFocus()\">\n <ng-content></ng-content>\n </div>\n </div>\n</section>\n","import { NgModule } from '@angular/core';\nimport { SkipLinksContainerComponent } from './components/skip-links-container/skip-links-container.component';\nimport { SkipLinkDirective } from './directives/skip-link.directive';\n\nexport { SkipLinksContainerComponent } from './components/skip-links-container/skip-links-container.component';\nexport { SkipLinkDirective } from './directives/skip-link.directive';\n@NgModule({\n imports: [SkipLinkDirective, SkipLinksContainerComponent],\n exports: [SkipLinkDirective, SkipLinksContainerComponent]\n})\nexport class DfAccessibilityModule {\n}\n","import { Directive, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\n\n@Directive({\n selector: 'ngb-alert[dfInsertAlertIcon],ngb-toast[dfInsertToastIcon]',\n host: {\n ngSkipHydration: 'true'\n }\n})\nexport class DfInsertIconDirective implements AfterViewInit {\n private readonly supportedCmps = ['alert', 'toast'];\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2\n ) {}\n\n ngAfterViewInit() {\n const cssClasses = this.el.nativeElement.classList;\n\n // we create the HTML icon element with the renderer\n const iconEl = this.renderer.createElement('span');\n this.renderer.addClass(iconEl, 'df-insert-icon');\n this.renderer.addClass(iconEl, this.getIconClassFromClasses(cssClasses));\n this.renderer.setAttribute(iconEl, 'aria-hidden', 'true');\n\n // we insert the icon element inside the DOM of the alert element\n this.renderer.insertBefore(this.el.nativeElement, iconEl, this.el.nativeElement.firstChild);\n }\n\n getIconClassFromClasses(cssClasses: DOMTokenList): string {\n const cmp = this.supportedCmps.find((cmp) => cssClasses.contains(cmp));\n if (cmp) {\n if (cssClasses.contains(`${cmp}-success`)) {\n return 'fa-check-circle';\n }\n if (cssClasses.contains(`${cmp}-warning`)) {\n return 'fa-exclamation-triangle';\n }\n if (cssClasses.contains(`${cmp}-danger`)) {\n return 'fa-minus-circle';\n }\n if (cssClasses.contains(`${cmp}-tip`)) {\n return 'fa-lightbulb';\n }\n }\n return 'fa-info-circle';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfInsertIconDirective } from './insert-icon.directive';\n\nexport { DfInsertIconDirective } from './insert-icon.directive';\n\n\n@NgModule({\n imports: [DfInsertIconDirective],\n exports: [DfInsertIconDirective]\n})\nexport class DfInsertIconModule {\n}\n","import { NgModule } from '@angular/core';\nimport { NgbToastModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfInsertIconModule } from '../icon/insert/insert-icon.module';\n\n@NgModule({\n imports: [DfInsertIconModule],\n exports: [NgbToastModule, DfInsertIconModule]\n})\nexport class DfToastModule {\n}\n","import { NgModule } from '@angular/core';\nimport { NgbAlertModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfInsertIconModule } from '../icon/insert/insert-icon.module';\n\n@NgModule({\n imports: [DfInsertIconModule],\n exports: [NgbAlertModule, DfInsertIconModule]\n})\nexport class DfAlertModule {\n}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[dfTriggerClick]'\n})\nexport class DfTriggerClickDirective {\n constructor(private readonly elementRef: ElementRef) {}\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n triggerClick(event: KeyboardEvent | MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n this.elementRef.nativeElement.click();\n }\n}\n","import { Directive, ElementRef, Renderer2, OnInit, DoCheck, OnDestroy, input, inject } from '@angular/core';\n\nexport type DfDirection = 'append' | 'prepend';\n\n/**\n * My dfInputIcon directive\n */\n@Directive({\n exportAs: 'dfInputIcon',\n selector: '[dfInputIcon]',\n host: {\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n '(keydown.Tab)': 'onTab($event)'\n }\n})\nexport class DfInputIconDirective implements OnInit, DoCheck, OnDestroy {\n readonly dfInputIcon = input.required<DfDirection[]>();\n\n // Button that is in case of input with prepend buttn\n private button: any;\n private removeListener?: () => void;\n private isDisabled = false;\n private readonly siblingsNode: any[] = [];\n\n private readonly renderer = inject(Renderer2);\n private readonly el = inject(ElementRef);\n\n ngDoCheck() {\n if (this.el.nativeElement.disabled !== this.isDisabled) {\n this.isDisabled = this.el.nativeElement.disabled;\n this.siblingsNode.forEach((siblings) => {\n if (this.isDisabled) {\n this.renderer.addClass(siblings, 'df-disabled');\n } else {\n this.renderer.removeClass(siblings, 'df-disabled');\n }\n });\n }\n }\n\n ngOnInit() {\n this.renderer.addClass(this.el.nativeElement, 'df-input-withicon');\n this.dfInputIcon().forEach((direction) => {\n this.renderer.addClass(this.el.nativeElement, direction.toString());\n this.renderer.addClass(this.el.nativeElement.parentNode, `df-input-${direction}`);\n const sibling = this.el.nativeElement.parentNode.querySelector(`.input-group-${direction}`);\n if (sibling) {\n this.siblingsNode.push(sibling);\n if (direction.toString() === 'prepend') {\n this.button = sibling.querySelector('button');\n if (this.button) {\n this.initButtonHandler();\n }\n }\n }\n });\n }\n\n /**\n * onBlur catch blur event to set the focused to false\n */\n onBlur() {\n this.renderer.removeClass(this.el.nativeElement.parentNode, 'df-focused');\n }\n\n onFocus() {\n this.renderer.addClass(this.el.nativeElement.parentNode, 'df-focused');\n }\n\n onTab(e: KeyboardEvent) {\n if (this.button) {\n e.preventDefault();\n this.button.focus();\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n }\n }\n\n ngOnDestroy() {\n if (this.removeListener) {\n this.removeListener();\n }\n }\n\n private initButtonHandler() {\n this.renderer.setAttribute(this.button, 'tabindex', '-1');\n this.removeListener = this.renderer.listen(this.button, 'blur', () => {\n setTimeout(() => {\n this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');\n });\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfTriggerClickDirective } from './click/trigger-click.directive';\nimport { DfInputIconDirective } from './icon/inputicon.directive';\n\nexport { DfTriggerClickDirective } from './click/trigger-click.directive';\nexport { DfInputIconDirective } from './icon/inputicon.directive';\n\n@NgModule({\n imports: [DfTriggerClickDirective, DfInputIconDirective],\n exports: [DfTriggerClickDirective, DfInputIconDirective]\n})\nexport class DfAdvancedInputModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbDatepicker, NgbDatepickerKeyboardService } from '@ng-bootstrap/ng-bootstrap';\n\nconst Key = {\n PageUp: 'PageUp',\n PageDown: 'PageDown',\n End: 'End',\n Home: 'Home'\n};\n\n@Injectable()\nexport class DfDatepickerKeyboardService extends NgbDatepickerKeyboardService {\n override processKey(event: KeyboardEvent, dp: NgbDatepicker) {\n const { state, calendar } = dp;\n switch (event.code) {\n case Key.PageUp:\n dp.focusDate(calendar.getPrev(state.focusedDate, event.altKey ? 'y' : 'm'));\n break;\n case Key.PageDown:\n dp.focusDate(calendar.getNext(state.focusedDate, event.altKey ? 'y' : 'm'));\n break;\n case Key.End:\n dp.focusDate(event.altKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n dp.focusDate(event.altKey ? state.minDate : state.firstDate);\n break;\n default:\n super.processKey(event, dp);\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, ElementRef } from '@angular/core';\n\nexport enum RightToLeftDirectionEnum {\n LeftToRight = 'ltr',\n RightToLeft = 'rtl',\n Auto = 'auto'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfDirectionDetectionService {\n getPageDirection(element: ElementRef): string {\n let curElement = element.nativeElement;\n while (curElement !== null) {\n if (curElement.getAttribute('dir') === RightToLeftDirectionEnum.RightToLeft) {\n return RightToLeftDirectionEnum.RightToLeft;\n } else if (curElement.getAttribute('dir') === RightToLeftDirectionEnum.LeftToRight) {\n return RightToLeftDirectionEnum.LeftToRight;\n }\n curElement = curElement.parentElement;\n }\n return RightToLeftDirectionEnum.LeftToRight;\n }\n}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../right-to-left/directionDetection.service';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * My dfDatepickerRange directive\n */\n@Directive({\n exportAs: 'dfDatepickerRange',\n selector: '[dfDatepickerRange]'\n})\nexport class DfDatepickerRangeDirective implements OnInit, OnDestroy, DoCheck, AfterViewInit {\n private inputsElements!: HTMLInputElement[];\n private isDisabled = false;\n private readonly siblingsNode: Element[] = [];\n private readonly removeListener: (() => void)[] = [];\n private focusState: boolean[] = [];\n private direction?: string;\n\n private readonly renderer = inject(Renderer2);\n readonly el = inject(ElementRef);\n private readonly dfDirectionServ = inject(DfDirectionDetectionService);\n private readonly platformId = inject(PLATFORM_ID);\n\n ngOnInit() {\n this.renderer.addClass(this.el.nativeElement, 'df-input-datepicker-range');\n if (isPlatformBrowser(this.platformId)) {\n this.inputsElements = [...this.el.nativeElement.querySelectorAll('input')];\n } else {\n this.inputsElements = [];\n }\n if (this.inputsElements.length === 2) {\n this.inputsElements.forEach((el, index) => this.initInput(el, index));\n }\n }\n\n initInput(el: HTMLInputElement, index: number) {\n this.renderer.addClass(el, 'df-input-withicon');\n this.renderer.addClass(el, 'append');\n this.renderer.addClass(el.parentNode, 'df-input-append');\n const sibling = el.parentNode!.querySelector('.input-group-append');\n if (sibling) {\n this.siblingsNode.push(sibling);\n }\n this.removeListener.push(\n this.renderer.listen(el, 'focus', () => {\n this.focusState[index] = true;\n this.renderer.addClass(this.el.nativeElement, 'df-focused');\n })\n );\n this.removeListener.push(\n this.renderer.listen(el, 'blur', () => {\n this.focusState[index] = false;\n setTimeout(() => this.removeFocus(), 10);\n })\n );\n }\n\n removeFocus() {\n if (!this.focusState.reduce((prev, curr) => prev || curr)) {\n this.renderer.removeClass(this.el.nativeElement, 'df-focused');\n }\n }\n\n ngAfterViewInit() {\n this.updateDirection();\n }\n\n /**\n * You need to manually update the direction or update the icon\n * if the direction (rtl / ltr) is changing dynamically\n */\n updateDirection() {\n const currentDirection = this.dfDirectionServ.getPageDirection(this.el);\n if (this.direction !== currentDirection) {\n this.direction = currentDirection;\n const icon =\n this.el.nativeElement.querySelector('.fa-long-arrow-right') ||\n this.el.nativeElement.querySelector('.fa-long-arrow-left');\n if (icon) {\n if (currentDirection === RightToLeftDirectionEnum.RightToLeft) {\n this.renderer.removeClass(icon, 'fa-long-arrow-right');\n this.renderer.addClass(icon, 'fa-long-arrow-left');\n } else {\n this.renderer.removeClass(icon, 'fa-long-arrow-left');\n this.renderer.addClass(icon, 'fa-long-arrow-right');\n }\n }\n }\n }\n\n ngDoCheck() {\n // Update this to support disabled\n const currentStatus = this.inputsElements.reduce((prev, current) => prev || current.disabled, false);\n if (this.isDisabled !== currentStatus) {\n this.isDisabled = currentStatus;\n this.siblingsNode.forEach((siblings) => {\n if (this.isDisabled) {\n this.renderer.addClass(siblings, 'df-disabled');\n } else {\n this.renderer.removeClass(siblings, 'df-disabled');\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.removeListener.forEach((item) => item());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbCalendar, NgbDate, NgbDateParserFormatter, NgbDatepicker, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\n@Injectable()\nexport class DfDatepickerRangeService {\n fromDate: NgbDate | null = null;\n toDate: NgbDate | null = null;\n hoveredDate: NgbDate | null = null;\n fromDateAsStr = '';\n toDateAsStr = '';\n startDate: NgbDate | null = null;\n getFocusBack: HTMLInputElement | HTMLButtonElement | null = null;\n dropDown?: NgbDropdown;\n isClosingOnToDate = true;\n datepicker: NgbDatepicker | null = null;\n\n constructor(\n private readonly calendar: NgbCalendar,\n private readonly formatter: NgbDateParserFormatter\n ) {}\n\n onDateSelection(date: NgbDate) {\n if (!this.fromDate && !this.toDate) {\n this.fromDate = date;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n } else if (this.fromDate && !this.toDate && (date.equals(this.fromDate) || date.after(this.fromDate))) {\n this.toDate = date;\n this.toDateAsStr = this.formatter.format(this.toDate);\n if (this.isClosingOnToDate && this.dropDown) {\n this.dropDown.close();\n }\n } else {\n this.toDate = null;\n this.toDateAsStr = '';\n this.fromDate = date;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n }\n\n setFocus() {\n if (this.datepicker) {\n this.datepicker.focus();\n }\n }\n\n returnFocus() {\n if (this.getFocusBack !== null) {\n this.getFocusBack.focus();\n }\n }\n\n openChange(event: boolean) {\n if (event) {\n this.setFocus();\n } else {\n this.returnFocus();\n }\n }\n\n toggle(\n dropDown: NgbDropdown,\n element: HTMLInputElement | HTMLButtonElement | null = null,\n datepicker: NgbDatepicker | null = null\n ) {\n this.getFocusBack = element;\n this.dropDown = dropDown;\n this.datepicker = datepicker;\n dropDown.toggle();\n }\n\n isSelected(date: NgbDate): boolean {\n return date.equals(this.fromDate) || date.equals(this.toDate);\n }\n\n isFrom(date: NgbDate): boolean {\n return date.equals(this.fromDate) && !date.equals(this.toDate);\n }\n\n isTo(date: NgbDate): boolean {\n const toDate = this.effectiveToDate();\n return !date.equals(this.fromDate) && date.equals(toDate);\n }\n\n isBetween(date: NgbDate): boolean {\n const toDate = this.effectiveToDate();\n return date.after(this.fromDate) && date.before(toDate);\n }\n\n effectiveToDate(): NgbDate | null | undefined {\n return !this.toDate && this.hoveredDate ? this.hoveredDate : this.toDate;\n }\n\n parseInput(previous: NgbDate, typed: string): NgbDate | null {\n const parsed = this.formatter.parse(typed);\n return parsed && this.calendar.isValid(NgbDate.from(parsed)) ? NgbDate.from(parsed) : previous;\n }\n\n updateFrom(typed: string) {\n this.fromDate = this.fromDate ? this.parseInput(this.fromDate, typed) : null;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n\n updateTo(typed: string) {\n this.toDate = this.toDate ? this.parseInput(this.toDate, typed) : null;\n this.toDateAsStr = this.formatter.format(this.toDate);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgbDatepickerModule, NgbDatepickerKeyboardService, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfAdvancedInputModule } from '../inputs/input-advanced.module';\nimport { DfDatepickerKeyboardService } from './datepicker-keyboard-nav.service';\nimport { DfDatepickerRangeDirective } from './datepicker-range.directive';\nimport { DfDatepickerRangeService } from './datepicker-range.service';\n\nexport { DfDatepickerRangeDirective } from './datepicker-range.directive';\n\n@NgModule({\n imports: [NgbDropdownModule, DfDatepickerRangeDirective],\n exports: [NgbDatepickerModule, DfAdvancedInputModule, DfDatepickerRangeDirective, NgbDropdownModule],\n providers: [\n { provide: NgbDatepickerKeyboardService, useClass: DfDatepickerKeyboardService },\n DfDatepickerRangeService\n ]\n})\nexport class DfDatePickerModule {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, Observable, Subscription } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n// Default DF breakpoints\nexport const DF_BREAKPOINTS_VAR_DEFAULT = {\n xs: '--df-breakpoint-xs',\n sm: '--df-breakpoint-sm',\n md: '--df-breakpoint-md',\n lg: '--df-breakpoint-lg',\n xl: '--df-breakpoint-xl',\n xxl: '--df-breakpoint-xxl',\n xxxl: '--df-breakpoint-xxxl'\n};\n\nexport const BREAKPOINTS_VARS = new InjectionToken('Bootstrap Breakpoints', {\n providedIn: 'root',\n factory() {\n return DF_BREAKPOINTS_VAR_DEFAULT;\n }\n});\n\n@Injectable({ providedIn: 'root' })\nexport class DfBreakpoints {\n private readonly _breakPoints$ = new BehaviorSubject<{} | null>(null);\n\n constructor(\n @Inject(BREAKPOINTS_VARS) private readonly _breakPointsVar: { [breakpoint: string]: string },\n @Inject(PLATFORM_ID) private readonly platformID: Object\n ) {\n this.initBreakpoints();\n }\n\n get breakPoints$(): Observable<{} | null> {\n return this._breakPoints$.asObservable();\n }\n\n private initBreakpoints() {\n let breakPoints = null;\n if (isPlatformBrowser(this.platformID) && this._breakPoints$.value === null) {\n // we are in a browser so CSS variable are accessible\n // we init the BP only once\n const styles = window.getComputedStyle(document.documentElement) as any;\n const bpArray = [];\n for (const el of Object.keys(this._breakPointsVar)) {\n const curValue = this._breakPointsVar[el];\n const bpValue = Number.parseInt(styles.getPropertyValue(curValue), 10);\n if (isNaN(bpValue)) {\n // We should never enter here. Only if people did not put the correct list of CSS vars...\n // Or if the CSS is not arrived yet.\n // What should we do then?\n // TODO init from the default list provided if we want to?\n } else {\n bpArray.push([el, bpValue]);\n }\n }\n breakPoints = this.generate(bpArray);\n // In case the first page contains the directive and the CSS vars are not available\n // We may need to launch a second init at load time.\n if (Object.keys(breakPoints).length === 0) {\n fromEvent(window, 'load')\n .pipe(take(1))\n .subscribe(() => {\n // Init once as the service is available everywhere\n // We do not check if the CSS variable are changing over time\n // here onload the CSS var should be available\n this.initBreakpoints();\n });\n }\n }\n this._breakPoints$.next(breakPoints);\n }\n\n // Utilities to use if you want to create your own queries with your values.\n // sizes is an array of array BreakPoints with sizes[0] --> identifier of the BreakPoint\n // sizes[1] px value of the BreakPoint\n generate(sizes: any[][]): {} {\n sizes = sizes.sort((a, b) => a[1] - b[1]);\n const dict: { [key: string]: string } = {};\n for (let i = 0; i < sizes.length; i++) {\n const name = sizes[i][0];\n const min = sizes[i][1];\n const max = i === sizes.length - 1 ? undefined : sizes[i + 1][1];\n if (min === 0) {\n dict[name] = `(max-width: ${max - 0.01}px)`;\n } else if (max) {\n dict[name] = `(max-width: ${max - 0.01}px) and (min-width: ${min}px)`;\n } else {\n dict[name] = `(min-width: ${min}px)`;\n }\n }\n return dict;\n }\n}\n\nexport interface MediaQueryListMeta {\n mediaQueryList: MediaQueryList;\n mediaQueryList$: BehaviorSubject<MediaQueryListEvent>;\n}\n\nexport interface MediaBreakpointsState {\n matches: boolean;\n breakpoints: { [key: string]: boolean };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DfMediaQuery {\n private readonly _isBrowser: boolean;\n\n constructor(@Inject(PLATFORM_ID) platformId: Object) {\n this._isBrowser = isPlatformBrowser(platformId);\n }\n\n notSupported(query: string): Partial<MediaQueryList> {\n return { matches: false, media: query, addEventListener: () => {}, removeEventListener: () => {} };\n }\n\n matchMedia(query: string): MediaQueryList {\n if (this._isBrowser && window.matchMedia) {\n return window.matchMedia(query);\n } else {\n return this.notSupported(query) as MediaQueryList;\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DfMediaObserver implements OnDestroy {\n private readonly _subscription: Subscription = new Subscription();\n\n private readonly _queries = new Map<string, MediaQueryListMeta>();\n\n constructor(private readonly _mediaQuery: DfMediaQuery) {}\n\n /**\n * Verifies if at least one of the provided media-queries is matching\n * the current viewport\n */\n matches(queries: string[] | string): boolean {\n queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);\n return queries.some(q => this._registerQuery(q)!.mediaQueryList.matches);\n }\n\n /**\n * Produces an observable for a set of media-queries that will emit\n * meta information for any changes of the given queries.\n * @param value One or more media-queries to be observed.\n * @returns A stream of matches meta object for the given media-queries.\n */\n observe(queries: string | string[]): Observable<MediaBreakpointsState> {\n queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);\n return combineLatest(queries.map(q => this._registerQuery(q)!.mediaQueryList$)).pipe(\n map(\n (events: MediaQueryListEvent[]): MediaBreakpointsState =>\n events.reduce(\n (result, event) => {\n result.matches = result.matches || event.matches;\n result.breakpoints[event.media] = event.matches;\n return result;\n },\n { matches: false, breakpoints: {} } as MediaBreakpointsState\n )\n )\n );\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n\n private _flattenQueries(queries: string[]): string[] {\n return queries.map(q => q.split(',')).reduce((flat, a) => flat.concat(a));\n }\n\n private _registerQuery(query: string): MediaQueryListMeta | undefined {\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const queryList: MediaQueryList = this._mediaQuery.matchMedia(query);\n const queryList$ = new BehaviorSubject<MediaQueryListEvent>({\n media: query,\n matches: queryList.matches\n } as MediaQueryListEvent);\n this._subscription.add(\n fromEvent(queryList, 'change').subscribe((event: Event) => {\n queryList$.next(event as MediaQueryListEvent);\n })\n );\n const meta: MediaQueryListMeta = { mediaQueryList: queryList, mediaQueryList$: queryList$ };\n this._queries.set(query, meta);\n return meta;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap } from 'rxjs/operators';\nimport { DfBreakpoints, DfMediaObserver } from './mediaUtils.service';\n\n/**\n * Services you can use to get indication about the current width screen of your application\n * the matchMedia JS feature (https://developer.mozilla.org/fr/docs/Web/API/Window/matchMedia)\n */\n@Injectable({ providedIn: 'root' })\nexport class DfMedia {\n constructor(private readonly mediaObserver: DfMediaObserver, private readonly _breakPointsService: DfBreakpoints) {}\n\n initQueries(mediaOrBreakpoints: string | string[], breakPoints: { [key: string]: string } = {}): string[] {\n const queries: string[] = [];\n if (Array.isArray(mediaOrBreakpoints)) {\n for (const el of mediaOrBreakpoints) {\n queries.push(breakPoints[el] ? breakPoints[el] : el);\n }\n } else {\n queries.push(breakPoints[mediaOrBreakpoints] ? breakPoints[mediaOrBreakpoints] : mediaOrBreakpoints);\n }\n return queries;\n }\n\n /**\n * Getter to have the observable indication if you are or not in the current scope of your queries\n * If one queries is matching result is `True` otherwise result is `False`\n * @param mediaOrBreakpoints either media query string/Array of string or/and in case of BS usage a\n * string/Array of string of the breakpoints name (sm...).\n */\n getObservable(mediaOrBreakpoints: string | string[]): Observable<boolean> {\n return this._breakPointsService.breakPoints$.pipe(\n map(breakpoints => {\n return breakpoints ? this.initQueries(mediaOrBreakpoints, breakpoints) : this.initQueries(mediaOrBreakpoints);\n }),\n switchMap(query => {\n return this.mediaObserver.observe(query);\n }),\n map(value => value.matches),\n distinctUntilChanged()\n );\n }\n}\n","import { Directive, effect, inject, input, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\nimport { DfMedia } from './media.service';\nimport { Subscription } from 'rxjs';\n\n/**\n * Directive using the matchMedia JS feature (https://developer.mozilla.org/fr/docs/Web/API/Window/matchMedia)\n * to be able to add or remove an element like ngIf is doing.\n * Import DfMediaModule from DF to use all media elements provided\n */\n@Directive({ selector: '[dfIfMedia]' })\nexport class DfIfMediaDirective implements OnDestroy {\n private _viewInstance: ViewRef | null = null;\n\n /**\n * Input of the directive\n * @param mediaOrBreakpoints either media query string/Array of string or in case of BS usage a\n * string/Array of string of the breakpoints name (sm...).\n */\n readonly dfIfMedia = input.required<string | string[]>();\n\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _template = inject(TemplateRef);\n private readonly _mediaService = inject(DfMedia);\n private _subscription = new Subscription();\n\n constructor() {\n effect(() => {\n this._subscription.unsubscribe();\n this._subscription = this._mediaService.getObservable(this.dfIfMedia()).subscribe((matches) => {\n this.update(matches);\n });\n });\n }\n\n ngOnDestroy() {\n if (this._viewInstance) {\n this._viewContainerRef.clear();\n }\n this._subscription.unsubscribe();\n }\n\n private update(matches: boolean) {\n if (matches && this._viewInstance === null) {\n this._viewInstance = this._viewContainerRef.createEmbeddedView(this._template);\n } else if (!matches) {\n this._viewContainerRef.clear();\n this._viewInstance = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfIfMediaDirective } from './ifMedia.directive';\n\nexport { DfIfMediaDirective } from './ifMedia.directive';\n\n@NgModule({\n imports: [DfIfMediaDirective],\n exports: [DfIfMediaDirective]\n})\nexport class DfMediaModule {}\n","import { NgModule } from '@angular/core';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n imports: [DfMediaModule, NgbAccordionModule],\n exports: [DfMediaModule, NgbAccordionModule]\n})\nexport class DfFooterModule {}\n","import { Component, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'df-amadeus-icon',\n styleUrls: ['./amadeus-icon.scss'],\n template: `\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 510.2 67.9\"\n style=\"enable-background:new 0 0 510.2 67.9;\"\n xml:space=\"preserve\"\n >\n <g id=\"Layer_2\"></g>\n <g id=\"Layer_1\">\n <path\n d=\"M269.7,0c-8.3,0-19.8,1.4-26.9,4v61.9c5.8,1.2,16.8,2,24.4,2c26,0,36.1-10.2,36.1-34.4C303.4,12.5,290.5,0,269.7,0\n M257.5,12.6c2.4-0.5,7-1.1,11.6-1.1c10.6,0,18.8,5.9,18.8,22c0,15.5-4.1,22.9-20.2,22.9c-5.2,0-10.3-0.8-10.3-0.8V12.6z\n M461.5,65.5c0,0,9,2.4,21.7,2.4c12,0,27-4.1,27-20.3c0-10.6-7.8-15.1-20.5-19.7c-6.9-2.5-12.7-4.8-12.7-9.5\n c0-2.3,1.7-6.7,10.5-6.7c8.2,0,16.6,3.8,16.6,3.8l3.7-10.8C505.2,3.4,497.2,0,486.1,0c-12.1,0-23.8,6.4-23.8,19.3\n c0,13.3,12.1,17.3,21.5,20.5c6.4,2.2,11.8,4.4,11.8,8.7c0,4.1-2.3,7.7-13.1,7.7c-8.9,0-18.3-2-18.3-2L461.5,65.5z M429.6,50.3\n c-3.5,1.7-11,4.5-17.9,4.5c-10,0-11.7-4.5-11.7-14.9V0.6h-2.2c-3.3,0-10.6,0.6-12.4,0.9v40.3c0,17.6,4.3,26,22.2,26\n c13.7,0,21.7-5.3,22.2-5.3c0.2,0,4.9,2.9,14.3,2.9v-64c-1-0.2-8.1-0.9-11.7-0.9h-2.9V50.3z M198.5,0c-13,0-23.2,3.2-27.1,5.2\n l3.1,10.9c0,0,10-3.6,19.8-3.6c8.4,0,12.7,2.4,12.7,10.6v4.7h-12.7c-21.6,0-28,9.9-28,20.8c0,14.5,11.3,19.1,21.6,19.1\n c12,0,18.9-5,19.8-5c0.7,0,3.1,2.6,14,2.6V19.3C221.7,5.5,213.1,0,198.5,0 M207.1,52.7c-3.1,1.2-10.7,3.7-16.2,3.7\n c-6,0-10.6-2.1-10.6-8.7c0-5.7,3.1-9,11.4-9.3l15.4-0.6V52.7z M32.2,0C19.2,0,9,3.2,5.1,5.2l3.1,10.9c0,0,10-3.6,19.8-3.6\n c8.4,0,12.7,2.4,12.7,10.6v4.7H28c-21.6,0-28,9.9-28,20.8c0,14.5,11.3,19.1,21.6,19.1c12,0,18.9-5,19.8-5c0.7,0,3.1,2.6,14,2.6\n V19.3C55.4,5.5,46.8,0,32.2,0 M40.9,52.7c-3.1,1.2-10.7,3.7-16.2,3.7c-6,0-10.6-2.1-10.6-8.7c0-5.7,3.1-9,11.4-9.3l15.4-0.6V52.7z\n M114,39c-0.4,0.9-0.8,2.7-1.1,3.8c-0.3-1-0.8-2.8-1.1-3.8L99,6.1C96.8,0.7,93.4,0,87.2,0c-2.2,0-6.6,0.3-6.6,0.3L74,66.9h14.6\n l3.2-44.7l13.9,33.8c1,2.6,3.1,3.7,7.3,3.7c4.1,0,6.2-1,7.3-3.7L134,22.2l3.2,44.7h14.6l-6.6-66.6c0,0-4.4-0.3-6.6-0.3\n c-6.2,0-9.6,0.7-11.8,6.1L114,39z M320.8,64.7c0,0,11.2,3.1,25.5,3.1c15.3,0,22.3-1.7,22.3-1.7V54.8c0,0-7.6,1.5-18.3,1.5\n c-9.3,0-15.1-1.2-15.1-1.2v-16h28.9V27.8h-28.9V12.5c0,0,5.7-1,14.1-1c9.5,0,18.1,1.5,18.1,1.5V1.6c0,0-7.5-1.6-19.8-1.6\n c-16.3,0-27,2.9-27,2.9V64.7z\"\n />\n </g>\n </svg>\n `\n})\nexport class DfAmadeusIconComponent {}\n","import { NgModule } from '@angular/core';\nimport { DfAmadeusIconComponent } from './amadeus-icon';\n\nexport { DfAmadeusIconComponent } from './amadeus-icon';\n\n@NgModule({\n imports: [DfAmadeusIconComponent],\n exports: [DfAmadeusIconComponent]\n})\nexport class DfIconModule {\n}\n","import { NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * @deprecated `DfModalService` is deprecated, use `NgbModal` from ng-bootstrap instead. \n * Please note that `NgbModal` adds 'modal-open' class to the body while DfModalService adds 'df-modal-open' class. Both classes include the same styles, but you may need to update your stylesheets if you were overriding 'df-modal-open' in your application.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfModalService {\n private renderer: Renderer2;\n\n constructor(\n private modalService: NgbModal,\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n open(content: any, options?: NgbModalOptions): NgbModalRef {\n let modalRef: NgbModalRef;\n if (options && options.container) {\n modalRef = this.modalService.open(content, options);\n } else {\n modalRef = this.modalService.open(content, Object.assign({}, { container: 'body' }, options));\n }\n // we add the 'df-modal-open' class to the body when the modal is open. We remove it when the modal is closed/dismissed\n this.renderer.addClass(document.body, 'df-modal-open');\n modalRef.result.then(\n () => {\n this.renderer.removeClass(document.body, 'df-modal-open');\n },\n () => {\n this.renderer.removeClass(document.body, 'df-modal-open');\n }\n );\n return modalRef;\n }\n}\n","import { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DfPopoverConfig extends NgbPopoverConfig {\n override autoClose = 'outside' as 'outside';\n}\n","import { NgModule } from '@angular/core';\nimport { NgbPopoverModule, NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { DfPopoverConfig } from './config/popover.config';\n\n@NgModule({\n exports: [NgbPopoverModule],\n providers: [{ provide: NgbPopoverConfig, useClass: DfPopoverConfig }]\n})\nexport class DfPopoverModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'df-progressbar',\n templateUrl: 'progressbar.component.html'\n})\nexport class DfProgressbarComponent implements OnInit, OnDestroy {\n readonly PERCENTAGE_PLACEHOLDER = '%PERCENTAGE%';\n readonly FADING_DELAY_MS = 1500; // if triggered by observables, number of milliseconds after progress bar disappears once stopped\n\n readonly infiniteAnimation = input(false, { transform: booleanAttribute });\n\n /**\n * Current value of the progressBar. If 'maxValue' is not defined, value represents a percentage. Otherwise, progress\n * bar percentage value will be computed based on the ratio of 'value/maxValue'\n */\n readonly value = input(0, { transform: numberAttribute });\n readonly maxValue = input(100, { transform: numberAttribute });\n readonly innerValue = signal(0);\n\n readonly percentageValue = computed(() => {\n const val = this.innerValue();\n const maxVal = this.maxValue();\n if (val > maxVal) {\n return 100;\n } else {\n return Math.floor((val / maxVal) * 100);\n }\n });\n\n readonly percentageValueChange = output<number>();\n\n /**\n * Observable used to trigger the start of the loading.\n * When emitting, progressbar will start to randomly increment toward 100%.\n */\n readonly start$ = input<Observable<any>>();\n\n /**\n * Observable used to trigger the end of the loading.\n * When emitting, it forces the progressbar to reach 100%.\n */\n readonly end$ = input<Observable<any>>();\n\n /**\n * Id of the label used to describe the progress bar.\n * It is used in priority compared to the ariaLabel.\n */\n readonly ariaLabelledBy = input<string>();\n\n /**\n * Aria label used to describe the progress bar if no ariaLabelledBy is specified.\n */\n readonly ariaLabel = input<string>();\n\n readonly text = input('');\n\n readonly computedText = computed(() => {\n const text = this.text();\n if (text.includes(this.PERCENTAGE_PLACEHOLDER)) {\n const advancementInPercents = `${Math.floor(this.percentageValue())}%`;\n return text.replace(this.PERCENTAGE_PLACEHOLDER, advancementInPercents);\n }\n return text;\n });\n\n readonly displayProgressBar = signal(false);\n private startSubscription?: Subscription;\n private endSubscription?: Subscription;\n private intervalId: any; // store the result of 'setInterval' function so that we can clear it onDestroy\n private animationOngoing = false;\n\n constructor() {\n effect(() => {\n this.innerValue.set(this.value());\n });\n effect(() => {\n this.percentageValueChange.emit(this.percentageValue());\n });\n }\n\n ngOnInit() {\n const start$ = this.start$();\n const end$ = this.end$();\n const isTriggeredByObservables = start$ && end$;\n if (isTriggeredByObservables) {\n this.startSubscription = start$.subscribe((_) => {\n this.animationOngoing = true;\n this.stopAutomaticIncrement();\n this.resetProgressBarValues();\n this.displayProgressBar.set(true);\n this.startAutomaticIncrement();\n });\n this.endSubscription = end$.subscribe((_) => {\n if (this.animationOngoing) {\n this.animationOngoing = false;\n this.stopAutomaticIncrement();\n this.innerValue.set(100);\n setTimeout(() => {\n this.displayProgressBar.set(false);\n }, this.FADING_DELAY_MS);\n }\n });\n } else {\n this.displayProgressBar.set(true);\n }\n }\n\n ngOnDestroy() {\n if (this.startSubscription) {\n this.startSubscription.unsubscribe();\n }\n if (this.endSubscription) {\n this.endSubscription.unsubscribe();\n }\n this.stopAutomaticIncrement();\n }\n\n /**\n * Randomly increase the percentage but making sure that it can never reach 100%\n */\n private increasePercentage() {\n const maximumReachableValue = 0.9 * this.maxValue();\n const remainingPercentage = maximumReachableValue - this.value();\n const averageIncreaseRatio = 0.015;\n const randomIncreaseRatio = Math.random() * 2 * averageIncreaseRatio;\n this.innerValue.update((val) => val + randomIncreaseRatio * remainingPercentage);\n }\n\n /**\n * Clears the 'setInterval' function so that the automatic increase of the progressbar stops\n */\n private stopAutomaticIncrement() {\n clearInterval(this.intervalId);\n }\n\n /**\n * Periodically calls a function which increments the value of the progressbar\n */\n private startAutomaticIncrement() {\n this.intervalId = setInterval(this.increasePercentage.bind(this), 50);\n }\n\n private resetProgressBarValues() {\n this.innerValue.set(0);\n }\n}\n","@if (displayProgressBar()) {\n @if (computedText(); as computedText) {\n <div class=\"progressbar-text mb-2\">{{ computedText }}</div>\n }\n @if (infiniteAnimation()) {\n <div\n class=\"progress\"\n role=\"progressbar\"\n aria-valuetext=\"indeterminate\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-label]=\"!ariaLabelledBy() && ariaLabel() ? ariaLabel() : null\"\n >\n <div class=\"progress-bar infinite-animation\"></div>\n </div>\n } @else {\n <div\n class=\"progress\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"innerValue()\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"maxValue()\"\n [attr.aria-valuetext]=\"computedText() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-label]=\"!ariaLabelledBy() && ariaLabel() ? ariaLabel() : null\"\n >\n <div [style.width.%]=\"percentageValue()\" class=\"progress-bar\"></div>\n </div>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfProgressbarComponent } from './progressbar.component';\nimport { NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';\n\nexport { DfProgressbarComponent } from './progressbar.component';\n\n@NgModule({\n imports: [DfProgressbarComponent],\n exports: [DfProgressbarComponent, NgbProgressbarModule]\n})\nexport class DfProgressbarModule {\n}\n","export interface DfProgressIndicatorOptions {\n /**\n * If `true`, the backdrop element will be created for a given progress indicator.\n * Default value is `true`.\n */\n backdrop?: boolean;\n\n /**\n * A selector specifying the progress indicator elements should be appended to.\n * If not specified, will be `body`.\n */\n container?: string | HTMLElement;\n\n /**\n * A custom class to append to the progress indicator container.\n */\n containerClass?: string;\n\n /**\n * Specify the position of the content in the container.\n */\n position?: DfProgressIndicatorContentPosition;\n\n /**\n * A custom class to append to the progress indicator backdrop.\n */\n backdropClass?: string;\n}\n\nexport enum DfProgressIndicatorContentType {\n SPINNER = 'spinner',\n PROGRESSBAR = 'progressbar'\n}\n\nexport class DfProgressIndicatorContentSpinner {\n readonly type = DfProgressIndicatorContentType.SPINNER;\n spinnerInput?: {\n contentClass?: string;\n ariaLabel?: string;\n };\n\n constructor(spinnerInput?: { contentClass?: string; ariaLabel?: string }) {\n this.spinnerInput = spinnerInput;\n }\n}\n\nexport class DfProgressIndicatorContentProgressBar {\n readonly type = DfProgressIndicatorContentType.PROGRESSBAR;\n progressBarInput?: {\n ariaLabel: string;\n };\n position: DfProgressIndicatorContentPosition;\n\n constructor(progressBarInput?: { ariaLabel: string }, position?: DfProgressIndicatorContentPosition) {\n this.progressBarInput = progressBarInput;\n this.position = position || DfProgressIndicatorContentPosition.TOP;\n }\n}\n\nexport enum DfProgressIndicatorContentPosition {\n TOP = 'top',\n BOTTOM = 'bottom',\n CENTERED = 'centered'\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport { DfProgressIndicatorContentPosition } from './progressindicator-config';\n\n@Component({\n selector: 'df-progressindicator-container',\n encapsulation: ViewEncapsulation.None,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfProgressIndicatorContainerComponent {\n private readonly DEFAULT_CLASS_POSITION = 'df-progressindicator-centered';\n\n readonly containerClass = input<string>();\n readonly position = input<DfProgressIndicatorContentPosition>();\n\n readonly positionClass = computed(() => {\n const position = this.position();\n switch (position) {\n case DfProgressIndicatorContentPosition.TOP:\n return 'df-progressindicator-top';\n case DfProgressIndicatorContentPosition.BOTTOM:\n return 'df-progressindicator-bottom';\n default:\n return this.DEFAULT_CLASS_POSITION;\n }\n });\n readonly classes = computed(\n () => `df-progressindicator-container ${this.containerClass() || ''} ${this.positionClass()}`\n );\n}\n","import { Component, ChangeDetectionStrategy, input, booleanAttribute } from '@angular/core';\n\n@Component({\n selector: 'df-default-spinner',\n templateUrl: './default-spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DfDefaultSpinnerComponent {\n readonly isGlobalSpinner = input(false, { transform: booleanAttribute });\n readonly contentClass = input('spinner-border text-primary');\n readonly ariaLabel = input<string>();\n}\n","<div [class]=\"contentClass()\" [attr.role]=\"isGlobalSpinner() ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel(); as ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'df-progressindicator-backdrop',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfProgressIndicatorBackdropComponent {\n readonly backdropClass = input<string>();\n readonly isGlobalBackdrop = input(true);\n\n readonly classes = computed(\n () =>\n `df-progressindicator-backdrop ${this.backdropClass() || ''} df-progressindicator-backdrop${\n this.isGlobalBackdrop() ? '-global' : '-contextual'\n }`\n );\n}\n","import { ComponentRef, EmbeddedViewRef } from '@angular/core';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\n\nexport class DfProgressIndicatorRef {\n constructor(\n public containerRef: ComponentRef<DfProgressIndicatorContainerComponent>,\n public contentRef: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n public backdropRef?: ComponentRef<DfProgressIndicatorBackdropComponent>\n ) {}\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nconst noop = () => {};\n\n/** Type for the callback used to revert the scrollbar compensation. */\nexport type CompensationReverter = () => void;\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n *\n * It is a copy of https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/scrollbar.ts\n */\n@Injectable({ providedIn: 'root' })\nexport class ScrollBar {\n constructor(@Inject(DOCUMENT) private readonly _document: any) {}\n\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n compensate(): CompensationReverter {\n const width = this._getWidth();\n return !this._isPresent(width) ? noop : this._adjustBody(width);\n }\n\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n private _adjustBody(scrollbarWidth: number): CompensationReverter {\n const body = this._document.body;\n const userSetPaddingStyle = body.style.paddingRight;\n const paddingRight = 'padding-right';\n const actualPadding = parseFloat(window.getComputedStyle(body)[paddingRight as any]);\n body.style[paddingRight] = `${actualPadding + scrollbarWidth}px`;\n return () => (body.style[paddingRight] = userSetPaddingStyle);\n }\n\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n private _isPresent(scrollbarWidth: number): boolean {\n const rect = this._document.body.getBoundingClientRect();\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n const uncertainty = 0.1 * scrollbarWidth;\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\n }\n\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n private _getWidth(): number {\n const measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n\n const body = this._document.body;\n body.appendChild(measurer);\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n\n return width;\n }\n}\n","import {\n ComponentFactoryResolver,\n Injectable,\n RendererFactory2,\n Renderer2,\n Inject,\n ApplicationRef,\n Injector,\n EmbeddedViewRef,\n ComponentRef,\n Type,\n TemplateRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport {\n DfProgressIndicatorOptions,\n DfProgressIndicatorContentSpinner,\n DfProgressIndicatorContentProgressBar\n} from './progressindicator-config';\nimport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nimport { DfProgressIndicatorRef } from './progressindicator-ref';\nimport { DfProgressbarComponent } from '../progressbar/progressbar.component';\nimport { ScrollBar } from '../utils/scrollbar.service';\n\nexport type DfProgressIndicatorContent<T> =\n | undefined\n | TemplateRef<T>\n | Type<T>\n | DfProgressIndicatorContentSpinner\n | DfProgressIndicatorContentProgressBar;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfProgressIndicatorService {\n private readonly renderer: Renderer2;\n private readonly BODY_CLASS = 'df-progressindicator-open';\n // TODO - Remove it when https://github.com/angular/angular/issues/22567\n private readonly containerAttributes = ['containerClass', 'position'];\n private readonly backdropAttributes = ['backdropClass', 'isGlobalBackdrop'];\n private readonly defaultSpinnerAttributes = ['contentClass', 'ariaLabel', 'isGlobalSpinner'];\n private readonly defaultProgressBarAttributes = ['infiniteAnimation', 'ariaLabel'];\n\n private readonly activeInstances: DfProgressIndicatorRef[] = [];\n\n constructor(\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly rendererFactory: RendererFactory2,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n private readonly injector: Injector,\n private readonly scrollbar: ScrollBar\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n open<T>(content: DfProgressIndicatorContent<T>, options?: DfProgressIndicatorOptions): DfProgressIndicatorRef {\n const containerElt = this.getContainer(this.document, options);\n if (!containerElt) {\n throw new Error(\n `[Design Factory] The specified progress indicator container \"${\n options?.container || 'body'\n }\" was not found in the DOM.`\n );\n }\n\n // Create needed components\n const backdropRef: ComponentRef<DfProgressIndicatorBackdropComponent> | undefined =\n options?.backdrop !== false\n ? this.createComponent(\n DfProgressIndicatorBackdropComponent,\n this.componentFactoryResolver,\n undefined,\n containerElt\n )\n : undefined;\n\n const contentRef = this.getContent(content, this.componentFactoryResolver, containerElt);\n const containerCmpRef: ComponentRef<DfProgressIndicatorContainerComponent> = this.createComponent(\n DfProgressIndicatorContainerComponent,\n this.componentFactoryResolver,\n contentRef,\n containerElt\n );\n\n const onDestroyOperations: (() => void)[] = [];\n\n // Add aria attributes on the container\n this.renderer.setAttribute(containerElt, 'aria-busy', 'true');\n onDestroyOperations.push(() => {\n this.renderer.removeAttribute(containerElt, 'aria-busy');\n });\n\n // Override some styles if body is the container\n if (containerElt === this.document.body) {\n const scrollCompensation = this.scrollbar.compensate();\n this.renderer.addClass(this.document.body, this.BODY_CLASS);\n this.renderer.setAttribute(this.document.body, 'aria-busy', 'true');\n\n onDestroyOperations.push(() => {\n scrollCompensation();\n this.renderer.removeClass(this.document.body, this.BODY_CLASS);\n });\n }\n\n if (onDestroyOperations.length > 0) {\n containerCmpRef.onDestroy(() => {\n onDestroyOperations.forEach((operation) => {\n operation();\n });\n });\n }\n\n // Force override of position in case of the use of a progress bar component\n if (content instanceof DfProgressIndicatorContentProgressBar) {\n options = {\n ...options,\n position: content.position\n };\n }\n\n // Apply options to the created components\n if (backdropRef) {\n this.applyOptions(backdropRef, this.backdropAttributes, {\n ...options,\n isGlobalBackdrop: containerElt === this.document.body\n });\n }\n this.applyOptions(containerCmpRef, this.containerAttributes, options);\n\n const progressIndicatorRef = new DfProgressIndicatorRef(containerCmpRef, contentRef, backdropRef);\n this.activeInstances.push(progressIndicatorRef);\n return progressIndicatorRef;\n }\n\n close(progressIndicatorRef: DfProgressIndicatorRef): void {\n const instanceIndex = this.activeInstances.indexOf(progressIndicatorRef);\n if (instanceIndex > -1) {\n Object.keys(progressIndicatorRef).forEach((key) => {\n const propertyValue = (progressIndicatorRef as unknown as { [key: string]: unknown })[key];\n if (propertyValue && propertyValue instanceof ComponentRef) {\n propertyValue.destroy();\n (progressIndicatorRef as unknown as { [key: string]: unknown })[key] = undefined;\n }\n });\n this.activeInstances.splice(instanceIndex, 1);\n } else {\n throw new Error(\n '[Design Factory] The specified progress indicator reference is no longer active and cannot be closed.'\n );\n }\n }\n\n /**\n * Retrieve container according to the desired options.\n */\n private getContainer(document: Document, options?: DfProgressIndicatorOptions): HTMLElement | null {\n if (options?.container instanceof HTMLElement) {\n return options.container;\n }\n return options?.container ? document.querySelector(options.container) : document.body;\n }\n\n private getContent<T>(\n content: DfProgressIndicatorContent<T>,\n cfr: ComponentFactoryResolver,\n container: HTMLElement\n ): ComponentRef<any> | EmbeddedViewRef<any> {\n if (!content) {\n return this.createComponent(DfDefaultSpinnerComponent, cfr);\n } else if (content instanceof DfProgressIndicatorContentSpinner) {\n const cmpRef = this.createComponent(DfDefaultSpinnerComponent, cfr);\n this.applyOptions(cmpRef, this.defaultSpinnerAttributes, {\n ...content.spinnerInput,\n isGlobalSpinner: container === this.document.body\n });\n return cmpRef;\n } else if (content instanceof DfProgressIndicatorContentProgressBar) {\n const cmpRef = this.createComponent(DfProgressbarComponent, cfr);\n this.applyOptions(cmpRef, this.defaultProgressBarAttributes, {\n ...content.progressBarInput,\n infiniteAnimation: true\n });\n return cmpRef;\n } else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView({} as T);\n this.appRef.attachView(viewRef);\n return viewRef;\n } else {\n return this.createComponent(content, cfr);\n }\n }\n\n private createComponent<T>(\n cmpType: Type<T>,\n cfr: ComponentFactoryResolver,\n childrenProjectables?: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n container?: HTMLElement\n ): ComponentRef<T> {\n const cmpFactory = cfr.resolveComponentFactory(cmpType);\n let cmpRef: ComponentRef<T>;\n if (childrenProjectables) {\n if (childrenProjectables instanceof ComponentRef) {\n cmpRef = cmpFactory.create(this.injector, [[childrenProjectables.location.nativeElement]]);\n } else {\n cmpRef = cmpFactory.create(this.injector, [childrenProjectables.rootNodes]);\n }\n } else {\n cmpRef = cmpFactory.create(this.injector);\n }\n this.appRef.attachView(cmpRef.hostView);\n if (container) {\n container.appendChild(cmpRef.location.nativeElement);\n }\n return cmpRef;\n }\n\n private applyOptions<T>(\n cmpRef: ComponentRef<T>,\n availableOptions: string[],\n options?: DfProgressIndicatorOptions | { [key: string]: unknown }\n ): void {\n if (options) {\n availableOptions.forEach((option: string) => {\n const optionValue = (options as { [key: string]: unknown })[option];\n if (optionValue !== null && optionValue !== undefined) {\n cmpRef.setInput(option, optionValue);\n }\n });\n }\n }\n}\n","import { Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { DfProgressIndicatorService, DfProgressIndicatorContent } from './progressindicator.service';\nimport { DfProgressIndicatorOptions } from './progressindicator-config';\nimport { DfProgressIndicatorRef } from './progressindicator-ref';\n\n@Directive({\n selector: '[dfProgressIndicator]'\n})\nexport class DfProgressIndicatorDirective {\n readonly dfProgressIndicator = input.required<boolean>();\n readonly dfProgressIndicatorConfig = input<{\n content?: DfProgressIndicatorContent<unknown>;\n options: DfProgressIndicatorOptions;\n }>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly progressService = inject(DfProgressIndicatorService);\n private progressIndicatorRef: DfProgressIndicatorRef | undefined;\n\n constructor() {\n effect(() => {\n if (this.dfProgressIndicator()) {\n untracked(() => {\n const config: DfProgressIndicatorOptions = {\n ...this.dfProgressIndicatorConfig()?.options,\n container: this.elementRef.nativeElement\n };\n this.progressIndicatorRef = this.progressService.open(this.dfProgressIndicatorConfig()?.content, config);\n });\n } else if (this.progressIndicatorRef) {\n this.progressService.close(this.progressIndicatorRef);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfProgressbarModule } from '../progressbar/progressbar.module';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nimport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport { DfProgressIndicatorDirective } from './progressindicator.directive';\n\nexport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nexport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nexport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nexport { DfProgressIndicatorDirective } from './progressindicator.directive';\n\n@NgModule({\n imports: [\n DfDefaultSpinnerComponent,\n DfProgressbarModule,\n DfProgressIndicatorBackdropComponent,\n DfProgressIndicatorContainerComponent,\n DfProgressIndicatorDirective\n ],\n exports: [\n DfProgressbarModule,\n DfProgressIndicatorContainerComponent,\n DfProgressIndicatorDirective,\n DfProgressIndicatorBackdropComponent,\n DfDefaultSpinnerComponent\n ]\n})\nexport class DfProgressIndicatorModule {}\n","import { Directive, ElementRef, OnInit, input, inject } from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../../right-to-left/directionDetection.service';\n\n/**\n * @deprecated DfSliderDirectionDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n selector: '[dfSliderDirection]'\n})\nexport class DfSliderDirectionDirective implements OnInit {\n // Workaround due to bad export on @angular-slider/ngx-slider and https://github.com/angular/angular/issues/8277\n readonly dfSliderDirection = input.required<any>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly rtlDirectionService = inject(DfDirectionDetectionService, { optional: true });\n\n ngOnInit() {\n if (this.rtlDirectionService) {\n const direction = this.rtlDirectionService.getPageDirection(this.elementRef);\n\n if (direction === RightToLeftDirectionEnum.RightToLeft) {\n this.dfSliderDirection().options.rightToLeft = true;\n }\n }\n }\n}\n","import { PointerType } from './pointer-type';\n\n/** Label type */\nexport enum LabelType {\n /** Label above low pointer */\n Low,\n /** Label above high pointer */\n High,\n /** Label for minimum slider value */\n Floor,\n /** Label for maximum slider value */\n Ceil,\n /** Label below legend tick */\n TickValue\n}\n\n/** Function to translate label value into text */\nexport type TranslateFunction = (value: number, label: LabelType) => string;\n/** Function to combind */\nexport type CombineLabelsFunction = (minLabel: string, maxLabel: string) => string;\n/** Function to provide legend */\nexport type GetLegendFunction = (value: number) => string;\nexport type GetStepLegendFunction = (step: CustomStepDefinition) => string;\n\n/** Function converting slider value to slider position */\nexport type ValueToPositionFunction = (val: number, minVal: number, maxVal: number) => number;\n\n/** Function converting slider position to slider value */\nexport type PositionToValueFunction = (percent: number, minVal: number, maxVal: number) => number;\n\n/**\n * Custom step definition\n *\n * This can be used to specify custom values and legend values for slider ticks\n */\nexport interface CustomStepDefinition {\n /** Value */\n value: number;\n /** Legend (label for the value) */\n legend?: string;\n}\n\n/** Slider options */\nexport class Options {\n /** Minimum value for a slider.\n Not applicable when using stepsArray. */\n floor?: number = 0;\n\n /** Maximum value for a slider.\n Not applicable when using stepsArray. */\n ceil?: number;\n\n /** Step between each value.\n Not applicable when using stepsArray. */\n step?: number = 1;\n\n /** The minimum range authorized on the slider.\n Applies to range slider only.\n When using stepsArray, expressed as index into stepsArray. */\n minRange?: number;\n\n /** The maximum range authorized on the slider.\n Applies to range slider only.\n When using stepsArray, expressed as index into stepsArray. */\n maxRange?: number;\n\n /** Set to true to have a push behavior. When the min handle goes above the max,\n the max is moved as well (and vice-versa). The range between min and max is\n defined by the step option (defaults to 1) and can also be overriden by\n the minRange option. Applies to range slider only. */\n pushRange?: boolean = false;\n\n /** The minimum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n minLimit?: number;\n\n /** The maximum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n maxLimit?: number;\n\n /** Custom translate function. Use this if you want to translate values displayed\n on the slider. */\n translate?: TranslateFunction;\n\n /** Custom function for combining overlapping labels in range slider.\n It takes the min and max values (already translated with translate fuction)\n and should return how these two values should be combined.\n If not provided, the default function will join the two values with\n ' - ' as separator. */\n combineLabels?: CombineLabelsFunction;\n\n /** Use to display legend under ticks (thus, it needs to be used along with\n showTicks or showTicksValues). The function will be called with each tick\n value and returned content will be displayed under the tick as a legend.\n If the returned value is null, then no legend is displayed under\n the corresponding tick.You can also directly provide the legend values\n in the stepsArray option. */\n getLegend?: GetLegendFunction;\n\n /** Use to display a custom legend of a stepItem from stepsArray.\n It will be the same as getLegend but for stepsArray. */\n getStepLegend?: GetStepLegendFunction;\n\n /** If you want to display a slider with non linear/number steps.\n Just pass an array with each slider value and that's it; the floor, ceil and step settings\n of the slider will be computed automatically.\n By default, the value model and valueHigh model values will be the value of the selected item\n in the stepsArray.\n They can also be bound to the index of the selected item by setting the bindIndexForStepsArray\n option to true. */\n stepsArray?: CustomStepDefinition[];\n\n /** Set to true to bind the index of the selected item to value model and valueHigh model. */\n bindIndexForStepsArray?: boolean = false;\n\n /** When set to true and using a range slider, the range can be dragged by the selection bar.\n Applies to range slider only. */\n draggableRange?: boolean = false;\n\n /** Same as draggableRange but the slider range can't be changed.\n Applies to range slider only. */\n draggableRangeOnly?: boolean = false;\n\n /** Set to true to always show the selection bar before the slider handle. */\n showSelectionBar?: boolean = false;\n\n /** Set to true to always show the selection bar after the slider handle. */\n showSelectionBarEnd?: boolean = false;\n\n /** Set a number to draw the selection bar between this value and the slider handle.\n When using stepsArray, expressed as index into stepsArray. */\n showSelectionBarFromValue?: number;\n\n /** Only for range slider. Set to true to visualize in different colour the areas\n on the left/right (top/bottom for vertical range slider) of selection bar between the handles. */\n showOuterSelectionBars?: boolean = false;\n\n /** Set to true to hide pointer labels */\n hidePointerLabels?: boolean = false;\n\n /** Set to true to hide min / max labels */\n hideLimitLabels?: boolean = false;\n\n /** Set to false to disable the auto-hiding behavior of the limit labels. */\n autoHideLimitLabels?: boolean = true;\n\n /** Set to true to make the slider read-only. */\n readOnly?: boolean = false;\n\n /** Set to true to disable the slider. */\n disabled?: boolean = false;\n\n /** Set to true to display a tick for each step of the slider. */\n showTicks?: boolean = false;\n\n /** Set to true to display a tick and the step value for each step of the slider.. */\n showTicksValues?: boolean = false;\n\n /* The step between each tick to display. If not set, the step value is used.\n Not used when ticksArray is specified. */\n tickStep?: number;\n\n /* The step between displaying each tick step value.\n If not set, then tickStep or step is used, depending on which one is set. */\n tickValueStep?: number;\n\n /** Use to display ticks at specific positions.\n The array contains the index of the ticks that should be displayed.\n For example, [0, 1, 5] will display a tick for the first, second and sixth values. */\n ticksArray?: number[];\n\n /** Used to display a tooltip when a tick is hovered.\n Set to a function that returns the tooltip content for a given value. */\n ticksTooltip?: (value: number) => string;\n\n /** Same as ticksTooltip but for ticks values. */\n ticksValuesTooltip?: (value: number) => string;\n\n /** Set to true to display the slider vertically.\n The slider will take the full height of its parent.\n Changing this value at runtime is not currently supported. */\n vertical?: boolean = false;\n\n /** Function that returns the current color of the selection bar.\n If your color won't change, don't use this option but set it through CSS.\n If the returned color depends on a model value (either value or valueHigh),\n you should use the argument passed to the function.\n Indeed, when the function is called, there is no certainty that the model\n has already been updated.*/\n getSelectionBarColor?: (minValue: number, maxValue?: number) => string;\n\n /** Function that returns the color of a tick. showTicks must be enabled. */\n getTickColor?: (value: number) => string;\n\n /** Function that returns the current color of a pointer.\n If your color won't change, don't use this option but set it through CSS.\n If the returned color depends on a model value (either value or valueHigh),\n you should use the argument passed to the function.\n Indeed, when the function is called, there is no certainty that the model has already been updated.\n To handle range slider pointers independently, you should evaluate pointerType within the given\n function where \"min\" stands for value model and \"max\" for valueHigh model values. */\n getPointerColor?: (value: number, pointerType: PointerType) => string;\n\n /** Handles are focusable (on click or with tab) and can be modified using the following keyboard controls:\n Left/bottom arrows: -1\n Right/top arrows: +1\n Page-down: -10%\n Page-up: +10%\n Home: minimum value\n End: maximum value\n */\n keyboardSupport?: boolean = true;\n\n /** If you display the slider in an element that uses transform: scale(0.5), set the scale value to 2\n so that the slider is rendered properly and the events are handled correctly. */\n scale?: number = 1;\n\n /** If you display the slider in an element that uses transform: rotate(90deg), set the rotate value to 90\n so that the slider is rendered properly and the events are handled correctly. Value is in degrees. */\n rotate?: number = 0;\n\n /** Set to true to force the value(s) to be rounded to the step, even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, they are not rounded\n and can be between two steps. */\n enforceStep?: boolean = true;\n\n /** Set to true to force the value(s) to be normalised to allowed range (floor to ceil), even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation. */\n enforceRange?: boolean = true;\n\n /** Set to true to force the value(s) to be rounded to the nearest step value, even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation. */\n enforceStepsArray?: boolean = true;\n\n /** Set to true to prevent to user from switching the min and max handles. Applies to range slider only. */\n noSwitching?: boolean = false;\n\n /** Set to true to only bind events on slider handles. */\n onlyBindHandles?: boolean = false;\n\n /** Set to true to show graphs right to left.\n If vertical is true it will be from top to bottom and left / right arrow functions reversed. */\n rightToLeft?: boolean = false;\n\n /** Set to true to reverse keyboard navigation:\n Right/top arrows: -1\n Left/bottom arrows: +1\n Page-up: -10%\n Page-down: +10%\n End: minimum value\n Home: maximum value\n */\n reversedControls?: boolean = false;\n\n /** Set to true to keep the slider labels inside the slider bounds. */\n boundPointerLabels?: boolean = true;\n\n /** Set to true to use a logarithmic scale to display the slider. */\n logScale?: boolean = false;\n\n /** Function that returns the position on the slider for a given value.\n The position must be a percentage between 0 and 1.\n The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly. */\n customValueToPosition?: ValueToPositionFunction;\n\n /** Function that returns the value for a given position on the slider.\n The position is a percentage between 0 and 1.\n The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly. */\n customPositionToValue?: PositionToValueFunction;\n\n /** Precision limit for calculated values.\n Values used in calculations will be rounded to this number of significant digits\n to prevent accumulating small floating-point errors. */\n precisionLimit?: number = 12;\n\n /** Use to display the selection bar as a gradient.\n The given object must contain from and to properties which are colors. */\n selectionBarGradient?: {from: string, to: string};\n\n /** Use to add a label directly to the slider for accessibility. Adds the aria-label attribute. */\n ariaLabel?: string = 'ngx-slider';\n\n /** Use instead of ariaLabel to reference the id of an element which will be used to label the slider.\n Adds the aria-labelledby attribute. */\n ariaLabelledBy?: string;\n\n /** Use to add a label directly to the slider range for accessibility. Adds the aria-label attribute. */\n ariaLabelHigh?: string = 'ngx-slider-max';\n\n /** Use instead of ariaLabelHigh to reference the id of an element which will be used to label the slider range.\n Adds the aria-labelledby attribute. */\n ariaLabelledByHigh?: string;\n\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the handle */\n handleDimension?: number;\n\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the bar */\n barDimension?: number;\n\n /** Enable/disable CSS animations */\n animate?: boolean = true;\n\n /** Enable/disable CSS animations while moving the slider */\n animateOnMove?: boolean = false;\n}","/** Pointer type */\nexport enum PointerType {\n /** Low pointer */\n Min,\n /** High pointer */\n Max\n}","import { PointerType } from './pointer-type';\n\nexport class ChangeContext {\n value?: number;\n highValue?: number;\n pointerType?: PointerType;\n}","import { CustomStepDefinition } from './options';\n\n/**\n * Collection of functions to handle conversions/lookups of values\n */\nexport class ValueHelper {\n static isNullOrUndefined(value: any): boolean {\n return value === undefined || value === null;\n }\n\n static areArraysEqual(array1: any[], array2: any[]): boolean {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let i: number = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n static linearValueToPosition(val: number, minVal: number, maxVal: number): number {\n const range: number = maxVal - minVal;\n return (val - minVal) / range;\n }\n\n static logValueToPosition(val: number, minVal: number, maxVal: number): number {\n val = Math.log(val);\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const range: number = maxVal - minVal;\n return (val - minVal) / range;\n }\n\n static linearPositionToValue(percent: number, minVal: number, maxVal: number): number {\n return percent * (maxVal - minVal) + minVal;\n }\n\n static logPositionToValue(percent: number, minVal: number, maxVal: number): number {\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const value: number = percent * (maxVal - minVal) + minVal;\n return Math.exp(value);\n }\n\n static findStepIndex(modelValue: number, stepsArray: CustomStepDefinition[]): number {\n const differences: number[] = stepsArray.map((step: CustomStepDefinition): number => Math.abs(modelValue - step.value));\n\n let minDifferenceIndex: number = 0;\n for (let index: number = 0; index < stepsArray.length; index++) {\n if (differences[index] !== differences[minDifferenceIndex] && differences[index] < differences[minDifferenceIndex]) {\n minDifferenceIndex = index;\n }\n }\n\n return minDifferenceIndex;\n }\n}","// Declaration for ResizeObserver a new API available in some of newest browsers:\n// https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\ndeclare class ResizeObserver {}\n\n/** Helper with compatibility functions to support different browsers */\nexport class CompatibilityHelper {\n /** Workaround for TouchEvent constructor sadly not being available on all browsers (e.g. Firefox, Safari) */\n public static isTouchEvent(event: any): boolean {\n if ((window as any).TouchEvent !== undefined) {\n return event instanceof TouchEvent;\n }\n\n return event.touches !== undefined;\n }\n\n /** Detect presence of ResizeObserver API */\n public static isResizeObserverAvailable(): boolean {\n if (typeof window === 'undefined') {\n return false;\n }\n return (window as any).ResizeObserver !== undefined;\n }\n}\n","/** Helper with mathematical functions */\nexport class MathHelper {\n /* Round numbers to a given number of significant digits */\n static roundToPrecisionLimit(value: number, precisionLimit: number): number {\n return +( value.toPrecision(precisionLimit) );\n }\n\n static isModuloWithinPrecisionLimit(value: number, modulo: number, precisionLimit: number): boolean {\n const limit: number = Math.pow(10, -precisionLimit);\n return Math.abs(value % modulo) <= limit || Math.abs(Math.abs(value % modulo) - modulo) <= limit;\n }\n\n static clampToRange(value: number, floor: number, ceil: number): number {\n return Math.min(Math.max(value, floor), ceil);\n }\n}","import { Subject, Subscription } from 'rxjs';\n\nexport class EventListener {\n eventName?: string;\n events?: Subject<Event>;\n eventsSubscription?: Subscription;\n teardownCallback?: () => void;\n}","import { Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { throttleTime, tap } from 'rxjs/operators';\nimport { EventListener } from './event-listener';\nimport { ValueHelper } from './value-helper';\n\nconst w: Window | any =\n typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\n\nlet passiveOptionAccessed = false;\nconst options = {\n get passive() {\n return (passiveOptionAccessed = true);\n }\n};\nconst noop = () => {};\nw.addEventListener && w.addEventListener('p', noop, options);\nw.removeEventListener && w.removeEventListener('p', noop, false);\n\nexport const supportsPassiveEvents: boolean = passiveOptionAccessed;\n\n/**\n * Helper class to attach event listeners to DOM elements with debounce support using rxjs\n */\nexport class EventListenerHelper {\n constructor(private renderer: Renderer2) {\n }\n\n public attachPassiveEventListener(nativeElement: any, eventName: string, callback: (event: any) => void,\n throttleInterval?: number): EventListener {\n // Only use passive event listeners if the browser supports it\n if (supportsPassiveEvents !== true) {\n return this.attachEventListener(nativeElement, eventName, callback, throttleInterval);\n }\n\n // Angular doesn't support passive event handlers (yet), so we need to roll our own code using native functions\n const listener: EventListener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject<Event>();\n\n const observerCallback: (event: Event) => void = (event: Event): void => {\n listener.events?.next(event);\n };\n nativeElement.addEventListener(eventName, observerCallback, {passive: true, capture: false});\n\n listener.teardownCallback = (): void => {\n nativeElement.removeEventListener(eventName, observerCallback, {passive: true, capture: false});\n };\n\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval!, undefined, { leading: true, trailing: true})\n : tap(() => {}) // no-op\n )\n .subscribe((event: Event) => {\n callback(event);\n });\n\n return listener;\n }\n\n public detachEventListener(eventListener: EventListener): void {\n if (!ValueHelper.isNullOrUndefined(eventListener.eventsSubscription)) {\n eventListener.eventsSubscription?.unsubscribe();\n }\n\n if (!ValueHelper.isNullOrUndefined(eventListener.events)) {\n eventListener.events?.complete();\n }\n\n if (!ValueHelper.isNullOrUndefined(eventListener.teardownCallback)) {\n eventListener.teardownCallback?.();\n }\n }\n\n public attachEventListener(nativeElement: any, eventName: string, callback: (event: any) => void,\n throttleInterval?: number): EventListener {\n const listener: EventListener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject<Event>();\n\n const observerCallback: (event: Event) => void = (event: Event): void => {\n listener.events?.next(event);\n };\n\n listener.teardownCallback = this.renderer.listen(nativeElement, eventName, observerCallback);\n\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval!, undefined, { leading: true, trailing: true})\n : tap(() => {}) // no-op\n )\n .subscribe((event: Event) => { callback(event); });\n\n return listener;\n }\n}","import { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef, inject, PLATFORM_ID } from '@angular/core';\nimport { EventListenerHelper } from './event-listener-helper';\nimport { EventListener } from './event-listener';\nimport { ValueHelper } from './value-helper';\nimport { isPlatformServer } from '@angular/common';\n\n/**\n * @deprecated SliderElementDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderElement]'\n})\nexport class SliderElementDirective {\n private _position: number = 0;\n get position(): number {\n return this._position;\n }\n\n private _dimension: number = 0;\n get dimension(): number {\n return this._dimension;\n }\n\n private _alwaysHide: boolean = false;\n get alwaysHide(): boolean {\n return this._alwaysHide;\n }\n\n private _vertical: boolean = false;\n get vertical(): boolean {\n return this._vertical;\n }\n\n private _scale: number = 1;\n get scale(): number {\n return this._scale;\n }\n\n private _rotate: number = 0;\n get rotate(): number {\n return this._rotate;\n }\n\n @HostBinding('style.opacity')\n opacity: number = 1;\n\n @HostBinding('style.visibility')\n visibility: string = 'visible';\n\n @HostBinding('style.left')\n left: string = '';\n\n @HostBinding('style.bottom')\n bottom: string = '';\n\n @HostBinding('style.height')\n height: string = '';\n\n @HostBinding('style.width')\n width: string = '';\n\n @HostBinding('style.transform')\n transform: string = '';\n\n private eventListenerHelper: EventListenerHelper;\n private eventListeners: EventListener[] = [];\n\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor(\n protected elemRef: ElementRef,\n protected renderer: Renderer2,\n protected changeDetectionRef: ChangeDetectorRef\n ) {\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n\n setAlwaysHide(hide: boolean): void {\n this._alwaysHide = hide;\n if (hide) {\n this.visibility = 'hidden';\n } else {\n this.visibility = 'visible';\n }\n }\n\n hide(): void {\n this.opacity = 0;\n }\n\n show(): void {\n if (this.alwaysHide) {\n return;\n }\n\n this.opacity = 1;\n }\n\n isVisible(): boolean {\n if (this.alwaysHide) {\n return false;\n }\n return this.opacity !== 0;\n }\n\n setVertical(vertical: boolean): void {\n this._vertical = vertical;\n if (this._vertical) {\n this.left = '';\n this.width = '';\n } else {\n this.bottom = '';\n this.height = '';\n }\n }\n\n setScale(scale: number): void {\n this._scale = scale;\n }\n\n setRotate(rotate: number): void {\n this._rotate = rotate;\n this.transform = 'rotate(' + rotate + 'deg)';\n }\n\n getRotate(): number {\n return this._rotate;\n }\n\n // Set element left/top position depending on whether slider is horizontal or vertical\n setPosition(pos: number): void {\n if (this._position !== pos && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n\n this._position = pos;\n if (this._vertical) {\n this.bottom = Math.round(pos) + 'px';\n } else {\n this.left = Math.round(pos) + 'px';\n }\n }\n\n // Calculate element's width/height depending on whether slider is horizontal or vertical\n calculateDimension(): void {\n const val: ClientRect = this.getBoundingClientRect();\n if (this.vertical) {\n this._dimension = (val.bottom - val.top) * this.scale;\n } else {\n this._dimension = (val.right - val.left) * this.scale;\n }\n }\n\n // Set element width/height depending on whether slider is horizontal or vertical\n setDimension(dim: number): void {\n if (this._dimension !== dim && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n\n this._dimension = dim;\n if (this._vertical) {\n this.height = Math.round(dim) + 'px';\n } else {\n this.width = Math.round(dim) + 'px';\n }\n }\n\n getBoundingClientRect(): ClientRect {\n if (isPlatformServer(this.platformId)) {\n return {\n bottom: 50,\n top: 0,\n left: 0,\n right: 50\n } as ClientRect;\n }\n return this.elemRef.nativeElement.getBoundingClientRect();\n }\n\n on(eventName: string, callback: (event: any) => void, debounceInterval?: number): void {\n const listener: EventListener = this.eventListenerHelper.attachEventListener(\n this.elemRef.nativeElement,\n eventName,\n callback,\n debounceInterval\n );\n this.eventListeners.push(listener);\n }\n\n onPassive(eventName: string, callback: (event: any) => void, debounceInterval?: number): void {\n const listener: EventListener = this.eventListenerHelper.attachPassiveEventListener(\n this.elemRef.nativeElement,\n eventName,\n callback,\n debounceInterval\n );\n this.eventListeners.push(listener);\n }\n\n off(eventName?: string): void {\n let listenersToKeep: EventListener[];\n let listenersToRemove: EventListener[];\n if (!ValueHelper.isNullOrUndefined(eventName)) {\n listenersToKeep = this.eventListeners.filter((event: EventListener) => event.eventName !== eventName);\n listenersToRemove = this.eventListeners.filter((event: EventListener) => event.eventName === eventName);\n } else {\n listenersToKeep = [];\n listenersToRemove = this.eventListeners;\n }\n\n for (const listener of listenersToRemove) {\n this.eventListenerHelper.detachEventListener(listener);\n }\n\n this.eventListeners = listenersToKeep;\n }\n\n private isRefDestroyed(): boolean {\n return (\n ValueHelper.isNullOrUndefined(this.changeDetectionRef) || (this.changeDetectionRef as unknown as any)['destroyed']\n );\n }\n}\n","import { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef } from '@angular/core';\nimport { SliderElementDirective } from './slider-element.directive';\n\n/**\n * @deprecated SliderHandleDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderHandle]'\n})\nexport class SliderHandleDirective extends SliderElementDirective {\n @HostBinding('class.ngx-slider-active')\n active: boolean = false;\n\n @HostBinding('attr.role')\n role: string = '';\n\n @HostBinding('attr.tabindex')\n tabindex: string = '';\n\n @HostBinding('attr.aria-orientation')\n ariaOrientation: string = '';\n\n @HostBinding('attr.aria-label')\n ariaLabel: string = '';\n\n @HostBinding('attr.aria-labelledby')\n ariaLabelledBy: string = '';\n\n @HostBinding('attr.aria-valuenow')\n ariaValueNow: string = '';\n\n @HostBinding('attr.aria-valuetext')\n ariaValueText: string = '';\n\n @HostBinding('attr.aria-valuemin')\n ariaValueMin: string = '';\n\n @HostBinding('attr.aria-valuemax')\n ariaValueMax: string = '';\n\n constructor(elemRef: ElementRef, renderer: Renderer2, changeDetectionRef: ChangeDetectorRef) {\n super(elemRef, renderer, changeDetectionRef);\n }\n\n focus(): void {\n this.elemRef.nativeElement.focus();\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Renderer2 } from '@angular/core';\nimport { SliderElementDirective } from './slider-element.directive';\nimport { ValueHelper } from './value-helper';\n\n/**\n * @deprecated SliderLabelDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderLabel]'\n})\nexport class SliderLabelDirective extends SliderElementDirective {\n private _value?: string;\n get value(): string {\n return this._value || '';\n }\n\n constructor(elemRef: ElementRef, renderer: Renderer2, changeDetectionRef: ChangeDetectorRef) {\n super(elemRef, renderer, changeDetectionRef);\n }\n\n setValue(value: string): void {\n let recalculateDimension: boolean = false;\n\n if (\n !this.alwaysHide &&\n (ValueHelper.isNullOrUndefined(this.value) ||\n this.value.length !== value.length ||\n (this.value.length > 0 && this.dimension === 0))\n ) {\n recalculateDimension = true;\n }\n\n this._value = value;\n this.elemRef.nativeElement.innerHTML = value;\n\n // Update dimension only when length of the label have changed\n if (recalculateDimension) {\n this.calculateDimension();\n }\n }\n}\n","/* eslint-disable @angular-eslint/prefer-signals */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';\n\n/**\n * @deprecated TooltipWrapperComponent is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-slider-tooltip-wrapper',\n templateUrl: './tooltip-wrapper.component.html',\n styleUrls: ['./tooltip-wrapper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class TooltipWrapperComponent {\n @Input()\n template?: TemplateRef<any>;\n\n @Input()\n tooltip?: string;\n\n @Input()\n placement?: string;\n\n @Input()\n content?: string;\n}\n","@if (template) {\n <ng-template\n *ngTemplateOutlet=\"template; context: { tooltip: tooltip, placement: placement, content: content }\"\n ></ng-template>\n} @else {\n <div class=\"ngx-slider-inner-tooltip\" [attr.title]=\"tooltip\" [attr.data-tooltip-placement]=\"placement\">\n {{ content }}\n </div>\n}\n","/* eslint-disable @angular-eslint/prefer-signals */\nimport {\n Component,\n OnInit,\n ViewChild,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n HostBinding,\n HostListener,\n Input,\n ElementRef,\n Renderer2,\n EventEmitter,\n Output,\n ContentChild,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n forwardRef,\n NgZone\n} from '@angular/core';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { Options, LabelType, ValueToPositionFunction, PositionToValueFunction, CustomStepDefinition } from './options';\nimport { PointerType } from './pointer-type';\nimport { ChangeContext } from './change-context';\nimport { ValueHelper } from './value-helper';\nimport { CompatibilityHelper } from './compatibility-helper';\nimport { MathHelper } from './math-helper';\nimport { EventListener } from './event-listener';\nimport { EventListenerHelper, supportsPassiveEvents } from './event-listener-helper';\nimport { SliderElementDirective } from './slider-element.directive';\nimport { SliderHandleDirective } from './slider-handle.directive';\nimport { SliderLabelDirective } from './slider-label.directive';\nimport { CommonModule } from '@angular/common';\nimport { TooltipWrapperComponent } from './tooltip-wrapper.component';\n\n// Declaration for ResizeObserver a new API available in some of newest browsers:\n// https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\ndeclare class ResizeObserver {\n constructor(callback: () => void);\n observe(target: any): void;\n unobserve(target: any): void;\n disconnect(): void;\n}\n\nexport class Tick {\n selected: boolean = false;\n style: any = {};\n tooltip?: string;\n tooltipPlacement?: string;\n value?: string;\n valueTooltip?: string;\n valueTooltipPlacement?: string;\n legend?: string;\n}\n\nclass Dragging {\n active: boolean = false;\n value: number = 0;\n difference: number = 0;\n position: number = 0;\n lowLimit: number = 0;\n highLimit: number = 0;\n}\n\nclass ModelValues {\n value?: number;\n highValue?: number;\n\n public static compare(x?: ModelValues, y?: ModelValues): boolean {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x!.value === y!.value && x!.highValue === y!.highValue;\n }\n}\n\nclass ModelChange extends ModelValues {\n // Flag used to by-pass distinctUntilChanged() filter on input values\n // (sometimes there is a need to pass values through even though the model values have not changed)\n forceChange?: boolean;\n\n public static override compare(x?: ModelChange, y?: ModelChange): boolean {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x!.value === y!.value && x!.highValue === y!.highValue && x!.forceChange === y!.forceChange;\n }\n}\n\nclass InputModelChange extends ModelChange {\n internalChange?: boolean;\n}\n\nclass OutputModelChange extends ModelChange {\n userEventInitiated?: boolean;\n}\n\nconst NGX_SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n};\n\n/**\n * @deprecated SliderComponent is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-slider',\n templateUrl: './slider.component.html',\n providers: [NGX_SLIDER_CONTROL_VALUE_ACCESSOR],\n imports: [CommonModule, TooltipWrapperComponent, SliderLabelDirective, SliderHandleDirective, SliderElementDirective]\n})\nexport class SliderComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\n @HostBinding('class') class = 'ngx-slider';\n // Model for low value of slider. For simple slider, this is the only input. For range slider, this is the low value.\n @Input()\n public value?: number;\n // Output for low value slider to support two-way bindings\n @Output()\n public valueChange: EventEmitter<number> = new EventEmitter();\n\n // Model for high value of slider. Not used in simple slider. For range slider, this is the high value.\n @Input()\n public highValue?: number;\n // Output for high value slider to support two-way bindings\n @Output()\n public highValueChange: EventEmitter<number> = new EventEmitter();\n\n // An object with all the other options of the slider.\n // Each option can be updated at runtime and the slider will automatically be re-rendered.\n @Input()\n public options: Options = new Options();\n\n // Event emitted when user starts interaction with the slider\n @Output()\n public userChangeStart: EventEmitter<ChangeContext> = new EventEmitter();\n\n // Event emitted on each change coming from user interaction\n @Output()\n public userChange: EventEmitter<ChangeContext> = new EventEmitter();\n\n // Event emitted when user finishes interaction with the slider\n @Output()\n public userChangeEnd: EventEmitter<ChangeContext> = new EventEmitter();\n\n private manualRefreshSubscription: any;\n // Input event that triggers slider refresh (re-positioning of slider elements)\n @Input() set manualRefresh(manualRefresh: EventEmitter<void>) {\n this.unsubscribeManualRefresh();\n\n this.manualRefreshSubscription = manualRefresh.subscribe(() => {\n setTimeout(() => this.calculateViewDimensionsAndDetectChanges());\n });\n }\n\n private triggerFocusSubscription: any;\n // Input event that triggers setting focus on given slider handle\n @Input() set triggerFocus(triggerFocus: EventEmitter<void>) {\n this.unsubscribeTriggerFocus();\n\n this.triggerFocusSubscription = triggerFocus.subscribe((pointerType: PointerType) => {\n this.focusPointer(pointerType);\n });\n }\n\n // Slider type, true means range slider\n public get range(): boolean {\n return !ValueHelper.isNullOrUndefined(this.value) && !ValueHelper.isNullOrUndefined(this.highValue);\n }\n\n // Set to true if init method already executed\n private initHasRun: boolean = false;\n\n // Changes in model inputs are passed through this subject\n // These are all changes coming in from outside the component through input bindings or reactive form inputs\n private inputModelChangeSubject: Subject<InputModelChange> = new Subject<InputModelChange>();\n private inputModelChangeSubscription?: Subscription;\n\n // Changes to model outputs are passed through this subject\n // These are all changes that need to be communicated to output emitters and registered callbacks\n private outputModelChangeSubject: Subject<OutputModelChange> = new Subject<OutputModelChange>();\n private outputModelChangeSubscription?: Subscription;\n\n // Low value synced to model low value\n private viewLowValue?: number;\n // High value synced to model high value\n private viewHighValue?: number;\n // Options synced to model options, based on defaults\n private viewOptions: Options = new Options();\n\n // Half of the width or height of the slider handles\n private handleHalfDimension: number = 0;\n // Maximum position the slider handle can have\n private maxHandlePosition: number = 0;\n\n // Which handle is currently tracked for move events\n private currentTrackingPointer?: PointerType;\n // Internal variable to keep track of the focus element\n private currentFocusPointer?: PointerType;\n // Used to call onStart on the first keydown event\n private firstKeyDown = false;\n // Current touch id of touch event being handled\n private touchId?: number;\n // Values recorded when first dragging the bar\n private dragging: Dragging = new Dragging();\n\n /* Slider DOM elements */\n\n // Left selection bar outside two handles\n @ViewChild('leftOuterSelectionBar', { read: SliderElementDirective })\n private leftOuterSelectionBarElement?: SliderElementDirective;\n\n // Right selection bar outside two handles\n @ViewChild('rightOuterSelectionBar', { read: SliderElementDirective })\n private rightOuterSelectionBarElement?: SliderElementDirective;\n\n // The whole slider bar\n @ViewChild('fullBar', { read: SliderElementDirective })\n private fullBarElement?: SliderElementDirective;\n\n // Highlight between two handles\n @ViewChild('selectionBar', { read: SliderElementDirective })\n private selectionBarElement?: SliderElementDirective;\n\n // Left slider handle\n @ViewChild('minHandle', { read: SliderHandleDirective })\n private minHandleElement?: SliderHandleDirective;\n\n // Right slider handle\n @ViewChild('maxHandle', { read: SliderHandleDirective })\n private maxHandleElement?: SliderHandleDirective;\n\n // Floor label\n @ViewChild('floorLabel', { read: SliderLabelDirective })\n private floorLabelElement?: SliderLabelDirective;\n\n // Ceiling label\n @ViewChild('ceilLabel', { read: SliderLabelDirective })\n private ceilLabelElement?: SliderLabelDirective;\n\n // Label above the low value\n @ViewChild('minHandleLabel', { read: SliderLabelDirective })\n private minHandleLabelElement?: SliderLabelDirective;\n\n // Label above the high value\n @ViewChild('maxHandleLabel', { read: SliderLabelDirective })\n private maxHandleLabelElement?: SliderLabelDirective;\n\n // Combined label\n @ViewChild('combinedLabel', { read: SliderLabelDirective })\n private combinedLabelElement?: SliderLabelDirective;\n\n // The ticks\n @ViewChild('ticksElement', { read: SliderElementDirective })\n private ticksElement?: SliderElementDirective;\n\n // Optional custom template for displaying tooltips\n @ContentChild('tooltipTemplate')\n public tooltipTemplate!: TemplateRef<any>;\n\n // Host element class bindings\n @HostBinding('class.vertical')\n public sliderElementVerticalClass = false;\n @HostBinding('class.animate')\n public sliderElementAnimateClass = false;\n @HostBinding('class.with-legend')\n public sliderElementWithLegendClass = false;\n @HostBinding('attr.disabled')\n public sliderElementDisabledAttr?: string;\n @HostBinding('attr.aria-label')\n public sliderElementAriaLabel: string = 'ngx-slider';\n\n // CSS styles and class flags\n public barStyle: any = {};\n public minPointerStyle: any = {};\n public maxPointerStyle: any = {};\n public fullBarTransparentClass = false;\n public selectionBarDraggableClass = false;\n public ticksUnderValuesClass = false;\n\n // Whether to show/hide ticks\n public get showTicks(): boolean {\n return this.viewOptions.showTicks || false;\n }\n\n /* If tickStep is set or ticksArray is specified.\n In this case, ticks values should be displayed below the slider. */\n private intermediateTicks: boolean = false;\n // Ticks array as displayed in view\n public ticks: Tick[] = [];\n\n // Event listeners\n private eventListenerHelper?: EventListenerHelper;\n private onMoveEventListener?: EventListener;\n private onEndEventListener?: EventListener;\n // Whether currently moving the slider (between onStart() and onEnd())\n private moving: boolean = false;\n\n // Observer for slider element resize events\n private resizeObserver?: ResizeObserver;\n\n // Callbacks for reactive forms support\n private onTouchedCallback?: (value: any) => void;\n private onChangeCallback?: (value: any) => void;\n\n public constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n private changeDetectionRef: ChangeDetectorRef,\n private zone: NgZone\n ) {\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n\n // OnInit interface\n public ngOnInit(): void {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n\n // We need to run these two things first, before the rest of the init in ngAfterViewInit(),\n // because these two settings are set through @HostBinding and Angular change detection\n // mechanism doesn't like them changing in ngAfterViewInit()\n\n this.updateDisabledState();\n this.updateVerticalState();\n this.updateAriaLabel();\n }\n\n // AfterViewInit interface\n public ngAfterViewInit(): void {\n this.applyOptions();\n\n this.subscribeInputModelChangeSubject();\n this.subscribeOutputModelChangeSubject();\n\n // Once we apply options, we need to normalise model values for the first time\n this.renormaliseModelValues();\n\n this.viewLowValue = this.modelValueToViewValue(this.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.updateVerticalState(); // need to run this again to cover changes to slider elements\n this.manageElementsStyle();\n this.updateDisabledState();\n this.calculateViewDimensions();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n this.initHandles();\n this.manageEventsBindings();\n this.updateAriaLabel();\n\n this.subscribeResizeObserver();\n\n this.initHasRun = true;\n\n // Run change detection manually to resolve some issues when init procedure changes values used in the view\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n // OnChanges interface\n public ngOnChanges(changes: SimpleChanges): void {\n // Always apply options first\n const options = changes['options'];\n if (\n !ValueHelper.isNullOrUndefined(options) &&\n JSON.stringify(options.previousValue) !== JSON.stringify(options.currentValue)\n ) {\n this.onChangeOptions();\n }\n\n // Then value changes\n if (!ValueHelper.isNullOrUndefined(changes['value']) || !ValueHelper.isNullOrUndefined(changes['highValue'])) {\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n }\n\n // OnDestroy interface\n public ngOnDestroy(): void {\n this.unbindEvents();\n\n this.unsubscribeResizeObserver();\n this.unsubscribeInputModelChangeSubject();\n this.unsubscribeOutputModelChangeSubject();\n this.unsubscribeManualRefresh();\n this.unsubscribeTriggerFocus();\n }\n\n // ControlValueAccessor interface\n public writeValue(obj: any): void {\n if (obj instanceof Array) {\n this.value = obj[0];\n this.highValue = obj[1];\n } else {\n this.value = obj;\n }\n\n // ngOnChanges() is not called in this instance, so we need to communicate the change manually\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n\n // ControlValueAccessor interface\n public registerOnChange(onChangeCallback: any): void {\n this.onChangeCallback = onChangeCallback;\n }\n\n // ControlValueAccessor interface\n public registerOnTouched(onTouchedCallback: any): void {\n this.onTouchedCallback = onTouchedCallback;\n }\n\n // ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n this.viewOptions.disabled = isDisabled;\n this.updateDisabledState();\n }\n\n public setAriaLabel(ariaLabel: string): void {\n this.viewOptions.ariaLabel = ariaLabel;\n this.updateAriaLabel();\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event: any): void {\n this.calculateViewDimensionsAndDetectChanges();\n }\n\n private subscribeInputModelChangeSubject(): void {\n this.inputModelChangeSubscription = this.inputModelChangeSubject\n .pipe(\n distinctUntilChanged(ModelChange.compare as unknown as any),\n // Hack to reset the status of the distinctUntilChanged() - if a \"fake\" event comes through with forceChange=true,\n // we forcefully by-pass distinctUntilChanged(), but otherwise drop the event\n filter((modelChange: InputModelChange) => !modelChange.forceChange && !modelChange.internalChange)\n )\n .subscribe((modelChange: InputModelChange) => this.applyInputModelChange(modelChange));\n }\n\n private subscribeOutputModelChangeSubject(): void {\n this.outputModelChangeSubscription = this.outputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare))\n .subscribe((modelChange: any) => this.publishOutputModelChange(modelChange));\n }\n\n private subscribeResizeObserver(): void {\n if (CompatibilityHelper.isResizeObserverAvailable()) {\n this.resizeObserver = new ResizeObserver((): void => this.calculateViewDimensionsAndDetectChanges());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n\n private unsubscribeResizeObserver(): void {\n if (CompatibilityHelper.isResizeObserverAvailable() && this.resizeObserver !== null) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n }\n\n private unsubscribeOnMove(): void {\n if (!ValueHelper.isNullOrUndefined(this.onMoveEventListener)) {\n this.eventListenerHelper?.detachEventListener(this.onMoveEventListener!);\n this.onMoveEventListener = undefined;\n }\n }\n\n private unsubscribeOnEnd(): void {\n if (!ValueHelper.isNullOrUndefined(this.onEndEventListener)) {\n this.eventListenerHelper?.detachEventListener(this.onEndEventListener!);\n this.onEndEventListener = undefined;\n }\n }\n\n private unsubscribeInputModelChangeSubject(): void {\n if (!ValueHelper.isNullOrUndefined(this.inputModelChangeSubscription)) {\n this.inputModelChangeSubscription?.unsubscribe();\n this.inputModelChangeSubscription = undefined;\n }\n }\n\n private unsubscribeOutputModelChangeSubject(): void {\n if (!ValueHelper.isNullOrUndefined(this.outputModelChangeSubscription)) {\n this.outputModelChangeSubscription?.unsubscribe();\n this.outputModelChangeSubscription = undefined;\n }\n }\n\n private unsubscribeManualRefresh(): void {\n if (!ValueHelper.isNullOrUndefined(this.manualRefreshSubscription)) {\n this.manualRefreshSubscription.unsubscribe();\n this.manualRefreshSubscription = undefined;\n }\n }\n\n private unsubscribeTriggerFocus(): void {\n if (!ValueHelper.isNullOrUndefined(this.triggerFocusSubscription)) {\n this.triggerFocusSubscription.unsubscribe();\n this.triggerFocusSubscription = null;\n }\n }\n\n private getPointerElement(pointerType: PointerType): SliderHandleDirective | undefined {\n if (pointerType === PointerType.Min) {\n return this.minHandleElement;\n } else if (pointerType === PointerType.Max) {\n return this.maxHandleElement;\n }\n return undefined;\n }\n\n private getCurrentTrackingValue(): number | undefined {\n if (this.currentTrackingPointer === PointerType.Min) {\n return this.viewLowValue;\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return this.viewHighValue;\n }\n return undefined;\n }\n\n private modelValueToViewValue(modelValue: number): number {\n if (ValueHelper.isNullOrUndefined(modelValue)) {\n return NaN;\n }\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return ValueHelper.findStepIndex(+modelValue, this.viewOptions.stepsArray!);\n }\n return +modelValue;\n }\n\n private viewValueToModelValue(viewValue: number): number {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return this.getStepValue(viewValue);\n }\n return viewValue;\n }\n\n private getStepValue(sliderValue: number): number {\n const step: CustomStepDefinition = this.viewOptions.stepsArray![sliderValue];\n return !ValueHelper.isNullOrUndefined(step) ? step.value : NaN;\n }\n\n private applyViewChange(): void {\n this.value = this.viewValueToModelValue(this.viewLowValue!);\n if (this.range) {\n this.highValue = this.viewValueToModelValue(this.viewHighValue!);\n }\n\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n userEventInitiated: true,\n forceChange: false\n });\n\n // At this point all changes are applied and outputs are emitted, so we should be done.\n // However, input changes are communicated in different stream and we need to be ready to\n // act on the next input change even if it is exactly the same as last input change.\n // Therefore, we send a special event to reset the stream.\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: true\n });\n }\n\n // Apply model change to the slider view\n private applyInputModelChange(modelChange: InputModelChange): void {\n const normalisedModelChange: ModelValues = this.normaliseModelValues(modelChange);\n\n // If normalised model change is different, apply the change to the model values\n const normalisationChange: boolean = !ModelValues.compare(modelChange, normalisedModelChange);\n if (normalisationChange) {\n this.value = normalisedModelChange.value;\n this.highValue = normalisedModelChange.highValue;\n }\n\n this.viewLowValue = this.modelValueToViewValue(normalisedModelChange.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(normalisedModelChange.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n this.updateAriaAttributes();\n if (this.range) {\n this.updateCombinedLabel();\n }\n\n // At the end, we need to communicate the model change to the outputs as well\n // Normalisation changes are also always forced out to ensure that subscribers always end up in correct state\n this.outputModelChangeSubject.next({\n value: normalisedModelChange.value,\n highValue: normalisedModelChange.highValue,\n forceChange: normalisationChange,\n userEventInitiated: false\n });\n }\n\n // Publish model change to output event emitters and registered callbacks\n private publishOutputModelChange(modelChange: OutputModelChange): void {\n const emitOutputs: () => void = (): void => {\n this.valueChange.emit(modelChange.value);\n if (this.range) {\n this.highValueChange.emit(modelChange.highValue);\n }\n\n if (!ValueHelper.isNullOrUndefined(this.onChangeCallback)) {\n if (this.range) {\n this.onChangeCallback!([modelChange.value, modelChange.highValue]);\n } else {\n this.onChangeCallback!(modelChange.value);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.onTouchedCallback)) {\n if (this.range) {\n this.onTouchedCallback!([modelChange.value, modelChange.highValue]);\n } else {\n this.onTouchedCallback!(modelChange.value);\n }\n }\n };\n\n if (modelChange.userEventInitiated) {\n // If this change was initiated by a user event, we can emit outputs in the same tick\n emitOutputs();\n this.userChange.emit(this.getChangeContext());\n } else {\n // But, if the change was initated by something else like a change in input bindings,\n // we need to wait until next tick to emit the outputs to keep Angular change detection happy\n setTimeout(() => {\n emitOutputs();\n });\n }\n }\n\n private normaliseModelValues(input: ModelValues): ModelValues {\n const normalisedInput: ModelValues = new ModelValues();\n normalisedInput.value = input.value;\n normalisedInput.highValue = input.highValue;\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n // When using steps array, only round to nearest step in the array\n // No other enforcement can be done, as the step array may be out of order, and that is perfectly fine\n if (this.viewOptions.enforceStepsArray) {\n const valueIndex: number = ValueHelper.findStepIndex(normalisedInput.value!, this.viewOptions.stepsArray!);\n normalisedInput.value = this.viewOptions.stepsArray![valueIndex].value;\n\n if (this.range) {\n const highValueIndex: number = ValueHelper.findStepIndex(\n normalisedInput.highValue!,\n this.viewOptions.stepsArray!\n );\n normalisedInput.highValue = this.viewOptions.stepsArray![highValueIndex].value;\n }\n }\n\n return normalisedInput;\n }\n\n if (this.viewOptions.enforceStep) {\n normalisedInput.value = this.roundStep(normalisedInput.value!);\n if (this.range) {\n normalisedInput.highValue = this.roundStep(normalisedInput.highValue!);\n }\n }\n\n if (this.viewOptions.enforceRange) {\n normalisedInput.value = MathHelper.clampToRange(\n normalisedInput.value!,\n this.viewOptions.floor!,\n this.viewOptions.ceil!\n );\n\n if (this.range) {\n normalisedInput.highValue = MathHelper.clampToRange(\n normalisedInput.highValue!,\n this.viewOptions.floor!,\n this.viewOptions.ceil!\n );\n }\n\n // Make sure that range slider invariant (value <= highValue) is always satisfied\n if (this.range && input.value! > input.highValue!) {\n // We know that both values are now clamped correctly, they may just be in the wrong order\n // So the easy solution is to swap them... except swapping is sometimes disabled in options, so we make the two values the same\n if (this.viewOptions.noSwitching) {\n normalisedInput.value = normalisedInput.highValue;\n } else {\n const tempValue = input.value;\n normalisedInput.value = input.highValue;\n normalisedInput.highValue = tempValue;\n }\n }\n }\n\n return normalisedInput;\n }\n\n private renormaliseModelValues(): void {\n const previousModelValues: ModelValues = {\n value: this.value,\n highValue: this.highValue\n };\n const normalisedModelValues: ModelValues = this.normaliseModelValues(previousModelValues);\n if (!ModelValues.compare(normalisedModelValues, previousModelValues)) {\n this.value = normalisedModelValues.value;\n this.highValue = normalisedModelValues.highValue;\n\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: true,\n userEventInitiated: false\n });\n }\n }\n\n private onChangeOptions(): void {\n if (!this.initHasRun) {\n return;\n }\n\n const previousOptionsInfluencingEventBindings: boolean[] = this.getOptionsInfluencingEventBindings(\n this.viewOptions\n );\n\n this.applyOptions();\n\n const newOptionsInfluencingEventBindings: boolean[] = this.getOptionsInfluencingEventBindings(this.viewOptions);\n // Avoid re-binding events in case nothing changes that can influence it\n // It makes it possible to change options while dragging the slider\n const rebindEvents: boolean = !ValueHelper.areArraysEqual(\n previousOptionsInfluencingEventBindings,\n newOptionsInfluencingEventBindings\n );\n\n // With new options, we need to re-normalise model values if necessary\n this.renormaliseModelValues();\n\n this.viewLowValue = this.modelValueToViewValue(this.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.resetSlider(rebindEvents);\n }\n\n // Read the user options and apply them to the slider model\n private applyOptions(): void {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n\n this.viewOptions.draggableRange = this.range && this.viewOptions.draggableRange;\n this.viewOptions.draggableRangeOnly = this.range && this.viewOptions.draggableRangeOnly;\n if (this.viewOptions.draggableRangeOnly) {\n this.viewOptions.draggableRange = true;\n }\n\n this.viewOptions.showTicks =\n this.viewOptions.showTicks ||\n this.viewOptions.showTicksValues ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray);\n if (\n this.viewOptions.showTicks &&\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray))\n ) {\n this.intermediateTicks = true;\n }\n\n this.viewOptions.showSelectionBar =\n this.viewOptions.showSelectionBar ||\n this.viewOptions.showSelectionBarEnd ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue);\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n this.applyStepsArrayOptions();\n } else {\n this.applyFloorCeilOptions();\n }\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.combineLabels)) {\n this.viewOptions.combineLabels = (minValue: string, maxValue: string): string => {\n return minValue + ' - ' + maxValue;\n };\n }\n\n if (this.viewOptions.logScale && this.viewOptions.floor === 0) {\n throw Error(\"Can't use floor=0 with logarithmic scale\");\n }\n }\n\n private applyStepsArrayOptions(): void {\n this.viewOptions.floor = 0;\n this.viewOptions.ceil = this.viewOptions.stepsArray!.length - 1;\n this.viewOptions.step = 1;\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (modelValue: number): string => {\n if (this.viewOptions.bindIndexForStepsArray) {\n return String(this.getStepValue(modelValue));\n }\n return String(modelValue);\n };\n }\n }\n\n private applyFloorCeilOptions(): void {\n if (ValueHelper.isNullOrUndefined(this.viewOptions.step)) {\n this.viewOptions.step = 1;\n } else {\n this.viewOptions.step = +this.viewOptions.step!;\n if (this.viewOptions.step <= 0) {\n this.viewOptions.step = 1;\n }\n }\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.ceil) || ValueHelper.isNullOrUndefined(this.viewOptions.floor)) {\n throw Error('floor and ceil options must be supplied');\n }\n this.viewOptions.ceil = +this.viewOptions.ceil!;\n this.viewOptions.floor = +this.viewOptions.floor!;\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (value: number): string => String(value);\n }\n }\n\n // Resets slider\n private resetSlider(rebindEvents: boolean = true): void {\n this.manageElementsStyle();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n if (rebindEvents) {\n this.unbindEvents();\n this.manageEventsBindings();\n }\n this.updateDisabledState();\n this.updateAriaLabel();\n this.calculateViewDimensions();\n this.refocusPointerIfNeeded();\n }\n\n // Sets focus on the specified pointer\n private focusPointer(pointerType: PointerType): void {\n // If not supplied, use min pointer as default\n if (pointerType !== PointerType.Min && pointerType !== PointerType.Max) {\n pointerType = PointerType.Min;\n }\n\n if (pointerType === PointerType.Min) {\n this.minHandleElement?.focus();\n } else if (this.range && pointerType === PointerType.Max) {\n this.maxHandleElement?.focus();\n }\n }\n\n private refocusPointerIfNeeded(): void {\n if (!ValueHelper.isNullOrUndefined(this.currentFocusPointer)) {\n this.onPointerFocus(this.currentFocusPointer!);\n const element = this.getPointerElement(this.currentFocusPointer!);\n element?.focus();\n }\n }\n\n // Update each elements style based on options\n private manageElementsStyle(): void {\n this.updateScale();\n this.floorLabelElement?.setAlwaysHide(this.viewOptions.showTicksValues! || this.viewOptions.hideLimitLabels!);\n this.ceilLabelElement?.setAlwaysHide(this.viewOptions.showTicksValues! || this.viewOptions.hideLimitLabels!);\n\n const hideLabelsForTicks: boolean = this.viewOptions.showTicksValues! && !this.intermediateTicks!;\n this.minHandleLabelElement?.setAlwaysHide(hideLabelsForTicks || this.viewOptions.hidePointerLabels!);\n this.maxHandleLabelElement?.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels!);\n this.combinedLabelElement?.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels!);\n this.selectionBarElement?.setAlwaysHide(!this.range && !this.viewOptions.showSelectionBar);\n this.leftOuterSelectionBarElement?.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.rightOuterSelectionBarElement?.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n\n this.fullBarTransparentClass = this.range && this.viewOptions.showOuterSelectionBars!;\n this.selectionBarDraggableClass = this.viewOptions.draggableRange! && !this.viewOptions.onlyBindHandles!;\n this.ticksUnderValuesClass = this.intermediateTicks && this.options.showTicksValues!;\n\n if (this.sliderElementVerticalClass !== this.viewOptions.vertical) {\n this.updateVerticalState();\n // The above change in host component class will not be applied until the end of this cycle\n // However, functions calculating the slider position expect the slider to be already styled as vertical\n // So as a workaround, we need to reset the slider once again to compute the correct values\n setTimeout((): void => {\n this.resetSlider();\n });\n }\n\n // Changing animate class may interfere with slider reset/initialisation, so we should set it separately,\n // after all is properly set up\n if (this.sliderElementAnimateClass !== this.viewOptions.animate) {\n setTimeout((): void => {\n this.sliderElementAnimateClass = this.viewOptions.animate!;\n });\n }\n this.updateRotate();\n }\n\n // Manage the events bindings based on readOnly and disabled options\n private manageEventsBindings(): void {\n if (this.viewOptions.disabled || this.viewOptions.readOnly) {\n this.unbindEvents();\n } else {\n this.bindEvents();\n }\n }\n\n // Set the disabled state based on disabled option\n private updateDisabledState(): void {\n this.sliderElementDisabledAttr = this.viewOptions.disabled ? 'disabled' : undefined;\n }\n\n // Set the aria-label state based on ariaLabel option\n private updateAriaLabel(): void {\n this.sliderElementAriaLabel = this.viewOptions.ariaLabel || 'nxg-slider';\n }\n\n // Set vertical state based on vertical option\n private updateVerticalState(): void {\n this.sliderElementVerticalClass = this.viewOptions.vertical!;\n for (const element of this.getAllSliderElements()) {\n // This is also called before ngAfterInit, so need to check that view child bindings work\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.setVertical(this.viewOptions.vertical!);\n }\n }\n }\n\n private updateScale(): void {\n for (const element of this.getAllSliderElements()) {\n element.setScale(this.viewOptions.scale!);\n }\n }\n\n private updateRotate(): void {\n for (const element of this.getAllSliderElements()) {\n element.setRotate(this.viewOptions.rotate!);\n }\n }\n\n private getAllSliderElements(): SliderElementDirective[] {\n return [\n this.leftOuterSelectionBarElement!,\n this.rightOuterSelectionBarElement!,\n this.fullBarElement!,\n this.selectionBarElement!,\n this.minHandleElement!,\n this.maxHandleElement!,\n this.floorLabelElement!,\n this.ceilLabelElement!,\n this.minHandleLabelElement!,\n this.maxHandleLabelElement!,\n this.combinedLabelElement!,\n this.ticksElement!\n ];\n }\n\n // Initialize slider handles positions and labels\n // Run only once during initialization and every time view port changes size\n private initHandles(): void {\n this.updateLowHandle(this.valueToPosition(this.viewLowValue!));\n\n /*\n the order here is important since the selection bar should be\n updated after the high handle but before the combined label\n */\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n }\n\n this.updateSelectionBar();\n\n if (this.range) {\n this.updateCombinedLabel();\n }\n\n this.updateTicksScale();\n }\n\n // Adds accessibility attributes, run only once during initialization\n private addAccessibility(): void {\n this.updateAriaAttributes();\n\n this.minHandleElement!.role = 'slider';\n\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.minHandleElement!.tabindex = '0';\n } else {\n this.minHandleElement!.tabindex = '';\n }\n\n this.minHandleElement!.ariaOrientation =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabel)) {\n this.minHandleElement!.ariaLabel = this.viewOptions.ariaLabel!;\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledBy)) {\n this.minHandleElement!.ariaLabelledBy = this.viewOptions.ariaLabelledBy!;\n }\n\n if (this.range) {\n this.maxHandleElement!.role = 'slider';\n\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.maxHandleElement!.tabindex = '0';\n } else {\n this.maxHandleElement!.tabindex = '';\n }\n\n this.maxHandleElement!.ariaOrientation =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelHigh)) {\n this.maxHandleElement!.ariaLabel = this.viewOptions.ariaLabelHigh!;\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledByHigh)) {\n this.maxHandleElement!.ariaLabelledBy = this.viewOptions.ariaLabelledByHigh!;\n }\n }\n }\n\n // Updates aria attributes according to current values\n private updateAriaAttributes(): void {\n this.minHandleElement!.ariaValueNow = (+this.value!).toString();\n this.minHandleElement!.ariaValueText = this.viewOptions.translate!(+this.value!, LabelType.Low);\n this.minHandleElement!.ariaValueMin = this.viewOptions.floor!.toString();\n this.minHandleElement!.ariaValueMax = this.viewOptions.ceil!.toString();\n\n if (this.range) {\n this.maxHandleElement!.ariaValueNow = (+this.highValue!).toString();\n this.maxHandleElement!.ariaValueText = this.viewOptions.translate!(+this.highValue!, LabelType.High);\n this.maxHandleElement!.ariaValueMin = this.viewOptions.floor!.toString();\n this.maxHandleElement!.ariaValueMax = this.viewOptions.ceil!.toString();\n }\n }\n\n // Calculate dimensions that are dependent on view port size\n // Run once during initialization and every time view port changes size.\n private calculateViewDimensions(): void {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.handleDimension)) {\n this.minHandleElement!.setDimension(this.viewOptions.handleDimension!);\n } else {\n this.minHandleElement!.calculateDimension();\n }\n\n const handleWidth = this.minHandleElement!.dimension;\n\n this.handleHalfDimension = handleWidth / 2;\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.barDimension)) {\n this.fullBarElement!.setDimension(this.viewOptions.barDimension!);\n } else {\n this.fullBarElement!.calculateDimension();\n }\n\n this.maxHandlePosition = this.fullBarElement!.dimension - handleWidth;\n\n if (this.initHasRun) {\n this.updateFloorLabel();\n this.updateCeilLabel();\n this.initHandles();\n }\n }\n\n private calculateViewDimensionsAndDetectChanges(): void {\n this.calculateViewDimensions();\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n /**\n * If the slider reference is already destroyed\n * @returns boolean - true if ref is destroyed\n */\n private isRefDestroyed(): boolean {\n return (this.changeDetectionRef as any)['destroyed'];\n }\n\n // Update the ticks position\n private updateTicksScale(): void {\n if (!this.viewOptions.showTicks) {\n setTimeout(() => {\n this.sliderElementWithLegendClass = false;\n });\n return;\n }\n\n const ticksArray = !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray)\n ? this.viewOptions.ticksArray\n : this.getTicksArray();\n const translate: string = this.viewOptions.vertical ? 'translateY' : 'translateX';\n\n if (this.viewOptions.rightToLeft) {\n ticksArray!.reverse();\n }\n\n const tickValueStep = !ValueHelper.isNullOrUndefined(this.viewOptions.tickValueStep)\n ? this.viewOptions.tickValueStep\n : !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)\n ? this.viewOptions.tickStep\n : this.viewOptions.step;\n\n let hasAtLeastOneLegend: boolean = false;\n\n const newTicks: Tick[] = ticksArray!.map((value: number): Tick => {\n let position: number = this.valueToPosition(value);\n\n if (this.viewOptions.vertical) {\n position = this.maxHandlePosition - position;\n }\n\n const translation: string = translate + '(' + Math.round(position) + 'px)';\n const tick: Tick = new Tick();\n tick.selected = this.isTickSelected(value);\n tick.style = {\n '-webkit-transform': translation,\n '-moz-transform': translation,\n '-o-transform': translation,\n '-ms-transform': translation,\n transform: translation\n };\n if (tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n tick.style['background-color'] = this.getSelectionBarColor();\n }\n if (!tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getTickColor)) {\n tick.style['background-color'] = this.getTickColor(value);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksTooltip)) {\n tick.tooltip = this.viewOptions.ticksTooltip!(value);\n tick.tooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n if (\n this.viewOptions.showTicksValues &&\n !ValueHelper.isNullOrUndefined(tickValueStep) &&\n MathHelper.isModuloWithinPrecisionLimit(value, tickValueStep!, this.viewOptions.precisionLimit!)\n ) {\n tick.value = this.getDisplayValue(value, LabelType.TickValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksValuesTooltip)) {\n tick.valueTooltip = this.viewOptions.ticksValuesTooltip!(value);\n tick.valueTooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n }\n\n let legend: string;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n const step: CustomStepDefinition = this.viewOptions.stepsArray![value];\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getStepLegend)) {\n legend = this.viewOptions.getStepLegend!(step);\n } else if (!ValueHelper.isNullOrUndefined(step)) {\n legend = step.legend!;\n }\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.getLegend)) {\n legend = this.viewOptions.getLegend!(value);\n }\n if (!ValueHelper.isNullOrUndefined(legend!)) {\n tick.legend = legend!;\n hasAtLeastOneLegend = true;\n }\n\n return tick;\n });\n\n setTimeout(() => {\n this.sliderElementWithLegendClass = hasAtLeastOneLegend;\n });\n\n // We should avoid re-creating the ticks array if possible\n // This both improves performance and makes CSS animations work correctly\n if (!ValueHelper.isNullOrUndefined(this.ticks) && this.ticks.length === newTicks.length) {\n for (let i: number = 0; i < newTicks.length; ++i) {\n Object.assign(this.ticks[i], newTicks[i]);\n }\n } else {\n this.ticks = newTicks;\n }\n\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n private getTicksArray(): number[] {\n const step = !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)\n ? this.viewOptions.tickStep\n : this.viewOptions.step;\n const ticksArray: number[] = [];\n\n const numberOfValues: number =\n 1 +\n Math.floor(\n MathHelper.roundToPrecisionLimit(\n Math.abs(this.viewOptions.ceil! - this.viewOptions.floor!) / step!,\n this.viewOptions.precisionLimit!\n )\n );\n for (let index: number = 0; index < numberOfValues; ++index) {\n ticksArray.push(\n MathHelper.roundToPrecisionLimit(this.viewOptions.floor! + step! * index, this.viewOptions.precisionLimit!)\n );\n }\n\n return ticksArray;\n }\n\n private isTickSelected(value: number): boolean {\n if (!this.range) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n const center = this.viewOptions.showSelectionBarFromValue;\n if (this.viewLowValue! > center! && value >= center! && value <= this.viewLowValue!) {\n return true;\n } else if (this.viewLowValue! < center! && value <= center! && value >= this.viewLowValue!) {\n return true;\n }\n } else if (this.viewOptions.showSelectionBarEnd) {\n if (value >= this.viewLowValue!) {\n return true;\n }\n } else if (this.viewOptions.showSelectionBar && value <= this.viewLowValue!) {\n return true;\n }\n }\n\n if (this.range && value >= this.viewLowValue! && value <= this.viewHighValue!) {\n return true;\n }\n\n return false;\n }\n\n // Update position of the floor label\n private updateFloorLabel(): void {\n if (!this.floorLabelElement!.alwaysHide) {\n this.floorLabelElement!.setValue(this.getDisplayValue(this.viewOptions.floor!, LabelType.Floor));\n this.floorLabelElement!.calculateDimension();\n const position: number = this.viewOptions.rightToLeft\n ? this.fullBarElement!.dimension - this.floorLabelElement!.dimension\n : 0;\n this.floorLabelElement!.setPosition(position);\n }\n }\n\n // Update position of the ceiling label\n private updateCeilLabel(): void {\n if (!this.ceilLabelElement!.alwaysHide) {\n this.ceilLabelElement!.setValue(this.getDisplayValue(this.viewOptions.ceil!, LabelType.Ceil));\n this.ceilLabelElement!.calculateDimension();\n const position: number = this.viewOptions.rightToLeft\n ? 0\n : this.fullBarElement!.dimension - this.ceilLabelElement!.dimension;\n this.ceilLabelElement!.setPosition(position);\n }\n }\n\n // Update slider handles and label positions\n private updateHandles(which: PointerType, newPos: number): void {\n if (which === PointerType.Min) {\n this.updateLowHandle(newPos);\n } else if (which === PointerType.Max) {\n this.updateHighHandle(newPos);\n }\n\n this.updateSelectionBar();\n this.updateTicksScale();\n if (this.range) {\n this.updateCombinedLabel();\n }\n }\n\n // Helper function to work out the position for handle labels depending on RTL or not\n private getHandleLabelPos(labelType: PointerType, newPos: number): number {\n const labelDimension: number =\n labelType === PointerType.Min ? this.minHandleLabelElement!.dimension : this.maxHandleLabelElement!.dimension;\n const nearHandlePos: number = newPos - labelDimension / 2 + this.handleHalfDimension;\n const endOfBarPos: number = this.fullBarElement!.dimension - labelDimension;\n\n if (!this.viewOptions.boundPointerLabels) {\n return nearHandlePos;\n }\n\n if (\n (this.viewOptions.rightToLeft && labelType === PointerType.Min) ||\n (!this.viewOptions.rightToLeft && labelType === PointerType.Max)\n ) {\n return Math.min(nearHandlePos, endOfBarPos);\n } else {\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\n }\n }\n\n // Update low slider handle position and label\n private updateLowHandle(newPos: number): void {\n this.minHandleElement!.setPosition(newPos);\n this.minHandleLabelElement!.setValue(this.getDisplayValue(this.viewLowValue!, LabelType.Low));\n this.minHandleLabelElement!.setPosition(this.getHandleLabelPos(PointerType.Min, newPos));\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.minPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Min)\n };\n }\n\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Update high slider handle position and label\n private updateHighHandle(newPos: number): void {\n this.maxHandleElement!.setPosition(newPos);\n this.maxHandleLabelElement!.setValue(this.getDisplayValue(this.viewHighValue!, LabelType.High));\n this.maxHandleLabelElement!.setPosition(this.getHandleLabelPos(PointerType.Max, newPos));\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.maxPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Max)\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Show/hide floor/ceiling label\n private updateFloorAndCeilLabelsVisibility(): void {\n // Show based only on hideLimitLabels if pointer labels are hidden\n if (this.viewOptions.hidePointerLabels) {\n return;\n }\n let floorLabelHidden: boolean = false;\n let ceilLabelHidden: boolean = false;\n const isMinLabelAtFloor: boolean = this.isLabelBelowFloorLabel(this.minHandleLabelElement!);\n const isMinLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.minHandleLabelElement!);\n const isMaxLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.maxHandleLabelElement!);\n const isCombinedLabelAtFloor: boolean = this.isLabelBelowFloorLabel(this.combinedLabelElement!);\n const isCombinedLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.combinedLabelElement!);\n\n if (isMinLabelAtFloor) {\n floorLabelHidden = true;\n this.floorLabelElement!.hide();\n } else {\n floorLabelHidden = false;\n this.floorLabelElement!.show();\n }\n\n if (isMinLabelAtCeil) {\n ceilLabelHidden = true;\n this.ceilLabelElement!.hide();\n } else {\n ceilLabelHidden = false;\n this.ceilLabelElement!.show();\n }\n\n if (this.range) {\n const hideCeil: boolean = this.combinedLabelElement!.isVisible() ? isCombinedLabelAtCeil : isMaxLabelAtCeil;\n const hideFloor: boolean = this.combinedLabelElement!.isVisible() ? isCombinedLabelAtFloor : isMinLabelAtFloor;\n\n if (hideCeil) {\n this.ceilLabelElement!.hide();\n } else if (!ceilLabelHidden) {\n this.ceilLabelElement!.show();\n }\n\n // Hide or show floor label\n if (hideFloor) {\n this.floorLabelElement!.hide();\n } else if (!floorLabelHidden) {\n this.floorLabelElement!.show();\n }\n }\n }\n\n private isLabelBelowFloorLabel(label: SliderLabelDirective): boolean {\n const pos: number = label.position;\n const dim: number = label.dimension;\n const floorPos: number = this.floorLabelElement!.position;\n const floorDim: number = this.floorLabelElement!.dimension;\n return this.viewOptions.rightToLeft ? pos + dim >= floorPos - 2 : pos <= floorPos + floorDim + 2;\n }\n\n private isLabelAboveCeilLabel(label: SliderLabelDirective): boolean {\n const pos: number = label.position;\n const dim: number = label.dimension;\n const ceilPos: number = this.ceilLabelElement!.position;\n const ceilDim: number = this.ceilLabelElement!.dimension;\n return this.viewOptions.rightToLeft ? pos <= ceilPos + ceilDim + 2 : pos + dim >= ceilPos - 2;\n }\n\n // Update slider selection bar, combined label and range label\n private updateSelectionBar(): void {\n let position: number = 0;\n let dimension: number = 0;\n const isSelectionBarFromRight: boolean = this.viewOptions.rightToLeft\n ? !this.viewOptions.showSelectionBarEnd!\n : this.viewOptions.showSelectionBarEnd!;\n const positionForRange: number = this.viewOptions.rightToLeft\n ? this.maxHandleElement!.position + this.handleHalfDimension\n : this.minHandleElement!.position + this.handleHalfDimension;\n\n if (this.range) {\n dimension = Math.abs(this.maxHandleElement!.position - this.minHandleElement!.position);\n position = positionForRange;\n } else {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n const center = this.viewOptions.showSelectionBarFromValue;\n const centerPosition: number = this.valueToPosition(center!);\n const isModelGreaterThanCenter: boolean = this.viewOptions.rightToLeft\n ? this.viewLowValue! <= center!\n : this.viewLowValue! > center!;\n if (isModelGreaterThanCenter) {\n dimension = this.minHandleElement!.position - centerPosition;\n position = centerPosition + this.handleHalfDimension;\n } else {\n dimension = centerPosition - this.minHandleElement!.position;\n position = this.minHandleElement!.position + this.handleHalfDimension;\n }\n } else if (isSelectionBarFromRight) {\n dimension = Math.ceil(\n Math.abs(this.maxHandlePosition - this.minHandleElement!.position) + this.handleHalfDimension\n );\n position = Math.floor(this.minHandleElement!.position + this.handleHalfDimension);\n } else {\n dimension = this.minHandleElement!.position + this.handleHalfDimension;\n position = 0;\n }\n }\n this.selectionBarElement!.setDimension(dimension);\n this.selectionBarElement!.setPosition(position);\n if (this.range && this.viewOptions.showOuterSelectionBars) {\n if (this.viewOptions.rightToLeft) {\n this.rightOuterSelectionBarElement!.setDimension(position);\n this.rightOuterSelectionBarElement!.setPosition(0);\n this.fullBarElement!.calculateDimension();\n this.leftOuterSelectionBarElement!.setDimension(this.fullBarElement!.dimension - (position + dimension));\n this.leftOuterSelectionBarElement!.setPosition(position + dimension);\n } else {\n this.leftOuterSelectionBarElement!.setDimension(position);\n this.leftOuterSelectionBarElement!.setPosition(0);\n this.fullBarElement!.calculateDimension();\n this.rightOuterSelectionBarElement!.setDimension(this.fullBarElement!.dimension - (position + dimension));\n this.rightOuterSelectionBarElement!.setPosition(position + dimension);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n const color: string = this.getSelectionBarColor();\n this.barStyle = {\n backgroundColor: color\n };\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.selectionBarGradient)) {\n const offset: number = !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)\n ? this.valueToPosition(this.viewOptions.showSelectionBarFromValue!)\n : 0;\n const reversed: boolean =\n (offset - position > 0 && !isSelectionBarFromRight) || (offset - position <= 0 && isSelectionBarFromRight);\n const direction: string = this.viewOptions.vertical ? (reversed ? 'bottom' : 'top') : reversed ? 'left' : 'right';\n this.barStyle = {\n backgroundImage:\n 'linear-gradient(to ' +\n direction +\n ', ' +\n this.viewOptions.selectionBarGradient!.from +\n ' 0%,' +\n this.viewOptions.selectionBarGradient!.to +\n ' 100%)'\n };\n if (this.viewOptions.vertical) {\n this.barStyle.backgroundPosition =\n 'center ' + (offset + dimension + position + (reversed ? -this.handleHalfDimension : 0)) + 'px';\n this.barStyle.backgroundSize = '100% ' + (this.fullBarElement!.dimension - this.handleHalfDimension) + 'px';\n } else {\n this.barStyle.backgroundPosition = offset - position + (reversed ? this.handleHalfDimension : 0) + 'px center';\n this.barStyle.backgroundSize = this.fullBarElement!.dimension - this.handleHalfDimension + 'px 100%';\n }\n }\n }\n\n // Wrapper around the getSelectionBarColor of the user to pass to correct parameters\n private getSelectionBarColor(): string {\n if (this.range) {\n return this.viewOptions.getSelectionBarColor!(this.value!, this.highValue);\n }\n return this.viewOptions.getSelectionBarColor!(this.value!);\n }\n\n // Wrapper around the getPointerColor of the user to pass to correct parameters\n private getPointerColor(pointerType: PointerType): string {\n if (pointerType === PointerType.Max) {\n return this.viewOptions.getPointerColor!(this.highValue!, pointerType);\n }\n return this.viewOptions.getPointerColor!(this.value!, pointerType);\n }\n\n // Wrapper around the getTickColor of the user to pass to correct parameters\n private getTickColor(value: number): string {\n return this.viewOptions.getTickColor!(value);\n }\n\n // Update combined label position and value\n private updateCombinedLabel(): void {\n let isLabelOverlap = false;\n if (this.viewOptions.rightToLeft) {\n isLabelOverlap =\n this.minHandleLabelElement!.position - this.minHandleLabelElement!.dimension - 10 <=\n this.maxHandleLabelElement!.position;\n } else {\n isLabelOverlap =\n this.minHandleLabelElement!.position + this.minHandleLabelElement!.dimension + 10 >=\n this.maxHandleLabelElement!.position;\n }\n\n if (isLabelOverlap) {\n const lowDisplayValue: string = this.getDisplayValue(this.viewLowValue!, LabelType.Low);\n const highDisplayValue: string = this.getDisplayValue(this.viewHighValue!, LabelType.High);\n const combinedLabelValue: string = this.viewOptions.rightToLeft\n ? this.viewOptions.combineLabels!(highDisplayValue, lowDisplayValue)\n : this.viewOptions.combineLabels!(lowDisplayValue, highDisplayValue);\n\n this.combinedLabelElement!.setValue(combinedLabelValue);\n const pos: number = this.viewOptions.boundPointerLabels\n ? Math.min(\n Math.max(\n this.selectionBarElement!.position +\n this.selectionBarElement!.dimension / 2 -\n this.combinedLabelElement!.dimension / 2,\n 0\n ),\n this.fullBarElement!.dimension - this.combinedLabelElement!.dimension\n )\n : this.selectionBarElement!.position +\n this.selectionBarElement!.dimension / 2 -\n this.combinedLabelElement!.dimension / 2;\n\n this.combinedLabelElement!.setPosition(pos);\n this.minHandleLabelElement!.hide();\n this.maxHandleLabelElement!.hide();\n this.combinedLabelElement!.show();\n } else {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n this.updateLowHandle(this.valueToPosition(this.viewLowValue!));\n this.maxHandleLabelElement!.show();\n this.minHandleLabelElement!.show();\n this.combinedLabelElement!.hide();\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Return the translated value if a translate function is provided else the original value\n private getDisplayValue(value: number, which: LabelType): string {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n value = this.getStepValue(value);\n }\n return this.viewOptions.translate!(value, which);\n }\n\n // Round value to step and precision based on minValue\n private roundStep(value: number, customStep?: number): number {\n const step = !ValueHelper.isNullOrUndefined(customStep) ? customStep : this.viewOptions.step;\n let steppedDifference: number = MathHelper.roundToPrecisionLimit(\n (value - this.viewOptions.floor!) / step!,\n this.viewOptions.precisionLimit!\n );\n steppedDifference = Math.round(steppedDifference) * step!;\n return MathHelper.roundToPrecisionLimit(\n this.viewOptions.floor! + steppedDifference,\n this.viewOptions.precisionLimit!\n );\n }\n\n // Translate value to pixel position\n private valueToPosition(val: number): number {\n let fn: ValueToPositionFunction = ValueHelper.linearValueToPosition;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customValueToPosition)) {\n fn = this.viewOptions.customValueToPosition!;\n } else if (this.viewOptions.logScale) {\n fn = ValueHelper.logValueToPosition;\n }\n\n val = MathHelper.clampToRange(val, this.viewOptions.floor!, this.viewOptions.ceil!);\n let percent: number = fn(val, this.viewOptions.floor!, this.viewOptions.ceil!);\n if (ValueHelper.isNullOrUndefined(percent)) {\n percent = 0;\n }\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n return percent * this.maxHandlePosition;\n }\n\n // Translate position to model value\n private positionToValue(position: number): number {\n let percent: number = position / this.maxHandlePosition;\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n let fn: PositionToValueFunction = ValueHelper.linearPositionToValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customPositionToValue)) {\n fn = this.viewOptions.customPositionToValue!;\n } else if (this.viewOptions.logScale) {\n fn = ValueHelper.logPositionToValue;\n }\n const value: number = fn(percent, this.viewOptions.floor!, this.viewOptions.ceil!);\n return !ValueHelper.isNullOrUndefined(value) ? value : 0;\n }\n\n // Get the X-coordinate or Y-coordinate of an event\n private getEventXY(event: MouseEvent | TouchEvent, targetTouchId?: number): number {\n if (event instanceof MouseEvent) {\n return this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? event.clientY : event.clientX;\n }\n\n let touchIndex: number = 0;\n const touches: TouchList = event.touches;\n if (!ValueHelper.isNullOrUndefined(targetTouchId)) {\n for (let i: number = 0; i < touches.length; i++) {\n if (touches[i].identifier === targetTouchId) {\n touchIndex = i;\n break;\n }\n }\n }\n\n // Return the target touch or if the target touch was not found in the event\n // returns the coordinates of the first touch\n return this.viewOptions.vertical || this.viewOptions.rotate !== 0\n ? touches[touchIndex].clientY\n : touches[touchIndex].clientX;\n }\n\n // Compute the event position depending on whether the slider is horizontal or vertical\n private getEventPosition(event: MouseEvent | TouchEvent, targetTouchId?: number): number {\n const sliderElementBoundingRect: ClientRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n const sliderPos: number =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0\n ? sliderElementBoundingRect.bottom\n : sliderElementBoundingRect.left;\n let eventPos: number = 0;\n\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n eventPos = -this.getEventXY(event, targetTouchId) + sliderPos;\n } else {\n eventPos = this.getEventXY(event, targetTouchId) - sliderPos;\n }\n\n return eventPos * this.viewOptions.scale! - this.handleHalfDimension;\n }\n\n // Get the handle closest to an event\n private getNearestHandle(event: MouseEvent | TouchEvent): PointerType {\n if (!this.range) {\n return PointerType.Min;\n }\n\n const position: number = this.getEventPosition(event);\n const distanceMin: number = Math.abs(position - this.minHandleElement!.position);\n const distanceMax: number = Math.abs(position - this.maxHandleElement!.position);\n\n if (distanceMin < distanceMax) {\n return PointerType.Min;\n } else if (distanceMin > distanceMax) {\n return PointerType.Max;\n } else if (!this.viewOptions.rightToLeft) {\n // if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH\n return position < this.minHandleElement!.position ? PointerType.Min : PointerType.Max;\n }\n // reverse in rtl\n return position > this.minHandleElement!.position ? PointerType.Min : PointerType.Max;\n }\n\n // Bind mouse and touch events to slider handles\n private bindEvents(): void {\n const draggableRange: boolean = this.viewOptions.draggableRange!;\n\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, undefined, true)\n );\n }\n\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Min)\n );\n this.maxHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Max)\n );\n } else {\n this.minHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, PointerType.Min)\n );\n\n if (this.range) {\n this.maxHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, PointerType.Max)\n );\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, undefined, true)\n );\n this.ticksElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, undefined, true, true)\n );\n }\n }\n\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, undefined, true)\n );\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Min)\n );\n this.maxHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Max)\n );\n } else {\n this.minHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, PointerType.Min)\n );\n if (this.range) {\n this.maxHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, PointerType.Max)\n );\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, undefined, true)\n );\n this.ticksElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, false, false, undefined, true, true)\n );\n }\n }\n\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement!.on('focus', (): void => this.onPointerFocus(PointerType.Min));\n if (this.range) {\n this.maxHandleElement!.on('focus', (): void => this.onPointerFocus(PointerType.Max));\n }\n }\n }\n\n private getOptionsInfluencingEventBindings(options: Options): boolean[] {\n return [\n options.disabled!,\n options.readOnly!,\n options.draggableRange!,\n options.draggableRangeOnly!,\n options.onlyBindHandles!,\n options.keyboardSupport!\n ];\n }\n\n // Unbind mouse and touch events to slider handles\n private unbindEvents(): void {\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n\n for (const element of this.getAllSliderElements()) {\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.off();\n }\n }\n }\n\n private onBarStart(\n draggableRange: boolean,\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType,\n simulateImmediateMove?: boolean,\n simulateImmediateEnd?: boolean\n ): void {\n if (draggableRange) {\n this.onDragStart(event, bindMove, bindEnd, pointerType);\n } else {\n this.onStart(event, bindMove, bindEnd, pointerType, simulateImmediateMove, simulateImmediateEnd);\n }\n }\n\n // onStart event handler\n private onStart(\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType,\n simulateImmediateMove?: boolean,\n simulateImmediateEnd?: boolean\n ): void {\n event.stopPropagation();\n // Only call preventDefault() when handling non-passive events (passive events don't need it)\n if (!CompatibilityHelper.isTouchEvent(event) && !supportsPassiveEvents) {\n event.preventDefault();\n }\n\n this.moving = false;\n\n // We have to do this in case the HTML where the sliders are on\n // have been animated into view.\n this.calculateViewDimensions();\n\n if (ValueHelper.isNullOrUndefined(pointerType)) {\n pointerType = this.getNearestHandle(event);\n }\n\n this.currentTrackingPointer = pointerType;\n\n const pointerElement: SliderHandleDirective = this.getPointerElement(pointerType!)!;\n pointerElement.active = true;\n\n if (this.viewOptions.keyboardSupport) {\n pointerElement.focus();\n }\n\n if (bindMove) {\n this.unsubscribeOnMove();\n\n const onMoveCallback: (e: MouseEvent | TouchEvent) => void = (e: MouseEvent | TouchEvent): void =>\n this.dragging.active ? this.onDragMove(e) : this.onMove(e);\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onMoveEventListener = this.eventListenerHelper!.attachPassiveEventListener(\n document,\n 'touchmove',\n onMoveCallback\n );\n } else {\n this.onMoveEventListener = this.eventListenerHelper!.attachEventListener(document, 'mousemove', onMoveCallback);\n }\n }\n\n if (bindEnd) {\n this.unsubscribeOnEnd();\n\n const onEndCallback: (e: MouseEvent | TouchEvent) => void = (e: MouseEvent | TouchEvent): void => this.onEnd(e);\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onEndEventListener = this.eventListenerHelper!.attachPassiveEventListener(\n document,\n 'touchend',\n onEndCallback\n );\n } else {\n this.onEndEventListener = this.eventListenerHelper!.attachEventListener(document, 'mouseup', onEndCallback);\n }\n }\n\n this.userChangeStart.emit(this.getChangeContext());\n\n if (\n CompatibilityHelper.isTouchEvent(event) &&\n !ValueHelper.isNullOrUndefined((event as TouchEvent).changedTouches)\n ) {\n // Store the touch identifier\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.touchId = (event as TouchEvent).changedTouches[0].identifier;\n }\n }\n\n // Click events, either with mouse or touch gesture are weird. Sometimes they result in full\n // start, move, end sequence, and sometimes, they don't - they only invoke mousedown\n // As a workaround, we simulate the first move event and the end event if it's necessary\n if (simulateImmediateMove) {\n this.onMove(event, true);\n }\n\n if (simulateImmediateEnd) {\n this.onEnd(event);\n }\n }\n\n // onMove event handler\n private onMove(event: MouseEvent | TouchEvent, fromTick?: boolean): void {\n let touchForThisSlider: Touch;\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches: TouchList = (event as TouchEvent).changedTouches;\n for (let i: number = 0; i < changedTouches.length; i++) {\n if (changedTouches[i].identifier === this.touchId) {\n touchForThisSlider = changedTouches[i];\n break;\n }\n }\n\n if (ValueHelper.isNullOrUndefined(touchForThisSlider!)) {\n return;\n }\n }\n\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n\n this.moving = true;\n\n const newPos: number = !ValueHelper.isNullOrUndefined(touchForThisSlider!)\n ? this.getEventPosition(event, touchForThisSlider!.identifier)\n : this.getEventPosition(event);\n let newValue: number;\n const ceilValue: number = this.viewOptions.rightToLeft ? this.viewOptions.floor! : this.viewOptions.ceil!;\n const floorValue: number = this.viewOptions.rightToLeft ? this.viewOptions.ceil! : this.viewOptions.floor!;\n\n if (newPos <= 0) {\n newValue = floorValue;\n } else if (newPos >= this.maxHandlePosition) {\n newValue = ceilValue;\n } else {\n newValue = this.positionToValue(newPos);\n if (fromTick && !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) {\n newValue = this.roundStep(newValue, this.viewOptions.tickStep);\n } else {\n newValue = this.roundStep(newValue);\n }\n }\n this.positionTrackingHandle(newValue);\n }\n\n private onEnd(event: MouseEvent | TouchEvent): void {\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches: TouchList = (event as TouchEvent).changedTouches;\n if (changedTouches[0].identifier !== this.touchId) {\n return;\n }\n }\n\n this.moving = false;\n if (this.viewOptions.animate) {\n this.sliderElementAnimateClass = true;\n }\n\n this.touchId = undefined;\n\n if (!this.viewOptions.keyboardSupport) {\n this.minHandleElement!.active = false;\n this.maxHandleElement!.active = false;\n this.currentTrackingPointer = undefined;\n }\n this.dragging.active = false;\n\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n\n this.userChangeEnd.emit(this.getChangeContext());\n }\n\n private onPointerFocus(pointerType: PointerType): void {\n const pointerElement: SliderHandleDirective = this.getPointerElement(pointerType)!;\n pointerElement.on('blur', (): void => this.onPointerBlur(pointerElement));\n pointerElement.on('keydown', (event: KeyboardEvent): void => this.onKeyboardEvent(event));\n pointerElement.on('keyup', (): void => this.onKeyUp());\n pointerElement.active = true;\n\n this.currentTrackingPointer = pointerType;\n this.currentFocusPointer = pointerType;\n this.firstKeyDown = true;\n }\n\n private onKeyUp(): void {\n this.firstKeyDown = true;\n this.userChangeEnd.emit(this.getChangeContext());\n }\n\n private onPointerBlur(pointer: SliderHandleDirective): void {\n pointer.off('blur');\n pointer.off('keydown');\n pointer.off('keyup');\n pointer.active = false;\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.currentTrackingPointer = undefined;\n this.currentFocusPointer = undefined;\n }\n }\n\n private getKeyActions(currentValue: number): { [key: string]: number } {\n const valueRange: number = this.viewOptions.ceil! - this.viewOptions.floor!;\n\n let increaseStep: number = currentValue + this.viewOptions.step!;\n let decreaseStep: number = currentValue - this.viewOptions.step!;\n let increasePage: number = currentValue + valueRange / 10;\n let decreasePage: number = currentValue - valueRange / 10;\n\n if (this.viewOptions.reversedControls) {\n increaseStep = currentValue - this.viewOptions.step!;\n decreaseStep = currentValue + this.viewOptions.step!;\n increasePage = currentValue - valueRange / 10;\n decreasePage = currentValue + valueRange / 10;\n }\n\n // Left to right default actions\n const actions: { [key: string]: number } = {\n UP: increaseStep,\n DOWN: decreaseStep,\n LEFT: decreaseStep,\n RIGHT: increaseStep,\n PAGEUP: increasePage,\n PAGEDOWN: decreasePage,\n HOME: this.viewOptions.reversedControls ? this.viewOptions.ceil! : this.viewOptions.floor!,\n END: this.viewOptions.reversedControls ? this.viewOptions.floor! : this.viewOptions.ceil!\n };\n // right to left means swapping right and left arrows\n if (this.viewOptions.rightToLeft) {\n actions['LEFT'] = increaseStep;\n actions['RIGHT'] = decreaseStep;\n // right to left and vertical means we also swap up and down\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n actions['UP'] = decreaseStep;\n actions['DOWN'] = increaseStep;\n }\n }\n return actions;\n }\n\n private onKeyboardEvent(event: KeyboardEvent): void {\n const currentValue = this.getCurrentTrackingValue()!;\n const keyCode = !ValueHelper.isNullOrUndefined(event.keyCode) ? event.keyCode : event.which;\n const keys: { [keyCode: number]: string } = {\n 38: 'UP',\n 40: 'DOWN',\n 37: 'LEFT',\n 39: 'RIGHT',\n 33: 'PAGEUP',\n 34: 'PAGEDOWN',\n 36: 'HOME',\n 35: 'END'\n };\n const actions: { [key: string]: number } = this.getKeyActions(currentValue);\n const key: string = keys[keyCode];\n const action: number = actions[key];\n\n if (ValueHelper.isNullOrUndefined(action) || ValueHelper.isNullOrUndefined(this.currentTrackingPointer)) {\n return;\n }\n event.preventDefault();\n\n if (this.firstKeyDown) {\n this.firstKeyDown = false;\n this.userChangeStart.emit(this.getChangeContext());\n }\n\n const actionValue: number = MathHelper.clampToRange(action, this.viewOptions.floor!, this.viewOptions.ceil!);\n const newValue: number = this.roundStep(actionValue);\n if (!this.viewOptions.draggableRangeOnly) {\n this.positionTrackingHandle(newValue);\n } else {\n const difference = this.viewHighValue! - this.viewLowValue!;\n let newMinValue: number;\n let newMaxValue: number;\n\n if (this.currentTrackingPointer === PointerType.Min) {\n newMinValue = newValue;\n newMaxValue = newValue + difference;\n if (newMaxValue > this.viewOptions.ceil!) {\n newMaxValue = this.viewOptions.ceil!;\n newMinValue = newMaxValue - difference;\n }\n } else if (this.currentTrackingPointer === PointerType.Max) {\n newMaxValue = newValue;\n newMinValue = newValue - difference;\n if (newMinValue < this.viewOptions.floor!) {\n newMinValue = this.viewOptions.floor!;\n newMaxValue = newMinValue + difference;\n }\n }\n this.positionTrackingBar(newMinValue!, newMaxValue!);\n }\n }\n\n // onDragStart event handler, handles dragging of the middle bar\n private onDragStart(\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType\n ): void {\n const position: number = this.getEventPosition(event);\n\n this.dragging = new Dragging();\n this.dragging.active = true;\n this.dragging.value = this.positionToValue(position);\n this.dragging.difference = this.viewHighValue! - this.viewLowValue!;\n this.dragging.lowLimit = this.viewOptions.rightToLeft\n ? this.minHandleElement!.position - position\n : position - this.minHandleElement!.position;\n this.dragging.highLimit = this.viewOptions.rightToLeft\n ? position - this.maxHandleElement!.position\n : this.maxHandleElement!.position - position;\n\n this.onStart(event, bindMove, bindEnd, pointerType);\n }\n\n /** Get min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n private getMinValue(newPos: number, outOfBounds: boolean, isAbove: boolean): number {\n const isRTL = this.viewOptions.rightToLeft!;\n let value: number;\n\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL ? this.viewOptions.floor! : this.viewOptions.ceil! - this.dragging.difference;\n } else {\n value = isRTL ? this.viewOptions.ceil! - this.dragging.difference : this.viewOptions.floor!;\n }\n } else {\n value = isRTL\n ? this.positionToValue(newPos + this.dragging.lowLimit)\n : this.positionToValue(newPos - this.dragging.lowLimit);\n }\n return this.roundStep(value);\n }\n\n /** Get max value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n private getMaxValue(newPos: number, outOfBounds: boolean, isAbove: boolean): number {\n const isRTL = this.viewOptions.rightToLeft!;\n let value: number;\n\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL ? this.viewOptions.floor! + this.dragging.difference : this.viewOptions.ceil!;\n } else {\n value = isRTL ? this.viewOptions.ceil! : this.viewOptions.floor! + this.dragging.difference;\n }\n } else {\n if (isRTL) {\n value = this.positionToValue(newPos + this.dragging.lowLimit) + this.dragging.difference;\n } else {\n value = this.positionToValue(newPos - this.dragging.lowLimit) + this.dragging.difference;\n }\n }\n\n return this.roundStep(value);\n }\n\n private onDragMove(event?: MouseEvent | TouchEvent): void {\n const newPos: number = this.getEventPosition(event!);\n\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n\n this.moving = true;\n\n let ceilLimit: number,\n floorLimit: number,\n floorHandleElement: SliderHandleDirective,\n ceilHandleElement: SliderHandleDirective;\n if (this.viewOptions.rightToLeft) {\n ceilLimit = this.dragging.lowLimit;\n floorLimit = this.dragging.highLimit;\n floorHandleElement = this.maxHandleElement!;\n ceilHandleElement = this.minHandleElement!;\n } else {\n ceilLimit = this.dragging.highLimit;\n floorLimit = this.dragging.lowLimit;\n floorHandleElement = this.minHandleElement!;\n ceilHandleElement = this.maxHandleElement!;\n }\n\n const isUnderFloorLimit: boolean = newPos <= floorLimit;\n const isOverCeilLimit: boolean = newPos >= this.maxHandlePosition - ceilLimit;\n\n let newMinValue: number;\n let newMaxValue: number;\n if (isUnderFloorLimit) {\n if (floorHandleElement.position === 0) {\n return;\n }\n newMinValue = this.getMinValue(newPos, true, false);\n newMaxValue = this.getMaxValue(newPos, true, false);\n } else if (isOverCeilLimit) {\n if (ceilHandleElement.position === this.maxHandlePosition) {\n return;\n }\n newMaxValue = this.getMaxValue(newPos, true, true);\n newMinValue = this.getMinValue(newPos, true, true);\n } else {\n newMinValue = this.getMinValue(newPos, false, false);\n newMaxValue = this.getMaxValue(newPos, false, false);\n }\n\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n\n // Set the new value and position for the entire bar\n private positionTrackingBar(newMinValue: number, newMaxValue: number): void {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newMinValue < this.viewOptions.minLimit!) {\n newMinValue = this.viewOptions.minLimit!;\n newMaxValue = MathHelper.roundToPrecisionLimit(\n newMinValue + this.dragging.difference,\n this.viewOptions.precisionLimit!\n );\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newMaxValue > this.viewOptions.maxLimit!) {\n newMaxValue = this.viewOptions.maxLimit!;\n newMinValue = MathHelper.roundToPrecisionLimit(\n newMaxValue - this.dragging.difference,\n this.viewOptions.precisionLimit!\n );\n }\n\n this.viewLowValue = newMinValue;\n this.viewHighValue = newMaxValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(newMinValue));\n this.updateHandles(PointerType.Max, this.valueToPosition(newMaxValue));\n }\n\n // Set the new value and position to the current tracking handle\n private positionTrackingHandle(newValue: number): void {\n newValue = this.applyMinMaxLimit(newValue);\n if (this.range) {\n if (this.viewOptions.pushRange) {\n newValue = this.applyPushRange(newValue);\n } else {\n if (this.viewOptions.noSwitching) {\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue!) {\n newValue = this.applyMinMaxRange(this.viewHighValue!);\n } else if (this.currentTrackingPointer === PointerType.Max && newValue < this.viewLowValue!) {\n newValue = this.applyMinMaxRange(this.viewLowValue!);\n }\n }\n newValue = this.applyMinMaxRange(newValue);\n /* This is to check if we need to switch the min and max handles */\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue!) {\n this.viewLowValue = this.viewHighValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.maxHandleElement!.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Max;\n this.minHandleElement!.active = false;\n this.maxHandleElement!.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.maxHandleElement!.focus();\n }\n } else if (this.currentTrackingPointer === PointerType.Max && newValue < this.viewLowValue!) {\n this.viewHighValue = this.viewLowValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.minHandleElement!.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Min;\n this.maxHandleElement!.active = false;\n this.minHandleElement!.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement!.focus();\n }\n }\n }\n }\n\n if (this.getCurrentTrackingValue() !== newValue) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewLowValue = newValue;\n this.applyViewChange();\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewHighValue = newValue;\n this.applyViewChange();\n }\n this.updateHandles(this.currentTrackingPointer!, this.valueToPosition(newValue));\n this.updateAriaAttributes();\n }\n }\n\n private applyMinMaxLimit(newValue: number): number {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newValue < this.viewOptions.minLimit!) {\n return this.viewOptions.minLimit!;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newValue > this.viewOptions.maxLimit!) {\n return this.viewOptions.maxLimit!;\n }\n return newValue;\n }\n\n private applyMinMaxRange(newValue: number): number {\n const oppositeValue = this.currentTrackingPointer === PointerType.Min ? this.viewHighValue : this.viewLowValue;\n const difference: number = Math.abs(newValue - oppositeValue!);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange)) {\n if (difference < this.viewOptions.minRange!) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(\n this.viewHighValue! - this.viewOptions.minRange!,\n this.viewOptions.precisionLimit!\n );\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(\n this.viewLowValue! + this.viewOptions.minRange!,\n this.viewOptions.precisionLimit!\n );\n }\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxRange)) {\n if (difference > this.viewOptions.maxRange!) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(\n this.viewHighValue! - this.viewOptions.maxRange!,\n this.viewOptions.precisionLimit!\n );\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(\n this.viewLowValue! + this.viewOptions.maxRange!,\n this.viewOptions.precisionLimit!\n );\n }\n }\n }\n return newValue;\n }\n\n private applyPushRange(newValue: number): number {\n const difference: number =\n this.currentTrackingPointer === PointerType.Min ? this.viewHighValue! - newValue : newValue - this.viewLowValue!;\n const minRange = !ValueHelper.isNullOrUndefined(this.viewOptions.minRange)\n ? this.viewOptions.minRange!\n : this.viewOptions.step!;\n const maxRange = this.viewOptions.maxRange!;\n // if smaller than minRange\n if (difference < minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(\n Math.min(newValue + minRange, this.viewOptions.ceil!),\n this.viewOptions.precisionLimit!\n );\n newValue = MathHelper.roundToPrecisionLimit(this.viewHighValue - minRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(\n Math.max(newValue - minRange, this.viewOptions.floor!),\n this.viewOptions.precisionLimit!\n );\n newValue = MathHelper.roundToPrecisionLimit(this.viewLowValue + minRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n } else if (!ValueHelper.isNullOrUndefined(maxRange) && difference > maxRange) {\n // if greater than maxRange\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(newValue + maxRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(newValue - maxRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n return newValue;\n }\n\n private getChangeContext(): ChangeContext {\n const changeContext: ChangeContext = new ChangeContext();\n changeContext.pointerType = this.currentTrackingPointer;\n changeContext.value = +this.value!;\n if (this.range) {\n changeContext.highValue = +this.highValue!;\n }\n return changeContext;\n }\n}\n","<!-- // 0 Left selection bar outside two handles -->\n<span\n ngxSliderElement\n #leftOuterSelectionBar\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-left-out-selection\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 1 Right selection bar outside two handles -->\n<span\n ngxSliderElement\n #rightOuterSelectionBar\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-right-out-selection\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 2 The whole slider bar -->\n<span\n ngxSliderElement\n #fullBar\n [class.ngx-slider-transparent]=\"fullBarTransparentClass\"\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-full-bar\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 3 Selection bar between two handles -->\n<span\n ngxSliderElement\n #selectionBar\n [class.ngx-slider-draggable]=\"selectionBarDraggableClass\"\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-selection-bar\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar ngx-slider-selection\" [ngStyle]=\"barStyle\"></span>\n</span>\n<!-- // 4 Low slider handle -->\n<span\n ngxSliderHandle\n #minHandle\n class=\"ngx-slider-span ngx-slider-pointer ngx-slider-pointer-min\"\n [ngStyle]=\"minPointerStyle\"\n></span>\n<!-- // 5 High slider handle -->\n<span\n ngxSliderHandle\n #maxHandle\n [style.display]=\"range ? 'inherit' : 'none'\"\n class=\"ngx-slider-span ngx-slider-pointer ngx-slider-pointer-max\"\n [ngStyle]=\"maxPointerStyle\"\n></span>\n<!-- // 6 Floor label -->\n<span ngxSliderLabel #floorLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-limit ngx-slider-floor\"></span>\n<!-- // 7 Ceiling label -->\n<span ngxSliderLabel #ceilLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-limit ngx-slider-ceil\"></span>\n<!-- // 8 Label above the low slider handle -->\n<span ngxSliderLabel #minHandleLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-model-value\"></span>\n<!-- // 9 Label above the high slider handle -->\n<span ngxSliderLabel #maxHandleLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-model-high\"></span>\n<!-- // 10 Combined range label when the slider handles are close ex. 15 - 17 -->\n<span ngxSliderLabel #combinedLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-combined\"></span>\n<!-- // 11 The ticks -->\n<span\n ngxSliderElement\n #ticksElement\n [hidden]=\"!showTicks\"\n [class.ngx-slider-ticks-values-under]=\"ticksUnderValuesClass\"\n class=\"ngx-slider-ticks\"\n>\n @for (t of ticks; track t) {\n <span class=\"ngx-slider-tick\" [ngClass]=\"{ 'ngx-slider-selected': t.selected }\" [ngStyle]=\"t.style\">\n <ngx-slider-tooltip-wrapper\n [template]=\"tooltipTemplate\"\n [tooltip]=\"t.tooltip\"\n [placement]=\"t.tooltipPlacement\"\n ></ngx-slider-tooltip-wrapper>\n @if (t.value !== null) {\n <ngx-slider-tooltip-wrapper\n class=\"ngx-slider-span ngx-slider-tick-value\"\n [template]=\"tooltipTemplate\"\n [tooltip]=\"t.valueTooltip\"\n [placement]=\"t.valueTooltipPlacement\"\n [content]=\"t.value\"\n ></ngx-slider-tooltip-wrapper>\n }\n @if (t.legend !== null) {\n <span class=\"ngx-slider-span ngx-slider-tick-legend\" [innerHTML]=\"t.legend\"></span>\n }\n </span>\n }\n</span>\n","import { NgModule } from '@angular/core';\nimport { DfSliderDirectionDirective } from './direction/sliderdirection.directive';\nimport { SliderComponent } from './lib/slider.component';\nimport { SliderElementDirective } from './lib/slider-element.directive';\nimport { SliderHandleDirective } from './lib/slider-handle.directive';\nimport { SliderLabelDirective } from './lib/slider-label.directive';\nimport { TooltipWrapperComponent } from './lib/tooltip-wrapper.component';\n\n/**\n * @deprecated DfSliderModule is deprecated.\n * Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@NgModule({\n imports: [\n SliderComponent,\n SliderElementDirective,\n SliderHandleDirective,\n SliderLabelDirective,\n TooltipWrapperComponent,\n DfSliderDirectionDirective\n ],\n exports: [DfSliderDirectionDirective, SliderComponent]\n})\nexport class DfSliderModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * A configuration service for the [DfSideNavService](#/components/sidenav/api#DfSideNavComponent) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for your sidenav used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class DfSideNavConfig {\n isMinmized = false;\n isCollapsed = false;\n isPresent = false;\n isInMenuOverlay = true;\n isAppOverlay = false;\n isAppOverlayMode = true;\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { DfSideNavConfig } from './sidenav-config';\n\nexport interface DfSideNavItem {\n value: string;\n title?: string;\n icon?: string | TemplateRef<any>;\n isExternal?: boolean;\n isActive?: boolean;\n isCollapsed?: boolean;\n breakpoints?: string[];\n subMenus?: DfSideNavItem[];\n type?: DfNavItemType;\n}\n\nexport enum DfNavItemType {\n subMenus,\n actionButton,\n routerLink,\n link,\n externalLink,\n separator,\n template,\n title\n}\n\n/**\n * A service for managing the sidenav panel.\n * This service is included at root level\n *\n * Creating a sidenav is straightforward: use [DfSideNavComponent](#/components/sidenav/api#DfSideNavComponent) component\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfSideNavService implements OnDestroy {\n public type = DfNavItemType;\n private readonly _sideNavItems$;\n private readonly _isMinmized$;\n private readonly _isCollapsed$;\n private readonly _isPresent$;\n private readonly _activeItem$;\n private readonly _isInMenuOverlay$;\n private readonly _isAppOverlay$;\n private _isAppOverlayMode;\n private _items: DfSideNavItem[] = [];\n private readonly subscription: Subscription = new Subscription();\n\n constructor(private readonly config: DfSideNavConfig) {\n this._sideNavItems$ = new BehaviorSubject<DfSideNavItem[]>([]);\n this._isMinmized$ = new BehaviorSubject<boolean>(config.isMinmized);\n this._isCollapsed$ = new BehaviorSubject<boolean>(config.isCollapsed);\n this._isPresent$ = new BehaviorSubject<boolean>(config.isPresent);\n this._isInMenuOverlay$ = new BehaviorSubject<boolean>(config.isInMenuOverlay);\n this._isAppOverlay$ = new BehaviorSubject<boolean>(config.isAppOverlay);\n this._activeItem$ = new BehaviorSubject<DfSideNavItem | null>(null);\n this._isAppOverlayMode = config.isAppOverlayMode;\n this.subscription.add(\n this._isCollapsed$.subscribe(() => {\n this.updateOverLay();\n })\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * Use this to init the list of Elements from your sidenav\n *\n *\n * Second option withRouter is to be set to false if you are not passing link string for the angular Router\n * Here we are not deep copying the array --> the function will change it\n */\n initItems(items: DfSideNavItem[], withRouter = true) {\n this._items = items;\n this.addNavItemType(withRouter);\n this.setActiveItem(this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to inactivate the list of Elements from your sidenav\n * isActive properties of all items will be set to false recursively\n *\n */\n inactiveItems(list: DfSideNavItem[]) {\n list.forEach((item) => {\n item.isActive = false;\n if (item.subMenus) {\n this.inactiveItems(item.subMenus);\n }\n });\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to active the item pass as input\n * This function inactivate all the other items of the service\n * It will then dispatch the list of items of the sideNav to activeItem$\n *\n */\n activeItem(item: DfSideNavItem) {\n this.inactiveItems(this._items);\n item.isActive = true;\n this._activeItem$.next(item);\n this.dispatchSideNavItems();\n }\n\n /**\n * Getter to know when to put/remove the overlay.\n * `True` in case of overlay needed\n *\n */\n get isAppOverlay$(): Observable<boolean> {\n return this._isAppOverlay$.asObservable();\n }\n\n /**\n * Getter to know if the sidenav is in an overlay panel or not\n * `True` in case of overlay panel\n *\n */\n get isInMenuOverlay$(): Observable<boolean> {\n return this._isInMenuOverlay$.asObservable();\n }\n\n /**\n * Getter to know the current activeItem a user clicked on\n *\n */\n get activeItem$(): Observable<DfSideNavItem | null> {\n return this._activeItem$.asObservable();\n }\n\n /**\n * Getter to know if the sideNav is present in the page\n * SideNav may be collapsed here or not\n *\n */\n get isPresent$(): Observable<boolean> {\n return this._isPresent$.asObservable();\n }\n\n /**\n * Future Options\n */\n get isMinimized$(): Observable<boolean> {\n return this._isMinmized$.asObservable();\n }\n\n /**\n * Getter to know if the SideNav is collapsed or not\n * If `true` the SideNav is collapsed\n *\n */\n get isCollapsed$(): Observable<boolean> {\n return this._isCollapsed$.asObservable();\n }\n\n /**\n * Getter of the SideNav Items after they have beens changed\n *\n */\n get sideNavItems$(): Observable<DfSideNavItem[]> {\n return this._sideNavItems$.asObservable();\n }\n\n /**\n * Getter to know the mode Apply for the SideNav\n * If `true` the SideNav can be in overlay (but not necessary is).\n *\n */\n get isAppOverlayMode() {\n return this._isAppOverlayMode;\n }\n\n // initItems must be used to push new items to the service\n get items(): DfSideNavItem[] {\n return this._items;\n }\n\n /**\n * Use this to toggle a SideNav Item (either from expand to collapse or the other way around).\n * isCollapsed attribute of the input item is changed.\n * All items are push again to the stream of items.\n * This is used internally by the SideNav in case of click and Enter on an Item with subMenus\n */\n toggle(itemInput: DfSideNavItem) {\n itemInput.isCollapsed = !itemInput.isCollapsed;\n this.dispatchSideNavItems();\n }\n\n /**\n *\n * @param itemInput\n */\n collapseItem(itemInput: DfSideNavItem) {\n this.collapse(itemInput, this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to collapseAll items\n */\n collapseAllItems() {\n this.collapseAll(this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to set/unset the SideNav in an Overlay Menu\n * If input is `True` then the SideNav will be in an Overlay Menu\n * (when not collapsed)\n *\n */\n setInMenuSideNav(on: boolean) {\n this._isInMenuOverlay$.next(on);\n }\n\n /**\n * Use this to collapse the SideNav\n *\n */\n hideSideNav() {\n this._isCollapsed$.next(true);\n }\n\n /**\n * Use this to make the SideNav visible (uncollapse)\n *\n */\n showSideNav() {\n this._isCollapsed$.next(false);\n }\n\n /**\n * Use this to toggle the SideNav status collapse/visible\n *\n */\n toggleSideNav() {\n this._isCollapsed$.next(!this._isCollapsed$.value);\n }\n\n // internal usage from the SideNav. Call when component is destroy\n removeSideBar() {\n this._isCollapsed$.next(this.config.isCollapsed);\n this._isPresent$.next(false);\n }\n\n /**\n * Use this to set the App Overlay Mode\n * Input `True` if you want to set the AppOverlay\n * An event is send to isAppOverlay$ depending on your status\n * if Input = `True` and isCollapsed = `False` then isAppOverlay$\n * will be `True`\n *\n */\n setAppOverlayMode(on: boolean) {\n this._isAppOverlayMode = on;\n this.updateOverLay();\n }\n\n // Internal usage to the sidenav component\n // Do not use\n setSideNav() {\n this._isPresent$.next(true);\n }\n\n /**\n *\n * @param itemInput\n * @param itemsList\n */\n private collapse(itemInput: DfSideNavItem, itemsList: DfSideNavItem[]): boolean {\n for (const item of itemsList) {\n if (item === itemInput && item.subMenus) {\n item.isCollapsed = true;\n return true; // propagate the collapse up\n } else if (item === itemInput) {\n return true;\n } else if (item.subMenus) {\n const needcol = this.collapse(itemInput, item.subMenus);\n if (needcol) {\n item.isCollapsed = true; // collapse it\n return true; // propagate the collapse up\n }\n }\n }\n return false;\n }\n\n /**\n *\n * @param itemsList\n */\n private collapseAll(itemsList: DfSideNavItem[]) {\n itemsList.forEach((item) => {\n if (item.subMenus) {\n item.isCollapsed = true;\n this.collapseAll(item.subMenus);\n }\n });\n }\n\n // Only one item at the time must be active\n // Active flag in item is only valid for action button and link\n // Router link does not use this active flag to work\n // It is up to you to inactivateItems when needed when you mix actionButton and router link\n // To avoid more than one active state visible\n private setActiveItem(items: DfSideNavItem[], foundAnActive = false): boolean {\n let foundActive = foundAnActive;\n items.forEach((item) => {\n if (item.isActive && foundAnActive) {\n throw Error('DfSideNavService must be init with only one isActive item');\n } else if (item.isActive) {\n this._activeItem$.next(item);\n foundActive = true;\n }\n if (item.subMenus) {\n foundActive = this.setActiveItem(item.subMenus, foundActive);\n }\n });\n return foundActive;\n }\n\n private addNavItemType(withRouter: boolean, items: DfSideNavItem[] = this._items) {\n items.forEach((item) => {\n if (!item.type) {\n if (item.subMenus) {\n item.type = DfNavItemType.subMenus;\n } else if (item.isExternal) {\n item.type = DfNavItemType.externalLink;\n } else if (withRouter) {\n item.type = DfNavItemType.routerLink;\n } else {\n item.type = DfNavItemType.actionButton;\n }\n }\n if (item.subMenus) {\n this.addNavItemType(withRouter, item.subMenus);\n }\n });\n }\n\n private dispatchSideNavItems() {\n this._sideNavItems$.next(this._items);\n }\n\n private updateOverLay() {\n this._isAppOverlay$.next(this.isAppOverlayMode && this._isCollapsed$.value === false);\n }\n}\n","export const environment = {\n animation: true,\n transitionTimerDelayMs: 5\n};\n","import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone Angular Zone element\n */\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: any) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe(onNext, onError, onComplete);\n });\n };\n}\n\nexport function getTransitionDurationMs(element: HTMLElement) {\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nexport function reflow(element: HTMLElement) {\n return (element || document.body).getBoundingClientRect();\n}\n","import { NgZone } from '@angular/core';\nimport { environment } from '../../../environment';\nimport { EMPTY, fromEvent, Observable, of, race, Subject, timer } from 'rxjs';\nimport { endWith, filter, takeUntil } from 'rxjs/operators';\nimport { getTransitionDurationMs, runInZone } from './util';\n\nexport type NgbTransitionStartFn<T = any> = (\n element: HTMLElement,\n animation: boolean,\n context: T\n) => NgbTransitionEndFn | void;\nexport type NgbTransitionEndFn = () => void;\n\nexport interface NgbTransitionOptions<T> {\n animation: boolean;\n runningTransition: 'continue' | 'stop';\n context?: T;\n}\n\nexport interface NgbTransitionCtx<T> {\n transition$: Subject<any>;\n complete: () => void;\n context: T;\n}\n\nconst noopFn: NgbTransitionEndFn = () => {};\n\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map<HTMLElement, NgbTransitionCtx<any>>();\n\nexport const ngbRunTransition = <T>(\n zone: NgZone,\n element: HTMLElement,\n startFn: NgbTransitionStartFn<T>,\n options: NgbTransitionOptions<T>\n): Observable<undefined> => {\n // Getting initial context from options\n let context = options.context || ({} as T);\n\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n\n // Starting a new transition\n const transition$ = new Subject<any>();\n const finishTransition$ = new Subject<any>();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next({});\n finishTransition$.complete();\n },\n context\n });\n\n const transitionDurationMs = getTransitionDurationMs(element);\n\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(\n takeUntil(stop$),\n filter(({ target }) => target === element)\n );\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n\n race(timer$, transitionEnd$, finishTransition$)\n .pipe(takeUntil(stop$))\n .subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next({});\n transition$.complete();\n });\n });\n });\n\n return transition$.asObservable();\n};\n\nexport const ngbCompleteTransition = (element: HTMLElement) => {\n runningTransitions.get(element)?.complete();\n};\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '@ng-bootstrap/ng-bootstrap';\n\n/**\n * A configuration service for the [DfSideNavCollapseDirective](#/components/sidenav/api#DfSideNavCollapseDirective) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for the sideNav used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class DfSideNavCollapseConfig {\n private _animation?: boolean;\n\n constructor(private readonly _ngbConfig: NgbConfig) {}\n\n get animation(): boolean {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation: boolean) {\n this._animation = animation;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DfSideNavCollapseConfig } from './dfSideNavCollapseConfig';\n\n/**\n * A service for managing the sidenav panel animation.\n * This service is included at root level\n *\n * Creating a sidenav is straightforward: use [DfSideNavComponent](#/components/sidenav/api#DfSideNavComponent) component\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfSideNavCollapseService {\n private readonly _sideNavAnimation$;\n\n constructor(private readonly _config: DfSideNavCollapseConfig) {\n this._sideNavAnimation$ = new BehaviorSubject<boolean>(_config.animation);\n }\n\n get sideNavAnimation$(): Observable<boolean> {\n return this._sideNavAnimation$.asObservable();\n }\n\n /**\n * Use this to activate or desactivate the animation for the sideNav\n * If input is `True` it will activate the animation.\n * Default value for animation is set in by DfSideNavCollapseConfig\n *\n */\n setAnimation(on: boolean) {\n this._sideNavAnimation$.next(on);\n }\n}\n","import { NgbTransitionStartFn } from '../animation/ngbTransition';\nimport { reflow } from '../animation/util';\n\nexport interface DfSideNavCollapseCtx {\n direction: 'show' | 'hide';\n maxWidth?: string;\n minimized?: boolean;\n}\n\nfunction measureCollapsingElementWidthPx(element: HTMLElement): string {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n\n const { classList } = element;\n const hasShownClass = classList.contains('df-show');\n if (!hasShownClass) {\n classList.add('df-show');\n }\n\n element.style.width = '';\n const width = `${element.getBoundingClientRect().width}px`;\n\n if (!hasShownClass) {\n classList.remove('df-show');\n }\n\n return width;\n}\n\nexport const DfCollapsingTransition: NgbTransitionStartFn<DfSideNavCollapseCtx> = (\n element: HTMLElement,\n animation: boolean,\n context: DfSideNavCollapseCtx\n) => {\n const { direction, minimized } = context;\n let { maxWidth } = context;\n const { classList } = element;\n const dfcollapsingClass = 'df-collapsing';\n const dfminimizingClass = 'df-minimizing';\n\n function setInitialClasses() {\n if (minimized) {\n classList.add('df-minimized');\n } else {\n classList.add('df-collapse');\n }\n if (direction === 'show') {\n classList.add('df-show');\n } else {\n classList.remove('df-show');\n }\n }\n\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return () => {};\n }\n\n // No maxWidth -> running the transition for the first time\n if (!maxWidth) {\n maxWidth = measureCollapsingElementWidthPx(element);\n context.maxWidth = maxWidth;\n\n // Fix the width before starting the animation\n element.style.width = direction !== 'show' ? maxWidth : minimized ? '50px' : '0px';\n\n classList.remove('df-collapse');\n classList.remove('df-minimized'); // add\n classList.remove(dfcollapsingClass);\n classList.remove(dfminimizingClass);\n classList.remove('df-show');\n\n reflow(element);\n\n // Start the animation\n if (minimized) {\n classList.add(dfminimizingClass);\n } else {\n classList.add(dfcollapsingClass);\n }\n }\n\n // Start or revert the animation\n element.style.width = direction === 'show' ? maxWidth : minimized ? '50px' : '0px';\n\n return () => {\n setInitialClasses();\n classList.remove(dfcollapsingClass);\n classList.remove(dfminimizingClass);\n element.style.width = '';\n };\n};\n","import {\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n NgZone,\n OnInit,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { ngbRunTransition } from '../animation/ngbTransition';\nimport { Observable } from 'rxjs';\nimport { DfSideNavCollapseService } from './dfSideNavCollapse.service';\nimport { DfCollapsingTransition } from './dfSideNavAnimation';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * A directive to provide a simple way of hiding and showing the sideNav on the page.\n */\n@Directive({ selector: '[dfSideNavCollapse]', exportAs: 'dfSideNavCollapse' })\nexport class DfSideNavCollapseDirective implements OnInit {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n readonly dfSideNavCollapse = input.required<boolean>();\n private readonly collapsed = signal(false);\n readonly minimized = input(false);\n\n readonly dfSideNavCollapseChange = output<boolean>();\n\n /**\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\n *\n * @since 9.1.0\n */\n readonly shown = output<void>();\n\n /**\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\n *\n * @since 9.1.0\n */\n readonly hidden = output<void>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly sideNavCollapseService = inject(DfSideNavCollapseService);\n private readonly zone = inject(NgZone);\n private readonly injector = inject(Injector);\n\n private animation = false;\n\n constructor() {\n effect(() => {\n this.collapsed.set(this.dfSideNavCollapse());\n });\n this.sideNavCollapseService.sideNavAnimation$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.animation = value;\n });\n }\n\n ngOnInit() {\n let firstRun = true;\n effect(\n () => {\n const collapsed = this.collapsed();\n // we only track the collapsed signal\n untracked(() => {\n // first time the effect is run, we run the transition without triggering event emitters\n if (firstRun) {\n this.runTransition(collapsed, this.animation, this.minimized());\n } else {\n this.runTransitionWithEvents(collapsed, this.animation, this.minimized());\n }\n firstRun = false;\n });\n },\n { injector: this.injector }\n );\n }\n\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 9.1.0\n */\n toggle(open: boolean = this.collapsed()) {\n this.collapsed.set(!open);\n }\n\n private runTransition(collapsed: boolean, animation: boolean, minimizedInput: boolean): Observable<any> {\n return ngbRunTransition(this.zone, this.elementRef.nativeElement, DfCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: collapsed ? 'hide' : 'show', minimized: minimizedInput }\n });\n }\n\n private runTransitionWithEvents(collapsed: boolean, animation: boolean, minimized: boolean) {\n this.runTransition(collapsed, animation, minimized).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n } else {\n this.shown.emit();\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfSideNavCollapseDirective } from './dfSideNavCollapse';\n\nexport { DfSideNavCollapseDirective } from './dfSideNavCollapse';\nexport { DfSideNavCollapseConfig } from './dfSideNavCollapseConfig';\n\n@NgModule({\n imports: [DfSideNavCollapseDirective],\n exports: [DfSideNavCollapseDirective]\n})\nexport class DfSideNavCollapseModule {}\n","import { AfterViewChecked, Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[dfManageSideNav]'\n})\nexport class DfManageSideNavDirective implements AfterViewChecked {\n constructor(\n private readonly element: ElementRef,\n private readonly renderer: Renderer2\n ) {}\n\n ngAfterViewChecked() {\n if (this.element.nativeElement.querySelector('.active')) {\n this.renderer.addClass(this.element.nativeElement, 'df-sidenav-list-withactivated');\n } else {\n this.renderer.removeClass(this.element.nativeElement, 'df-sidenav-list-withactivated');\n }\n }\n}\n","/**\n * @param element the HTML element\n * @returns whether the element is overflowing\n */\nexport function hasOverflow(element: HTMLElement): boolean {\n return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;\n}\n","import { Directive, DoCheck, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\nimport { hasOverflow } from './html-element-helper';\n\n/**\n * DfTitleTruncate directive\n * It adds the title attribute with the element's textContent as value\n * when the element is truncated.\n */\n@Directive({\n exportAs: 'dfTitleTruncate',\n selector: '[dfTitleTruncate]'\n})\nexport class DfTitleTruncateDirective implements OnInit, DoCheck {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');\n }\n\n ngDoCheck() {\n const { nativeElement } = this.elementRef;\n const titleAttributeName = 'title';\n if (hasOverflow(nativeElement)) {\n nativeElement.setAttribute(titleAttributeName, nativeElement.textContent);\n } else if (nativeElement.getAttribute(titleAttributeName)) {\n nativeElement.removeAttribute(titleAttributeName);\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, Input, inject, input } from '@angular/core';\nimport { DfSideNavService } from './sidenav.service';\nimport { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from '@angular/router';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { DfSideNavCollapseModule } from './dfSideNavCollapse.module';\nimport type { DfSideNavItem } from './sidenav.service';\nimport { DfSideNavIconDirective, DfSideNavItemDirective } from './sidenav.component';\nimport { DfManageSideNavDirective } from './manage-sidenav.directive';\nimport { DfTitleTruncateDirective } from '../utils/titleTruncate.directive';\n\nlet uniqueId = 0;\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n *\n * It supports several options as:\n * - Being in an overlay menu or not\n * - Being collapsed or not\n * - Can be used with or without Angular Router\n * - Can be used with media queries to adjust behavior to different breakpoints (see media section)\n */\n@Component({\n selector: 'df-sidenavlist',\n templateUrl: './sidenavlist.component.html',\n imports: [\n NgTemplateOutlet,\n NgbCollapseModule,\n RouterModule,\n DfMediaModule,\n DfSideNavCollapseModule,\n DfManageSideNavDirective,\n DfTitleTruncateDirective\n ]\n})\nexport class DfSideNavListComponent {\n readonly items = input.required<DfSideNavItem[]>();\n readonly tplIcon = input<DfSideNavIconDirective>();\n readonly tplItem = input<DfSideNavItemDirective>();\n readonly currentItem = input<DfSideNavItem>();\n readonly id = input<string>();\n\n readonly controlledUniqueId = this.getControlledUniqueId();\n readonly sideNavService = inject(DfSideNavService);\n\n getControlledUniqueId(): string {\n uniqueId++;\n return `df-sidenav-id-${uniqueId};`;\n }\n}\n","<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem()?.isCollapsed ?? false\" [attr.id]=\"id()\">\n @for (item of items(); track item; let i = $index) {\n <li dfManageSideNav>\n <ng-template #dfSideNavItemContent>\n @let tIcon = tplIcon();\n @if (tIcon && item.icon) {\n <ng-template\n [ngTemplateOutlet]=\"tIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n } @else if (item.icon) {\n <span aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-3\"></span>\n }\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n @switch (item.type) {\n @case (sideNavService.type.subMenus) {\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n @let tIcon = tplIcon();\n @if (tIcon && item.icon) {\n <ng-template\n [ngTemplateOutlet]=\"tIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n } @else if (item.icon) {\n <span aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-3\"></span>\n }\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3 df-sidenav-collapse-icon fa-light\"\n [class.fa-chevron-down]=\"item.isCollapsed\"\n [class.fa-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem()\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.actionButton) {\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.routerLink) {\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.separator) {\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.template) {\n @let tItem = tplItem();\n @if (tItem) {\n <ng-template\n [ngTemplateOutlet]=\"tItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n }\n }\n @case (sideNavService.type.title) {\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n }\n }\n @default {\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n }\n }\n }\n </li>\n }\n</ul>\n","import { Component, Directive, OnDestroy, TemplateRef, inject, contentChild, signal, computed } from '@angular/core';\nimport { DfSideNavService } from './sidenav.service';\nimport { CommonModule } from '@angular/common';\nimport { DfSideNavListComponent } from './sidenavlist.component';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\n\n@Directive({ selector: 'ng-template[dfSideNavHeader]' })\nexport class DfSideNavHeaderDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({ selector: 'ng-template[dfSideNavIcon]' })\nexport class DfSideNavIconDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({ selector: 'ng-template[dfSideNavItem]' })\nexport class DfSideNavItemDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n *\n * It supports several options as:\n * - Being in an overlay menu or not\n * - Being collapsed or not\n * - Can be used with or without Angular Router\n * - Can be used with media queries to adjust behavior to different breakpoints (see media section)\n */\n@Component({\n selector: 'df-sidenav',\n templateUrl: './sidenav.component.html',\n imports: [CommonModule, DfSideNavListComponent],\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfSideNavComponent implements OnDestroy {\n readonly tplHeader = contentChild(DfSideNavHeaderDirective);\n readonly tplIcon = contentChild(DfSideNavIconDirective);\n readonly tplItem = contentChild(DfSideNavItemDirective);\n\n readonly overlayClass = signal(false);\n readonly classes = computed(\n () => `df-sidenav-light d-flex flex-column flex-shrink-0${this.overlayClass() ? ' df-sidenav-menu-overlay' : ''}`\n );\n private readonly sideNavService = inject(DfSideNavService);\n readonly navItems = toSignal(this.sideNavService.sideNavItems$, { initialValue: [] });\n\n constructor() {\n this.sideNavService.isInMenuOverlay$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.overlayClass.set(value);\n });\n setTimeout(() => this.sideNavService.setSideNav());\n }\n\n ngOnDestroy() {\n this.sideNavService.removeSideBar();\n }\n}\n","<div class=\"df-scroll-content\">\n @if (tplHeader(); as tplHeader) {\n <ng-template [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n }\n <df-sidenavlist [items]=\"navItems()\" [tplIcon]=\"tplIcon()\" [tplItem]=\"tplItem()\" />\n</div>\n","import { Directive, ElementRef, inject, input, NgZone, OnDestroy, OnInit } from '@angular/core';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\n\n/**\n * The directive to catch focusin event and put the focus at a defined position in the page\n *\n * @since 9.1.0\n */\n@Directive({\n selector: '[dfExcludeTrap]'\n})\nexport class DfExcludeTrapDirective implements OnDestroy, OnInit {\n private subscription: Subscription = new Subscription();\n private subscriptionInput?: Subscription;\n\n /**\n * The CSS selector used to get the element to put the focus when catched\n *\n */\n readonly dfExcludeTrapSelector = input('');\n\n /**\n * The Observable to enable or disable the ExcludeTrap\n * If `True` the excludeTrap will work\n */\n readonly dfExcludeTrap = input.required<Observable<boolean>>();\n\n private readonly zone = inject(NgZone);\n private readonly element = inject(ElementRef);\n\n init() {\n this.subscription = fromEvent<FocusEvent>(this.element.nativeElement, 'focusin').subscribe(() => {\n const el = document.querySelector(this.dfExcludeTrapSelector()) as HTMLElement;\n if (el) {\n el.focus();\n }\n });\n }\n\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.subscriptionInput = this.dfExcludeTrap().subscribe((isPresent) => {\n if (isPresent) {\n this.init();\n } else {\n this.subscription.unsubscribe();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n if (this.subscriptionInput) {\n this.subscriptionInput.unsubscribe();\n }\n }\n}\n","export const DF_SELECT_CLASS = 'df-ym';\n","import { Directive, Host, ElementRef, HostListener, OnInit, Renderer2 } from '@angular/core';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../../right-to-left/directionDetection.service';\nimport { DF_SELECT_CLASS } from '../select.model';\n\n@Directive({\n selector: '[dfManageNavSelect]'\n})\nexport class DfManageNavSelectDirective implements OnInit {\n private direction!: string;\n\n constructor(\n @Host() private readonly select: NgSelectComponent,\n private readonly element: ElementRef,\n private readonly rtlDirectionService: DfDirectionDetectionService,\n private readonly renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.direction = this.rtlDirectionService.getPageDirection(this.element);\n }\n\n @HostListener('keydown.arrowLeft', ['$event'])\n handleKeyDown(event: any) {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowLeftInnerHandler(event);\n } else {\n this.arrowRightInnerHandler(event);\n }\n }\n\n @HostListener('keydown.Backspace', ['$event']) handleKeyDownBackspace(event: any) {\n // Clear on backspace is already handled by ng select when clearable is true\n if (!this.select.clearable && !this.select.searchTerm) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n if (listBadge.length > 0) {\n listBadge[listBadge.length - 1].click();\n }\n }\n }\n\n @HostListener('keydown.arrowRight', ['$event'])\n handleKeyDownRight(event: any) {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowRightInnerHandler(event);\n } else {\n this.arrowLeftInnerHandler(event);\n }\n }\n\n arrowRightInnerHandler(event: any) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n const currentPos = Array.prototype.indexOf.call(listBadge, document.activeElement);\n // Test if the focus is in the list (otherwise it is in the input and we do nothing)\n if (currentPos !== -1) {\n if (currentPos === listBadge.length - 1) {\n this.select.focus();\n } else {\n (listBadge[currentPos + 1] || document.activeElement).focus();\n }\n } else if (\n event.target.selectionStart === event.target.selectionEnd &&\n event.target.nodeName === 'INPUT' &&\n event.target.selectionStart === event.target.value.length\n ) {\n const clearEl =\n this.element.nativeElement.querySelector('.ng-clear-wrapper') ||\n this.element.nativeElement.querySelector('.ng-clear');\n if (clearEl) {\n // Event if it can be added multiple time it is not an issue I think.\n this.renderer.listen(clearEl, 'keydown.Enter', (e) => {\n e.stopPropagation(); // kill the event to forbid default ng-select behavior (open the dropdown)\n this.select.handleClearClick();\n });\n clearEl.setAttribute('tabindex', '1'); // To be able to focus the element in chrome\n clearEl.focus();\n }\n }\n }\n\n arrowLeftInnerHandler(event: any) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n if (\n event.target.selectionStart === event.target.selectionEnd &&\n event.target.selectionStart === 0 &&\n event.target.nodeName === 'INPUT'\n ) {\n if (listBadge.length > 0) {\n listBadge[listBadge.length - 1].focus();\n }\n } else if (event.target.classList.contains('ng-clear-wrapper') || event.target.classList.contains('ng-clear')) {\n this.select.focus();\n } else {\n const currentPos = Array.prototype.indexOf.call(listBadge, document.activeElement);\n (listBadge[currentPos - 1] || document.activeElement).focus();\n }\n }\n}\n","import {\n AfterViewInit,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal\n} from '@angular/core';\n\n// Copy of https://github.com/ng-select/ng-select/blob/master/src/ng-option-highlight/lib/ng-option-highlight.directive.ts\n@Directive({\n selector: '[dfOptionHighlight]'\n})\nexport class DfOptionHighlightDirective implements AfterViewInit {\n readonly dfOptionHighlight = input.required<string>();\n\n private readonly label = signal('');\n\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly canHighlight = computed(() => !!this.dfOptionHighlight() && !!this.label());\n\n constructor() {\n effect(() => {\n if (this.canHighlight()) {\n const alternationString = this.dfOptionHighlight()\n .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(' ', '|');\n const termRegex = new RegExp(alternationString, 'gi');\n this.setInnerHtml(this.label().replace(termRegex, `<span class=\\\"highlighted\\\">$&</span>`));\n } else if (this.label()) {\n // unhighlight if there was some\n this.setInnerHtml(this.label());\n }\n });\n }\n\n ngAfterViewInit() {\n this.label.set(this.elementRef.nativeElement.innerHTML);\n }\n\n private setInnerHtml(html: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html);\n }\n}\n","import { DF_SELECT_CLASS } from '../select.model';\nimport {\n Directive,\n ElementRef,\n HostListener,\n Input,\n HostBinding,\n Renderer2,\n AfterViewInit,\n input,\n inject\n} from '@angular/core';\n\n// Put to avoid opening of the select after removal. See why in file:\n// https://github.com/ng-select/ng-select/blob/57c6671a972d23beddcca2b6acc9418544c17a2e/src/ng-select/ng-select.component.ts#L307\nconst NG_SELECT_CLASS_IDENTIFIER = 'ng-value-icon';\n\n@Directive({\n selector: '[dfManageBadgeEventsSelect]',\n host: {\n tabindex: '-1',\n '(keydown.Backspace)': 'handleKeyDownBackspace($event)',\n '(click)': 'handleClick($event)',\n '(keydown.Enter)': 'handleKeyDownEnter($event)',\n '(keydown.Delete)': 'handleKeyDownDelete($event)'\n }\n})\nexport class DfManageBadgeEventsDirective implements AfterViewInit {\n readonly dfManageBadgeEventsSelect = input.required<[(arg: any) => void, any]>();\n\n private readonly renderer = inject(Renderer2);\n private readonly element = inject(ElementRef);\n\n constructor() {\n this.renderer.addClass(this.element.nativeElement, DF_SELECT_CLASS);\n this.renderer.addClass(this.element.nativeElement, NG_SELECT_CLASS_IDENTIFIER);\n }\n\n ngAfterViewInit() {\n const childs = this.element.nativeElement.children;\n const map = Array.from(childs);\n map.forEach((element) => {\n this.renderer.addClass(element, NG_SELECT_CLASS_IDENTIFIER);\n });\n }\n\n handleKeyDownBackspace(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleClick(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleKeyDownEnter(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleKeyDownDelete(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfManageNavSelectDirective } from './nav/manage-nav-select.directive';\nimport { DfManageBadgeEventsDirective } from './events/manage-badge-events.directive';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { DfOptionHighlightDirective } from './option-highlight.directive';\n\nexport { DfManageNavSelectDirective } from './nav/manage-nav-select.directive';\nexport { DfManageBadgeEventsDirective } from './events/manage-badge-events.directive';\nexport { DfOptionHighlightDirective } from './option-highlight.directive';\n\n@NgModule({\n imports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective],\n exports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective, NgSelectModule]\n})\nexport class DfSelectModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport interface DfStepperStep {\n warning: boolean;\n completed: boolean;\n visited?: boolean;\n label: string;\n ariaControl: string;\n warningLabel?: string;\n optionalLabel?: string;\n}\n\nexport type DfStepType = 'warning' | 'completed' | 'future' | 'visited';\n\nexport interface DfStepperNormalizedStep extends DfStepperStep {\n type: DfStepType;\n}\nexport interface DfStepperState {\n steps: DfStepperStep[];\n active: number;\n isLinear: boolean;\n isInline: boolean;\n isVertical: boolean;\n}\nexport interface DfStepperNormalizedState {\n steps: DfStepperNormalizedStep[];\n active: number;\n isLinear: boolean;\n isInline: boolean;\n isVertical: boolean;\n}\n\n@Injectable()\nexport class DfStepperService {\n setFocus = false;\n private readonly _stepperState$ = new BehaviorSubject<DfStepperNormalizedState>({\n steps: [],\n active: 0,\n isLinear: false,\n isInline: false,\n isVertical: false\n });\n private _state: DfStepperNormalizedState = {\n steps: [],\n active: 0,\n isLinear: false,\n isInline: false,\n isVertical: false\n };\n private _completedLabel = 'Completed';\n private _warningLabel = 'Warning';\n private _stepperAriaLabel = 'Stepper';\n\n get stepperState$(): Observable<DfStepperNormalizedState> {\n return this._stepperState$.asObservable();\n }\n // initState must be used to push new Steps to the service\n get state(): DfStepperNormalizedState {\n return this._state;\n }\n\n private dispatchStepperState() {\n this._stepperState$.next(this._state);\n }\n\n private updateStepperState() {\n this._state = this.normalizeState(this._state as DfStepperState);\n this.dispatchStepperState();\n }\n\n // API\n /**\n * Use this to init the list of Elements from your stepper\n *\n * Here we are not deep copying the array --> the function will change it\n */\n initStepperState(state: DfStepperState) {\n // normalize the steps here\n this._state = this.normalizeState(state);\n this.dispatchStepperState();\n }\n\n /**\n * Use this to normalize the state of the stepper (completed, warning, current, future)\n * @param state\n * @returns\n */\n normalizeState(state: DfStepperState): DfStepperNormalizedState {\n const stepsList: DfStepperNormalizedStep[] = [];\n for (let i = 0; i < state.steps.length; i++) {\n if (state.steps[i].warning) {\n stepsList.push({ ...state.steps[i], type: 'warning' });\n } else if (state.steps[i].completed) {\n stepsList.push({ ...state.steps[i], type: 'completed' });\n } else if (i === state.active || state.steps[i].visited) {\n stepsList.push({ ...state.steps[i], type: 'visited', visited: true });\n } else {\n stepsList.push({ ...state.steps[i], type: 'future', visited: false });\n }\n }\n return { ...state, steps: stepsList };\n }\n\n /**\n * Internal to get the stepper aria label in the template\n */\n get stepperAriaLabel(): string {\n return this._stepperAriaLabel;\n }\n\n /**\n * Use this to set the stepper aria label (i18n)\n */\n set stepperAriaLabel(label: string) {\n this._stepperAriaLabel = label;\n }\n\n /**\n * Internal to get the completed label in the template\n */\n get completedLabel(): string {\n return this._completedLabel;\n }\n\n /**\n * Internal to get the waring label in the template\n */\n get warningLabel(): string {\n return this._warningLabel;\n }\n\n /**\n * Use this to set the completed label (i18n)\n */\n set completedLabel(label: string) {\n this._completedLabel = label;\n }\n\n /**\n * Use this to set the warning label (i18n)\n */\n set warningLabel(label: string) {\n this._warningLabel = label;\n }\n\n /**\n * TODO make it customizable\n * @param index - index of the step\n * @returns - string of the step number to display\n */\n getStepNumberLabel(index: number): string {\n return `${index + 1}`;\n }\n\n resetFocus() {\n this.setFocus = false;\n }\n\n /**\n *\n * @param isLinear - true if the stepper is linear\n */\n setLinear(isLinear: boolean) {\n this._state.isLinear = isLinear;\n this.dispatchStepperState();\n }\n\n /**\n *\n * @param isInline - true if the stepper is inline\n */\n setInline(isInline: boolean) {\n this._state.isInline = isInline;\n this.dispatchStepperState();\n }\n\n /**\n *\n * @param index - index of the step to select start at 0\n */\n selectStep(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.active = index;\n this.updateStepperState();\n }\n\n /**\n * Same as selectStep but with focus on the step selected\n * @param index - index of the step to select start at 0\n */\n selectWithFocus(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this.setFocus = true;\n this.selectStep(index);\n }\n\n /**\n *\n * @param index - index of the step to complete start at 0\n */\n completeStep(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].completed = true;\n this._state.steps[index].warning = false;\n this.updateStepperState();\n }\n\n /**\n *\n * @param index - index of the step to complete start at 0\n */\n completeStepAndGoNext(index: number) {\n this.completeStep(index);\n this.selectStep(index + 1);\n }\n\n /**\n * Attention if the step was completed it will be uncompleted after.\n * @param index - index of the step to make Warning start at 0\n * @param warningLabel - label to display in the warning by default it will take the warningLabel if it exists or the label\n */\n makeWarning(index: number, warningLabel?: string) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].warning = true;\n this._state.steps[index].completed = false;\n this._state.steps[index].warningLabel = warningLabel\n ? warningLabel\n : this._state.steps[index].warningLabel\n ? this._state.steps[index].warningLabel\n : this._state.steps[index].label;\n this.updateStepperState();\n }\n\n /**\n *\n * @param index - index of the step to remove Warning start at 0\n */\n removeWarning(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].warning = false;\n this.updateStepperState();\n }\n}\n","import {\n AfterViewChecked,\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n Renderer2,\n inject\n} from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../right-to-left/directionDetection.service';\nimport { DfStepperService } from './stepper.service';\nexport const DF_STEP_CLASS = 'df-stepper-step';\n\n@Directive({\n selector: '[dfStepperStep]',\n exportAs: 'dfStepperStep'\n})\nexport class DfStepperStepDirective implements OnInit, OnDestroy {\n private readonly unlistener: Array<() => void> = [];\n\n private readonly renderer2: Renderer2 = inject(Renderer2);\n private readonly element: ElementRef = inject(ElementRef);\n\n ngOnInit() {\n this.unlistener.push(\n this.renderer2.listen(this.element.nativeElement, 'focus', () => {\n this.handleFocusTabIndex();\n })\n );\n this.unlistener.push(\n this.renderer2.listen(this.element.nativeElement, 'blur', (event: FocusEvent) => {\n this.handleBlurTabIndex(event);\n })\n );\n }\n\n handleFocusTabIndex() {\n this.element.nativeElement.tabIndex = 0;\n }\n\n handleBlurTabIndex(event: FocusEvent) {\n if (\n event.relatedTarget &&\n 'classList' in event.relatedTarget &&\n (event.relatedTarget.classList as DOMTokenList).contains(DF_STEP_CLASS)\n ) {\n this.element.nativeElement.tabIndex = -1;\n }\n }\n\n ngOnDestroy() {\n this.unlistener.forEach((ul) => ul());\n }\n}\n\n@Directive({\n selector: '[dfStepperLogic]',\n exportAs: 'dfStepperLogic'\n})\nexport class DfStepperDirective implements OnInit, AfterViewChecked {\n private direction!: string;\n stepperService = inject(DfStepperService);\n private readonly element: ElementRef = inject(ElementRef);\n private readonly rtlDirectionService: DfDirectionDetectionService = inject(DfDirectionDetectionService);\n\n ngOnInit(): void {\n this.direction = this.rtlDirectionService.getPageDirection(this.element);\n }\n\n @HostListener('keydown.Enter')\n handleEnterDown() {\n this.handleSelect();\n }\n\n @HostListener('keydown.Space')\n handleSpaceDown() {\n this.handleSelect();\n }\n\n private handleGoPrevious() {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowLeftInnerHandler();\n } else {\n this.arrowRightInnerHandler();\n }\n }\n\n private handleGoNext() {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowRightInnerHandler();\n } else {\n this.arrowLeftInnerHandler();\n }\n }\n\n @HostListener('keydown.arrowRight', ['$event'])\n handleKeyDownRight(event: KeyboardEvent) {\n if (!this.stepperService.state.isVertical) {\n this.handleGoNext();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowLeft', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.stepperService.state.isVertical) {\n this.handleGoPrevious();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowDown', ['$event'])\n handleKeyDownUp(event: KeyboardEvent) {\n if (this.stepperService.state.isVertical) {\n this.handleGoNext();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n handleKeyDownDown(event: KeyboardEvent) {\n if (this.stepperService.state.isVertical) {\n this.handleGoPrevious();\n event.preventDefault();\n }\n }\n\n getSteps(): HTMLButtonElement[] {\n return this.element.nativeElement.querySelectorAll(`:scope .${DF_STEP_CLASS}`);\n }\n\n private handleSelect() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n if (currentPos !== -1) {\n listStep[currentPos].click();\n }\n }\n\n private arrowRightInnerHandler() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n // Test if the focus is in the list (otherwise we do nothing)\n if (currentPos !== -1) {\n // we put the focus on the next element.\n if (currentPos === listStep.length - 1) {\n listStep[0].focus();\n } else {\n listStep[currentPos + 1].focus();\n }\n }\n }\n\n private arrowLeftInnerHandler() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n // Test if the focus is in the list (otherwise we do nothing)\n if (currentPos !== -1) {\n // we put the focus on the next element.\n if (currentPos === 0) {\n listStep[listStep.length - 1].focus();\n } else {\n listStep[currentPos - 1].focus();\n }\n }\n }\n\n ngAfterViewChecked() {\n // Put back the focus on the active elements\n if (this.stepperService.setFocus) {\n const listStep: HTMLButtonElement[] = this.getSteps();\n listStep[this.stepperService.state.active].focus();\n this.stepperService.resetFocus();\n }\n }\n}\n","import {\n Component,\n ContentChildren,\n Directive,\n TemplateRef,\n inject,\n QueryList,\n ChangeDetectionStrategy,\n Input,\n numberAttribute,\n AfterContentInit,\n input,\n contentChildren,\n signal\n} from '@angular/core';\nimport { DfStepperDirective, DfStepperStepDirective } from './stepper.directive';\nimport { DfStepperNormalizedState, DfStepperService } from './stepper.service';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({ selector: 'ng-template[dfStepperStepContent]' })\nexport class DfStepperStepContentDirective {\n readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n /**\n * The step index\n * -1 means that the input index is not set\n */\n readonly dfStepperStepContent = input(-1, { transform: (value: unknown) => numberAttribute(value, -1) });\n}\n\n/**\n * Stepper component is a component to provide a step by step navigation\n * You have two ways to navigate through the steps:\n * - Using the linear navigation, where you can only go to the next step\n * - Using the non-linear navigation, where you can go to any step\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[dfStepper]',\n templateUrl: './stepper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DfStepperStepDirective, NgTemplateOutlet, AsyncPipe],\n hostDirectives: [DfStepperDirective],\n host: {\n role: 'tablist',\n class: 'df-stepper mb-2',\n '[class.df-vertical-stepper]': 'state()?.isVertical',\n '[attr.aria-label]': 'stepperService.stepperAriaLabel',\n '[attr.aria-orientation]': 'state()?.isVertical ? \"vertical\": null'\n }\n})\nexport class DfStepperComponent implements AfterContentInit {\n readonly stepperService = inject(DfStepperService);\n mapStepToContent: Map<number, TemplateRef<any>> = new Map<number, TemplateRef<any>>();\n\n readonly tplStepsContent = contentChildren(DfStepperStepContentDirective);\n readonly state = signal<DfStepperNormalizedState | undefined>(undefined);\n\n constructor() {\n this.stepperService.stepperState$.pipe(takeUntilDestroyed()).subscribe((state) => {\n this.state.set(state);\n });\n }\n\n ngAfterContentInit() {\n this.tplStepsContent().forEach((tplStepContent) => {\n if (tplStepContent.dfStepperStepContent() !== -1) {\n this.mapStepToContent.set(tplStepContent.dfStepperStepContent(), tplStepContent.templateRef);\n }\n });\n }\n}\n","<ng-template #myStepperLine>\n <div class=\"df-stepper-line-wrapper\">\n <div class=\"df-stepper-line\">\n <div class=\"df-stepper-horizontal-line\"></div>\n </div>\n <div class=\"df-stepper-line d-none d-sm-flex\">\n <div class=\"flex-grow-1\"></div>\n </div>\n </div>\n</ng-template>\n@if (state(); as state) {\n @for (step of state.steps; track step; let i = $index) {\n <button\n #stepbasic\n class=\"btn btn-link df-stepper-step\"\n dfStepperStep\n [class.active]=\"i === state.active\"\n [class.flex-row]=\"state.isInline\"\n [attr.tabIndex]=\"i === state.active ? 0 : -1\"\n [class.df-stepper-step-warning]=\"step.type === 'warning'\"\n [class.df-stepper-step-completed]=\"step.type === 'completed'\"\n [class.df-stepper-step-visited]=\"step.type === 'visited'\"\n [class.df-stepper-step-future]=\"step.type === 'future'\"\n [disabled]=\"\n state.isLinear &&\n (step.type === 'future' || step.type === 'completed' || (step.type === 'visited' && i !== state.active))\n \"\n role=\"tab\"\n [attr.aria-selected]=\"i === state.active ? 'true' : 'false'\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"state.steps.length\"\n [attr.aria-controls]=\"step.ariaControl\"\n (click)=\"stepperService.selectWithFocus(i)\"\n >\n <div\n [class.df-stepper-outline-number-visited]=\"step.type === 'visited'\"\n [class.df-stepper-outline-icon]=\"step.type === 'warning'\"\n [class.fa-exclamation-triangle]=\"step.type === 'warning'\"\n [class.df-stepper-icon]=\"step.type === 'completed'\"\n [class.fa-check]=\"step.type === 'completed'\"\n [class.df-stepper-outline-number-future]=\"step.type === 'future'\"\n >\n <span aria-hidden=\"true\">{{ stepperService.getStepNumberLabel(i) }}</span>\n </div>\n <div\n class=\"flex-column\"\n [class.mt-1]=\"!state.isInline\"\n [class.d-none]=\"!state.isVertical\"\n [class.d-sm-flex]=\"!state.isVertical\"\n [class.d-flex]=\"state.isVertical\"\n >\n @if (step.type === 'warning') {\n <span class=\"visually-hidden\">{{ stepperService.warningLabel }}</span>\n }\n <span class=\"df-stepper-label\">{{ step.label }}</span>\n @if (step.optionalLabel) {\n <span class=\"df-stepper-optional-label\">{{ step.optionalLabel }}</span>\n }\n @if (step.completed) {\n <span class=\"visually-hidden\">{{ stepperService.completedLabel }}</span>\n }\n </div>\n </button>\n @if (!state.isVertical && i < state.steps.length - 1) {\n <ng-container [ngTemplateOutlet]=\"myStepperLine\"></ng-container>\n }\n @if (state.isVertical && i < state.steps.length) {\n <div\n [class.d-none]=\"state.steps.length - 1 === i\"\n role=\"tabpanel\"\n [id]=\"step.ariaControl\"\n class=\"df-vertical-stepper-panel df-vertical-stepper-line\"\n >\n @if (mapStepToContent.has(i) && state.active === i) {\n <ng-template\n [ngTemplateOutlet]=\"mapStepToContent.get(i) || null\"\n [ngTemplateOutletContext]=\"{ state, index: i, service: stepperService }\"\n ></ng-template>\n }\n </div>\n }\n }\n}\n@if (stepperService.stepperState$ | async; as state) {\n <div\n class=\"text-primary mb-2\"\n [class.d-block]=\"!state.isVertical\"\n [class.d-sm-none]=\"!state.isVertical\"\n [class.d-none]=\"state.isVertical\"\n >\n <span class=\"df-stepper-label\">{{ state.steps[state.active].label }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { DfStepperDirective, DfStepperStepDirective} from './stepper.directive';\nimport { DfStepperComponent, DfStepperStepContentDirective} from './stepper.component';\n\n@NgModule({\n imports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective],\n exports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective]\n})\nexport class DfStepperModule {}\n","import { Directive, DoCheck, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { hasOverflow } from '../../utils/html-element-helper';\n\n/**\n * My dfTooltipTruncate directive\n */\n@Directive({\n exportAs: 'dfTooltipTruncate',\n selector: '[dfTooltipTruncate]'\n})\nexport class DfTooltipTruncateDirective implements OnInit, DoCheck {\n constructor(\n private readonly tooltip: NgbTooltip,\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');\n }\n\n ngDoCheck() {\n const disableToolTip = !hasOverflow(this.elementRef.nativeElement);\n this.tooltip.disableTooltip = disableToolTip;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'tabIndex', disableToolTip ? '-1' : '0');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';\n\nexport { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';\n\n@NgModule({\n imports: [DfTooltipTruncateDirective],\n exports: [DfTooltipTruncateDirective, NgbTooltipModule]\n})\nexport class DfTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nimport { DfManageSideNavDirective } from './manage-sidenav.directive';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { DfSideNavCollapseModule } from './dfSideNavCollapse.module';\nimport { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';\n\nexport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nexport { DfManageSideNavDirective } from './manage-sidenav.directive';\nexport { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';\n\n@NgModule({\n imports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfExcludeTrapDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n ],\n exports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfExcludeTrapDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective,\n DfSideNavCollapseModule,\n DfMediaModule\n ]\n})\nexport class DfSideNavModule {}\n","import { Directive, ElementRef, AfterViewInit, Renderer2, input, effect, inject } from '@angular/core';\n\n@Directive({\n selector: '[dfManageCardSelected]',\n host: {\n '(click)': 'click($event)'\n }\n})\nexport class DfManageCardSelectionDirective implements AfterViewInit {\n private input!: HTMLInputElement;\n\n readonly dfManageCardSelected = input.required<boolean>();\n private readonly element = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const selectedClass = 'df-card-selected';\n if (this.dfManageCardSelected() === true) {\n this.renderer.addClass(this.element.nativeElement, selectedClass);\n } else {\n this.renderer.removeClass(this.element.nativeElement, selectedClass);\n }\n });\n }\n\n ngAfterViewInit() {\n this.input = this.element.nativeElement.querySelector('.form-check-input');\n this.renderer.setAttribute(this.input, 'tabIndex', '-1');\n }\n\n click(event: any) {\n const target: HTMLElement = event.target;\n // If the input or the label is clicked then the selection is already made\n // The card must have only one input\n if (!(target.classList.contains('form-check-input') || target.classList.contains('form-check-label'))) {\n this.input.click();\n } else {\n this.element.nativeElement.focus();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfManageCardSelectionDirective } from './manage-card-selection.directive';\n\nexport { DfManageCardSelectionDirective } from './manage-card-selection.directive';\n\n@NgModule({\n imports: [DfManageCardSelectionDirective],\n exports: [DfManageCardSelectionDirective]\n})\nexport class DfAdvancedCardModule {}\n","import { NgModule } from '@angular/core';\nimport { DfAlertModule } from './alert/alert.module';\nimport { DfDatePickerModule } from './datepicker/datepicker.module';\nimport { DfSelectModule } from './selects/select.module';\nimport { DfPopoverModule } from './popover/popover.module';\nimport { DfProgressbarModule } from './progressbar/progressbar.module';\nimport { DfAdvancedInputModule } from './inputs/input-advanced.module';\nimport { DfAccessibilityModule } from './accessibility/accessibility.module';\nimport { DfIconModule } from './icon/icon.module';\nimport { DfSliderModule } from './slider/slider.module';\nimport { DfTooltipModule } from './tooltip/tooltip.module';\nimport { DfSideNavModule } from './sidenav/sidenav.module';\nimport { DfSideNavCollapseModule } from './sidenav/dfSideNavCollapse.module';\nimport { DfAdvancedCardModule } from './card/card-advanced.module';\nimport { DfProgressIndicatorModule } from './progressindicator/progressindicator.module';\nimport { DfFooterModule } from './footer/footer.module';\nimport { DfToastModule } from './toast/toast.module';\nimport { DfStepperModule } from './stepper/stepper.module';\n\nconst DF_MODULES = [\n DfAlertModule,\n DfDatePickerModule,\n DfSelectModule,\n DfProgressbarModule,\n DfProgressIndicatorModule,\n DfAdvancedInputModule,\n DfAccessibilityModule,\n DfSliderModule,\n DfPopoverModule,\n DfIconModule,\n DfTooltipModule,\n DfSideNavModule,\n DfSideNavCollapseModule,\n DfAdvancedCardModule,\n DfFooterModule,\n DfToastModule,\n DfStepperModule\n];\n\n/**\n * @deprecated Import only the needed modules or use standalone components instead of DfModule\n */\n@NgModule({\n imports: DF_MODULES,\n exports: DF_MODULES\n})\nexport class DfModule {}","import { Directive, ElementRef, PLATFORM_ID, effect, inject, input } from '@angular/core';\nimport { HttpClient, type HttpErrorResponse } from '@angular/common/http';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[dfWavesOfProgress]',\n exportAs: 'dfWavesOfProgress',\n host: {\n class: 'df-waves-of-progress-bg'\n }\n})\nexport class DfWavesOfProgressDirective {\n /**\n * The type of waves to display. In order to display the waves, the app using the directive must include the assets of Design Factory.\n * It is possible to do so by adding the following snippet to the `angular.json` file in the `assets` configuration:\n * @example\n * \"assets\": [\n * {\n * \"glob\": \"** / *\", //remove the spaces between the asterisks and the slash\n * \"input\": \"node-modules/@design-factory/design-factory/assets/\",\n * \"output\": \"assets/\"\n * },\n * ...]\n */\n readonly dfWavesOfProgress = input.required<'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp'>();\n\n private readonly http = inject(HttpClient, { optional: true });\n public elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private baseSvg = '';\n\n /**\n * Prepares the SVG string by replacing color variables and encoding it.\n * @param bgColor - The background color.\n * @param lineColor - The line color.\n * @returns The prepared SVG string.\n */\n prepareSvg(bgColor: string, lineColor: string): string {\n let baseSvg = this.baseSvg.replace(/var\\(\\-\\-df\\-waves\\-of\\-progress\\-bg\\-color\\)/g, bgColor);\n baseSvg = baseSvg.replace(/var\\(\\-\\-df\\-waves\\-of\\-progress\\-line\\-color\\)/g, lineColor);\n baseSvg = baseSvg.replace(/#/g, '%23');\n return `'data:image/svg+xml;utf8,${baseSvg}'`;\n }\n\n /**\n * Updates the SVG background image based on the current element's styles.\n */\n public updateSvg(): void {\n if (isPlatformBrowser(this.platformId)) {\n const computedStyle = window.getComputedStyle(this.elementRef.nativeElement);\n const bgColor = computedStyle.getPropertyValue('--df-waves-of-progress-bg-color');\n const lineColor = computedStyle.getPropertyValue('--df-waves-of-progress-line-color');\n if (!bgColor || !lineColor) {\n this.elementRef.nativeElement.style.backgroundImage = null;\n } else {\n this.elementRef.nativeElement.style.backgroundImage = `url(${this.prepareSvg(bgColor, lineColor)})`;\n }\n }\n }\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n effect(() => {\n this.getSvg(this.dfWavesOfProgress());\n });\n }\n }\n\n private getSvg(wavesType: 'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp') {\n if (!this.http) {\n throw Error(\n 'Could not find HttpClient provider for use with DF Waves of progress. ' +\n 'Please include the HttpClientModule from @angular/common/http in your ' +\n 'app imports.'\n );\n }\n const url = `assets/waves_of_progress/${wavesType}.svg`;\n this.http.get(url, { responseType: 'text' }).subscribe({\n next: (svgString) => {\n this.baseSvg = svgString.replace(/\\n|\\r/g, '');\n this.updateSvg();\n },\n error: (error: HttpErrorResponse) => {\n throw Error('[Design Factory] (Waves of progress): ' + error.message);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfWavesOfProgressDirective } from './waves.directive';\n\n@NgModule({\n imports: [DfWavesOfProgressDirective],\n exports: [DfWavesOfProgressDirective]\n})\nexport class DfWavesOfProgressModule {}\n","// Accessibility\nexport { DfAccessibilityModule } from './angular/accessibility/accessibility.module';\nexport { SkipLinkDirective } from './angular/accessibility/directives/skip-link.directive';\nexport { SkipLinksContainerComponent } from './angular/accessibility/components/skip-links-container/skip-links-container.component';\n\n// Toast\nexport { DfToastModule } from './angular/toast/toast.module';\n\n// Alert\nexport { DfAlertModule } from './angular/alert/alert.module';\n\n// Datepicker\nexport { DfDatePickerModule } from './angular/datepicker/datepicker.module';\nexport { DfDatepickerRangeDirective } from './angular/datepicker/datepicker-range.directive';\nexport { DfDatepickerRangeService } from './angular/datepicker/datepicker-range.service';\n\n// Footer\nexport { DfFooterModule } from './angular/footer/footer.module';\n\n// Icon\nexport { DfIconModule } from './angular/icon/icon.module';\nexport { DfInsertIconModule } from './angular/icon/insert/insert-icon.module';\nexport { DfAmadeusIconComponent } from './angular/icon/amadeus-icon';\nexport { DfInsertIconDirective } from './angular/icon/insert/insert-icon.directive';\n\n// Inputs\nexport { DfTriggerClickDirective } from './angular/inputs/click/trigger-click.directive';\nexport { DfInputIconDirective, DfDirection } from './angular/inputs/icon/inputicon.directive';\nexport { DfAdvancedInputModule } from './angular/inputs/input-advanced.module';\n\n// Modal\nexport { DfModalService } from './angular/modal/modal.service';\n\n// Popover\nexport { DfPopoverModule } from './angular/popover/popover.module';\nexport { DfPopoverConfig } from './angular/popover/config/popover.config';\n\n// Progressbar\nexport { DfProgressbarModule } from './angular/progressbar/progressbar.module';\nexport { DfProgressbarComponent } from './angular/progressbar/progressbar.component';\n\n// Progress indicator\nexport { DfProgressIndicatorModule } from './angular/progressindicator/progressindicator.module';\nexport {\n DfProgressIndicatorService,\n DfProgressIndicatorContent\n} from './angular/progressindicator/progressindicator.service';\nexport { DfProgressIndicatorDirective } from './angular/progressindicator/progressindicator.directive';\nexport {\n DfProgressIndicatorOptions,\n DfProgressIndicatorContentType,\n DfProgressIndicatorContentSpinner,\n DfProgressIndicatorContentProgressBar,\n DfProgressIndicatorContentPosition\n} from './angular/progressindicator/progressindicator-config';\nexport { DfProgressIndicatorRef } from './angular/progressindicator/progressindicator-ref';\nexport { DfProgressIndicatorContainerComponent } from './angular/progressindicator/progressindicator-container.component';\nexport { DfProgressIndicatorBackdropComponent } from './angular/progressindicator/progressindicator-backdrop.component';\nexport { DfDefaultSpinnerComponent } from './angular/progressindicator/default/default-spinner.component';\n\n// RTL\nexport {\n DfDirectionDetectionService,\n RightToLeftDirectionEnum\n} from './angular/right-to-left/directionDetection.service';\n\n// Slider\nexport { DfSliderModule } from './angular/slider/slider.module';\nexport { DfSliderDirectionDirective } from './angular/slider/direction/sliderdirection.directive';\nexport {\n DfSideNavHeaderDirective,\n DfSideNavItemDirective,\n DfSideNavIconDirective\n} from './angular/sidenav/sidenav.component';\nexport { DfManageSideNavDirective } from './angular/sidenav/manage-sidenav.directive';\nexport { DfExcludeTrapDirective } from './angular/sidenav/excludeTrap.directive';\nexport { ChangeContext } from './angular/slider/lib/change-context';\nexport { PointerType } from './angular/slider/lib/pointer-type';\nexport * from './angular/slider/lib/options';\nexport { SliderComponent } from './angular/slider/lib/slider.component';\n\n// Selects\nexport { DfManageNavSelectDirective } from './angular/selects/nav/manage-nav-select.directive';\nexport { DfOptionHighlightDirective } from './angular/selects/option-highlight.directive';\nexport { DfManageBadgeEventsDirective } from './angular/selects/events/manage-badge-events.directive';\nexport { DfSelectModule } from './angular/selects/select.module';\n\n// Stepper\nexport { DfStepperDirective } from './angular/stepper/stepper.directive';\nexport { DfStepperStepContentDirective, DfStepperComponent } from './angular/stepper/stepper.component';\nexport { DfStepperStepDirective } from './angular/stepper/stepper.directive';\nexport type {\n DfStepperStep,\n DfStepperState,\n DfStepperNormalizedState,\n DfStepperNormalizedStep\n} from './angular/stepper/stepper.service';\nexport { DfStepperModule } from './angular/stepper/stepper.module';\nexport { DfStepperService, DfStepType } from './angular/stepper/stepper.service';\n\n// Tooltip\nexport { DfTooltipTruncateDirective } from './angular/tooltip/truncate/tooltipTruncate.directive';\nexport { DfTooltipModule } from './angular/tooltip/tooltip.module';\n\n// Sidenav\nexport { DfSideNavItem } from './angular/sidenav/sidenav.service';\nexport { DfSideNavService } from './angular/sidenav/sidenav.service';\nexport { DfIfMediaDirective } from './angular/mediaqueries/ifMedia.directive';\nexport { DfSideNavModule } from './angular/sidenav/sidenav.module';\nexport { DfSideNavComponent } from './angular/sidenav/sidenav.component';\nexport { DfSideNavConfig } from './angular/sidenav/sidenav-config';\nexport { DfNavItemType } from './angular/sidenav/sidenav.service';\n\n// SideNavCollapse\nexport { DfSideNavCollapseModule } from './angular/sidenav/dfSideNavCollapse.module';\nexport { DfSideNavCollapseDirective } from './angular/sidenav/dfSideNavCollapse';\nexport { DfSideNavCollapseService } from './angular/sidenav/dfSideNavCollapse.service';\n\n// Media Utils\nexport {\n BREAKPOINTS_VARS,\n DF_BREAKPOINTS_VAR_DEFAULT,\n DfBreakpoints,\n DfMediaQuery,\n DfMediaObserver\n} from './angular/mediaqueries/mediaUtils.service';\n\n// Media service\nexport { DfMedia } from './angular/mediaqueries/media.service';\nexport { DfMediaModule } from './angular/mediaqueries/media.module';\n\n// Card\nexport { DfManageCardSelectionDirective } from './angular/card/manage-card-selection.directive';\nexport { DfAdvancedCardModule } from './angular/card/card-advanced.module';\n\n// Global\nexport { DfModule } from './angular/df.module';\n\n// Title truncate\nexport { DfTitleTruncateDirective } from './angular/utils/titleTruncate.directive';\n\n// Waves of progress\n\nexport { DfWavesOfProgressModule } from './angular/waves-of-progress/waves.module';\nexport { DfWavesOfProgressDirective } from './angular/waves-of-progress/waves.directive';\n","/**\n * Public API Surface of design-factory\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DfMediaObserver","i1.DfBreakpoints","noop","i1.ScrollBar","i1.DfSideNavConfig","i1.DfSideNavCollapseConfig","i3.DfIfMediaDirective","i1","i2.DfDirectionDetectionService","i1.DfStepperDirective"],"mappings":"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"}
1
+ {"version":3,"file":"design-factory.mjs","sources":["../../../projects/design-factory/src/lib/angular/accessibility/directives/skip-link.directive.ts","../../../projects/design-factory/src/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.ts","../../../projects/design-factory/src/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.html","../../../projects/design-factory/src/lib/angular/accessibility/accessibility.module.ts","../../../projects/design-factory/src/lib/angular/icon/insert/insert-icon.directive.ts","../../../projects/design-factory/src/lib/angular/icon/insert/insert-icon.module.ts","../../../projects/design-factory/src/lib/angular/toast/toast.module.ts","../../../projects/design-factory/src/lib/angular/alert/alert.module.ts","../../../projects/design-factory/src/lib/angular/inputs/click/trigger-click.directive.ts","../../../projects/design-factory/src/lib/angular/inputs/icon/inputicon.directive.ts","../../../projects/design-factory/src/lib/angular/inputs/input-advanced.module.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-keyboard-nav.service.ts","../../../projects/design-factory/src/lib/angular/right-to-left/directionDetection.service.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-range.directive.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker-range.service.ts","../../../projects/design-factory/src/lib/angular/datepicker/datepicker.module.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/mediaUtils.service.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/media.service.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/ifMedia.directive.ts","../../../projects/design-factory/src/lib/angular/mediaqueries/media.module.ts","../../../projects/design-factory/src/lib/angular/footer/footer.module.ts","../../../projects/design-factory/src/lib/angular/icon/amadeus-icon.ts","../../../projects/design-factory/src/lib/angular/icon/icon.module.ts","../../../projects/design-factory/src/lib/angular/modal/modal.service.ts","../../../projects/design-factory/src/lib/angular/popover/config/popover.config.ts","../../../projects/design-factory/src/lib/angular/popover/popover.module.ts","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.component.ts","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.component.html","../../../projects/design-factory/src/lib/angular/progressbar/progressbar.module.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-config.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-container.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/default/default-spinner.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/default/default-spinner.component.html","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-backdrop.component.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator-ref.ts","../../../projects/design-factory/src/lib/angular/utils/scrollbar.service.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.service.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.directive.ts","../../../projects/design-factory/src/lib/angular/progressindicator/progressindicator.module.ts","../../../projects/design-factory/src/lib/angular/slider/direction/sliderdirection.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/options.ts","../../../projects/design-factory/src/lib/angular/slider/lib/pointer-type.ts","../../../projects/design-factory/src/lib/angular/slider/lib/change-context.ts","../../../projects/design-factory/src/lib/angular/slider/lib/value-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/compatibility-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/math-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/event-listener.ts","../../../projects/design-factory/src/lib/angular/slider/lib/event-listener-helper.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-element.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-handle.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider-label.directive.ts","../../../projects/design-factory/src/lib/angular/slider/lib/tooltip-wrapper.component.ts","../../../projects/design-factory/src/lib/angular/slider/lib/tooltip-wrapper.component.html","../../../projects/design-factory/src/lib/angular/slider/lib/slider.component.ts","../../../projects/design-factory/src/lib/angular/slider/lib/slider.component.html","../../../projects/design-factory/src/lib/angular/slider/slider.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav-config.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.service.ts","../../../projects/design-factory/src/environment.ts","../../../projects/design-factory/src/lib/angular/animation/util.ts","../../../projects/design-factory/src/lib/angular/animation/ngbTransition.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapseConfig.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.service.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavAnimation.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.ts","../../../projects/design-factory/src/lib/angular/sidenav/dfSideNavCollapse.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/manage-sidenav.directive.ts","../../../projects/design-factory/src/lib/angular/utils/html-element-helper.ts","../../../projects/design-factory/src/lib/angular/utils/titleTruncate.directive.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenavlist.component.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenavlist.component.html","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.component.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.component.html","../../../projects/design-factory/src/lib/angular/sidenav/excludeTrap.directive.ts","../../../projects/design-factory/src/lib/angular/selects/select.model.ts","../../../projects/design-factory/src/lib/angular/selects/nav/manage-nav-select.directive.ts","../../../projects/design-factory/src/lib/angular/selects/option-highlight.directive.ts","../../../projects/design-factory/src/lib/angular/selects/events/manage-badge-events.directive.ts","../../../projects/design-factory/src/lib/angular/selects/select.module.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.service.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.directive.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.component.ts","../../../projects/design-factory/src/lib/angular/stepper/stepper.component.html","../../../projects/design-factory/src/lib/angular/stepper/stepper.module.ts","../../../projects/design-factory/src/lib/angular/tooltip/truncate/tooltipTruncate.directive.ts","../../../projects/design-factory/src/lib/angular/tooltip/tooltip.module.ts","../../../projects/design-factory/src/lib/angular/sidenav/sidenav.module.ts","../../../projects/design-factory/src/lib/angular/card/manage-card-selection.directive.ts","../../../projects/design-factory/src/lib/angular/card/card-advanced.module.ts","../../../projects/design-factory/src/lib/angular/df.module.ts","../../../projects/design-factory/src/lib/angular/waves-of-progress/waves.directive.ts","../../../projects/design-factory/src/lib/angular/waves-of-progress/waves.module.ts","../../../projects/design-factory/src/lib/index.ts","../../../projects/design-factory/src/index.ts","../../../projects/design-factory/src/design-factory.ts"],"sourcesContent":["import { Directive, ElementRef, signal, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[dfSkipLink]',\n host: {\n class: 'list-group-item list-group-item-action',\n '(focus)': 'inFocus.set(true)',\n '(click)': 'focusOnTarget()',\n '(blur)': 'inFocus.set(false)'\n }\n})\nexport class SkipLinkDirective {\n readonly inFocus = signal(false);\n\n private readonly element = inject(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n focusOnTarget() {\n const href = String(this.element.nativeElement.getAttribute('href'));\n const parts = href.split('#');\n if (parts.length < 2) {\n return;\n }\n const id = parts.pop();\n if (!id) {\n return;\n }\n setTimeout(() => {\n const target = this.document.getElementById(id);\n if (target) {\n target.focus();\n this.inFocus.set(false);\n }\n });\n }\n}\n","import { SkipLinkDirective } from '../../directives/skip-link.directive';\nimport { Component, ChangeDetectionStrategy, contentChildren, computed } from '@angular/core';\n\n@Component({\n selector: 'df-skip-links-container',\n templateUrl: './skip-links-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkipLinksContainerComponent {\n private readonly links = contentChildren(SkipLinkDirective);\n readonly inFocus = computed(() => this.links().some((link) => link.inFocus()));\n}\n","<section class=\"df-skip-links__section\">\n <div class=\"df-skip-links\">\n <div class=\"df-skip-links-wrap list-group\" [class.focus]=\"inFocus()\">\n <ng-content></ng-content>\n </div>\n </div>\n</section>\n","import { NgModule } from '@angular/core';\nimport { SkipLinksContainerComponent } from './components/skip-links-container/skip-links-container.component';\nimport { SkipLinkDirective } from './directives/skip-link.directive';\n\nexport { SkipLinksContainerComponent } from './components/skip-links-container/skip-links-container.component';\nexport { SkipLinkDirective } from './directives/skip-link.directive';\n@NgModule({\n imports: [SkipLinkDirective, SkipLinksContainerComponent],\n exports: [SkipLinkDirective, SkipLinksContainerComponent]\n})\nexport class DfAccessibilityModule {\n}\n","import { Directive, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\n\n@Directive({\n selector: 'ngb-alert[dfInsertAlertIcon],ngb-toast[dfInsertToastIcon]',\n host: {\n ngSkipHydration: 'true'\n }\n})\nexport class DfInsertIconDirective implements AfterViewInit {\n private readonly supportedCmps = ['alert', 'toast'];\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2\n ) {}\n\n ngAfterViewInit() {\n const cssClasses = this.el.nativeElement.classList;\n\n // we create the HTML icon element with the renderer\n const iconEl = this.renderer.createElement('span');\n this.renderer.addClass(iconEl, 'df-insert-icon');\n this.renderer.addClass(iconEl, this.getIconClassFromClasses(cssClasses));\n this.renderer.setAttribute(iconEl, 'aria-hidden', 'true');\n\n // we insert the icon element inside the DOM of the alert element\n this.renderer.insertBefore(this.el.nativeElement, iconEl, this.el.nativeElement.firstChild);\n }\n\n getIconClassFromClasses(cssClasses: DOMTokenList): string {\n const cmp = this.supportedCmps.find((cmp) => cssClasses.contains(cmp));\n if (cmp) {\n if (cssClasses.contains(`${cmp}-success`)) {\n return 'fa-check-circle';\n }\n if (cssClasses.contains(`${cmp}-warning`)) {\n return 'fa-exclamation-triangle';\n }\n if (cssClasses.contains(`${cmp}-danger`)) {\n return 'fa-minus-circle';\n }\n if (cssClasses.contains(`${cmp}-tip`)) {\n return 'fa-lightbulb';\n }\n }\n return 'fa-info-circle';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfInsertIconDirective } from './insert-icon.directive';\n\nexport { DfInsertIconDirective } from './insert-icon.directive';\n\n\n@NgModule({\n imports: [DfInsertIconDirective],\n exports: [DfInsertIconDirective]\n})\nexport class DfInsertIconModule {\n}\n","import { NgModule } from '@angular/core';\nimport { NgbToastModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfInsertIconModule } from '../icon/insert/insert-icon.module';\n\n@NgModule({\n imports: [DfInsertIconModule],\n exports: [NgbToastModule, DfInsertIconModule]\n})\nexport class DfToastModule {\n}\n","import { NgModule } from '@angular/core';\nimport { NgbAlertModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfInsertIconModule } from '../icon/insert/insert-icon.module';\n\n@NgModule({\n imports: [DfInsertIconModule],\n exports: [NgbAlertModule, DfInsertIconModule]\n})\nexport class DfAlertModule {\n}\n","import { Directive, HostListener, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[dfTriggerClick]'\n})\nexport class DfTriggerClickDirective {\n constructor(private readonly elementRef: ElementRef) {}\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n triggerClick(event: KeyboardEvent | MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n this.elementRef.nativeElement.click();\n }\n}\n","import { Directive, ElementRef, Renderer2, OnInit, DoCheck, OnDestroy, input, inject } from '@angular/core';\n\nexport type DfDirection = 'append' | 'prepend';\n\n/**\n * dfInputIcon directive\n * @deprecated `DfInputIconDirective` is deprecated and will be removed in DF 21, in favor of pure css.\n * To migrate and keep the same behavior, simply add the class `df-input-withicon` to the input element this directive was used on and remove the directive.\n */\n@Directive({\n exportAs: 'dfInputIcon',\n selector: '[dfInputIcon]',\n host: {\n '(blur)': 'onBlur()',\n '(focus)': 'onFocus()',\n '(keydown.Tab)': 'onTab($event)'\n }\n})\nexport class DfInputIconDirective implements OnInit, DoCheck, OnDestroy {\n readonly dfInputIcon = input.required<DfDirection[]>();\n\n // Button that is in case of input with prepend buttn\n private button: any;\n private removeListener?: () => void;\n private isDisabled = false;\n private readonly siblingsNode: any[] = [];\n\n private readonly renderer = inject(Renderer2);\n private readonly el = inject(ElementRef);\n\n ngDoCheck() {\n if (this.el.nativeElement.disabled !== this.isDisabled) {\n this.isDisabled = this.el.nativeElement.disabled;\n this.siblingsNode.forEach((siblings) => {\n if (this.isDisabled) {\n this.renderer.addClass(siblings, 'df-disabled');\n } else {\n this.renderer.removeClass(siblings, 'df-disabled');\n }\n });\n }\n }\n\n ngOnInit() {\n this.renderer.addClass(this.el.nativeElement, 'df-input-withicon');\n this.dfInputIcon().forEach((direction) => {\n this.renderer.addClass(this.el.nativeElement, direction.toString());\n this.renderer.addClass(this.el.nativeElement.parentNode, `df-input-${direction}`);\n const sibling = this.el.nativeElement.parentNode.querySelector(`.input-group-${direction}`);\n if (sibling) {\n this.siblingsNode.push(sibling);\n if (direction.toString() === 'prepend') {\n this.button = sibling.querySelector('button');\n if (this.button) {\n this.initButtonHandler();\n }\n }\n }\n });\n }\n\n /**\n * onBlur catch blur event to set the focused to false\n */\n onBlur() {\n this.renderer.removeClass(this.el.nativeElement.parentNode, 'df-focused');\n }\n\n onFocus() {\n this.renderer.addClass(this.el.nativeElement.parentNode, 'df-focused');\n }\n\n onTab(e: KeyboardEvent) {\n if (this.button) {\n e.preventDefault();\n this.button.focus();\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n }\n }\n\n ngOnDestroy() {\n if (this.removeListener) {\n this.removeListener();\n }\n }\n\n private initButtonHandler() {\n this.renderer.setAttribute(this.button, 'tabindex', '-1');\n this.removeListener = this.renderer.listen(this.button, 'blur', () => {\n setTimeout(() => {\n this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');\n });\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfTriggerClickDirective } from './click/trigger-click.directive';\nimport { DfInputIconDirective } from './icon/inputicon.directive';\n\nexport { DfTriggerClickDirective } from './click/trigger-click.directive';\nexport { DfInputIconDirective } from './icon/inputicon.directive';\n\n@NgModule({\n imports: [DfTriggerClickDirective, DfInputIconDirective],\n exports: [DfTriggerClickDirective, DfInputIconDirective]\n})\nexport class DfAdvancedInputModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbDatepicker, NgbDatepickerKeyboardService } from '@ng-bootstrap/ng-bootstrap';\n\nconst Key = {\n PageUp: 'PageUp',\n PageDown: 'PageDown',\n End: 'End',\n Home: 'Home'\n};\n\n@Injectable()\nexport class DfDatepickerKeyboardService extends NgbDatepickerKeyboardService {\n override processKey(event: KeyboardEvent, dp: NgbDatepicker) {\n const { state, calendar } = dp;\n switch (event.code) {\n case Key.PageUp:\n dp.focusDate(calendar.getPrev(state.focusedDate, event.altKey ? 'y' : 'm'));\n break;\n case Key.PageDown:\n dp.focusDate(calendar.getNext(state.focusedDate, event.altKey ? 'y' : 'm'));\n break;\n case Key.End:\n dp.focusDate(event.altKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n dp.focusDate(event.altKey ? state.minDate : state.firstDate);\n break;\n default:\n super.processKey(event, dp);\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Injectable, ElementRef } from '@angular/core';\n\nexport enum RightToLeftDirectionEnum {\n LeftToRight = 'ltr',\n RightToLeft = 'rtl',\n Auto = 'auto'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfDirectionDetectionService {\n getPageDirection(element: ElementRef): string {\n let curElement = element.nativeElement;\n while (curElement !== null) {\n if (curElement.getAttribute('dir') === RightToLeftDirectionEnum.RightToLeft) {\n return RightToLeftDirectionEnum.RightToLeft;\n } else if (curElement.getAttribute('dir') === RightToLeftDirectionEnum.LeftToRight) {\n return RightToLeftDirectionEnum.LeftToRight;\n }\n curElement = curElement.parentElement;\n }\n return RightToLeftDirectionEnum.LeftToRight;\n }\n}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n inject,\n PLATFORM_ID\n} from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../right-to-left/directionDetection.service';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * My dfDatepickerRange directive\n */\n@Directive({\n exportAs: 'dfDatepickerRange',\n selector: '[dfDatepickerRange]'\n})\nexport class DfDatepickerRangeDirective implements OnInit, OnDestroy, DoCheck, AfterViewInit {\n private inputsElements!: HTMLInputElement[];\n private isDisabled = false;\n private readonly siblingsNode: Element[] = [];\n private readonly removeListener: (() => void)[] = [];\n private focusState: boolean[] = [];\n private direction?: string;\n\n private readonly renderer = inject(Renderer2);\n readonly el = inject(ElementRef);\n private readonly dfDirectionServ = inject(DfDirectionDetectionService);\n private readonly platformId = inject(PLATFORM_ID);\n\n ngOnInit() {\n this.renderer.addClass(this.el.nativeElement, 'df-input-datepicker-range');\n if (isPlatformBrowser(this.platformId)) {\n this.inputsElements = [...this.el.nativeElement.querySelectorAll('input')];\n } else {\n this.inputsElements = [];\n }\n if (this.inputsElements.length === 2) {\n this.inputsElements.forEach((el, index) => this.initInput(el, index));\n }\n }\n\n initInput(el: HTMLInputElement, index: number) {\n this.renderer.addClass(el, 'df-input-withicon');\n this.renderer.addClass(el, 'append');\n this.renderer.addClass(el.parentNode, 'df-input-append');\n const sibling = el.parentNode!.querySelector('.input-group-append');\n if (sibling) {\n this.siblingsNode.push(sibling);\n }\n this.removeListener.push(\n this.renderer.listen(el, 'focus', () => {\n this.focusState[index] = true;\n this.renderer.addClass(this.el.nativeElement, 'df-focused');\n })\n );\n this.removeListener.push(\n this.renderer.listen(el, 'blur', () => {\n this.focusState[index] = false;\n setTimeout(() => this.removeFocus(), 10);\n })\n );\n }\n\n removeFocus() {\n if (!this.focusState.reduce((prev, curr) => prev || curr)) {\n this.renderer.removeClass(this.el.nativeElement, 'df-focused');\n }\n }\n\n ngAfterViewInit() {\n this.updateDirection();\n }\n\n /**\n * You need to manually update the direction or update the icon\n * if the direction (rtl / ltr) is changing dynamically\n */\n updateDirection() {\n const currentDirection = this.dfDirectionServ.getPageDirection(this.el);\n if (this.direction !== currentDirection) {\n this.direction = currentDirection;\n const icon =\n this.el.nativeElement.querySelector('.fa-long-arrow-right') ||\n this.el.nativeElement.querySelector('.fa-long-arrow-left');\n if (icon) {\n if (currentDirection === RightToLeftDirectionEnum.RightToLeft) {\n this.renderer.removeClass(icon, 'fa-long-arrow-right');\n this.renderer.addClass(icon, 'fa-long-arrow-left');\n } else {\n this.renderer.removeClass(icon, 'fa-long-arrow-left');\n this.renderer.addClass(icon, 'fa-long-arrow-right');\n }\n }\n }\n }\n\n ngDoCheck() {\n // Update this to support disabled\n const currentStatus = this.inputsElements.reduce((prev, current) => prev || current.disabled, false);\n if (this.isDisabled !== currentStatus) {\n this.isDisabled = currentStatus;\n this.siblingsNode.forEach((siblings) => {\n if (this.isDisabled) {\n this.renderer.addClass(siblings, 'df-disabled');\n } else {\n this.renderer.removeClass(siblings, 'df-disabled');\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.removeListener.forEach((item) => item());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgbCalendar, NgbDate, NgbDateParserFormatter, NgbDatepicker, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\n@Injectable()\nexport class DfDatepickerRangeService {\n fromDate: NgbDate | null = null;\n toDate: NgbDate | null = null;\n hoveredDate: NgbDate | null = null;\n fromDateAsStr = '';\n toDateAsStr = '';\n startDate: NgbDate | null = null;\n getFocusBack: HTMLInputElement | HTMLButtonElement | null = null;\n dropDown?: NgbDropdown;\n isClosingOnToDate = true;\n datepicker: NgbDatepicker | null = null;\n\n constructor(\n private readonly calendar: NgbCalendar,\n private readonly formatter: NgbDateParserFormatter\n ) {}\n\n onDateSelection(date: NgbDate) {\n if (!this.fromDate && !this.toDate) {\n this.fromDate = date;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n } else if (this.fromDate && !this.toDate && (date.equals(this.fromDate) || date.after(this.fromDate))) {\n this.toDate = date;\n this.toDateAsStr = this.formatter.format(this.toDate);\n if (this.isClosingOnToDate && this.dropDown) {\n this.dropDown.close();\n }\n } else {\n this.toDate = null;\n this.toDateAsStr = '';\n this.fromDate = date;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n }\n\n setFocus() {\n if (this.datepicker) {\n this.datepicker.focus();\n }\n }\n\n returnFocus() {\n if (this.getFocusBack !== null) {\n this.getFocusBack.focus();\n }\n }\n\n openChange(event: boolean) {\n if (event) {\n this.setFocus();\n } else {\n this.returnFocus();\n }\n }\n\n toggle(\n dropDown: NgbDropdown,\n element: HTMLInputElement | HTMLButtonElement | null = null,\n datepicker: NgbDatepicker | null = null\n ) {\n this.getFocusBack = element;\n this.dropDown = dropDown;\n this.datepicker = datepicker;\n dropDown.toggle();\n }\n\n isSelected(date: NgbDate): boolean {\n return date.equals(this.fromDate) || date.equals(this.toDate);\n }\n\n isFrom(date: NgbDate): boolean {\n return date.equals(this.fromDate) && !date.equals(this.toDate);\n }\n\n isTo(date: NgbDate): boolean {\n const toDate = this.effectiveToDate();\n return !date.equals(this.fromDate) && date.equals(toDate);\n }\n\n isBetween(date: NgbDate): boolean {\n const toDate = this.effectiveToDate();\n return date.after(this.fromDate) && date.before(toDate);\n }\n\n effectiveToDate(): NgbDate | null | undefined {\n return !this.toDate && this.hoveredDate ? this.hoveredDate : this.toDate;\n }\n\n parseInput(previous: NgbDate, typed: string): NgbDate | null {\n const parsed = this.formatter.parse(typed);\n return parsed && this.calendar.isValid(NgbDate.from(parsed)) ? NgbDate.from(parsed) : previous;\n }\n\n updateFrom(typed: string) {\n this.fromDate = this.fromDate ? this.parseInput(this.fromDate, typed) : null;\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n\n updateTo(typed: string) {\n this.toDate = this.toDate ? this.parseInput(this.toDate, typed) : null;\n this.toDateAsStr = this.formatter.format(this.toDate);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgbDatepickerModule, NgbDatepickerKeyboardService, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfAdvancedInputModule } from '../inputs/input-advanced.module';\nimport { DfDatepickerKeyboardService } from './datepicker-keyboard-nav.service';\nimport { DfDatepickerRangeDirective } from './datepicker-range.directive';\nimport { DfDatepickerRangeService } from './datepicker-range.service';\n\nexport { DfDatepickerRangeDirective } from './datepicker-range.directive';\n\n@NgModule({\n imports: [NgbDropdownModule, DfDatepickerRangeDirective],\n exports: [NgbDatepickerModule, DfAdvancedInputModule, DfDatepickerRangeDirective, NgbDropdownModule],\n providers: [\n { provide: NgbDatepickerKeyboardService, useClass: DfDatepickerKeyboardService },\n DfDatepickerRangeService\n ]\n})\nexport class DfDatePickerModule {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, Observable, Subscription } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n// Default DF breakpoints\nexport const DF_BREAKPOINTS_VAR_DEFAULT = {\n xs: '--df-breakpoint-xs',\n sm: '--df-breakpoint-sm',\n md: '--df-breakpoint-md',\n lg: '--df-breakpoint-lg',\n xl: '--df-breakpoint-xl',\n xxl: '--df-breakpoint-xxl',\n xxxl: '--df-breakpoint-xxxl'\n};\n\nexport const BREAKPOINTS_VARS = new InjectionToken('Bootstrap Breakpoints', {\n providedIn: 'root',\n factory() {\n return DF_BREAKPOINTS_VAR_DEFAULT;\n }\n});\n\n@Injectable({ providedIn: 'root' })\nexport class DfBreakpoints {\n private readonly _breakPoints$ = new BehaviorSubject<{} | null>(null);\n\n constructor(\n @Inject(BREAKPOINTS_VARS) private readonly _breakPointsVar: { [breakpoint: string]: string },\n @Inject(PLATFORM_ID) private readonly platformID: Object\n ) {\n this.initBreakpoints();\n }\n\n get breakPoints$(): Observable<{} | null> {\n return this._breakPoints$.asObservable();\n }\n\n private initBreakpoints() {\n let breakPoints = null;\n if (isPlatformBrowser(this.platformID) && this._breakPoints$.value === null) {\n // we are in a browser so CSS variable are accessible\n // we init the BP only once\n const styles = window.getComputedStyle(document.documentElement) as any;\n const bpArray = [];\n for (const el of Object.keys(this._breakPointsVar)) {\n const curValue = this._breakPointsVar[el];\n const bpValue = Number.parseInt(styles.getPropertyValue(curValue), 10);\n if (isNaN(bpValue)) {\n // We should never enter here. Only if people did not put the correct list of CSS vars...\n // Or if the CSS is not arrived yet.\n // What should we do then?\n // TODO init from the default list provided if we want to?\n } else {\n bpArray.push([el, bpValue]);\n }\n }\n breakPoints = this.generate(bpArray);\n // In case the first page contains the directive and the CSS vars are not available\n // We may need to launch a second init at load time.\n if (Object.keys(breakPoints).length === 0) {\n fromEvent(window, 'load')\n .pipe(take(1))\n .subscribe(() => {\n // Init once as the service is available everywhere\n // We do not check if the CSS variable are changing over time\n // here onload the CSS var should be available\n this.initBreakpoints();\n });\n }\n }\n this._breakPoints$.next(breakPoints);\n }\n\n // Utilities to use if you want to create your own queries with your values.\n // sizes is an array of array BreakPoints with sizes[0] --> identifier of the BreakPoint\n // sizes[1] px value of the BreakPoint\n generate(sizes: any[][]): {} {\n sizes = sizes.sort((a, b) => a[1] - b[1]);\n const dict: { [key: string]: string } = {};\n for (let i = 0; i < sizes.length; i++) {\n const name = sizes[i][0];\n const min = sizes[i][1];\n const max = i === sizes.length - 1 ? undefined : sizes[i + 1][1];\n if (min === 0) {\n dict[name] = `(max-width: ${max - 0.01}px)`;\n } else if (max) {\n dict[name] = `(max-width: ${max - 0.01}px) and (min-width: ${min}px)`;\n } else {\n dict[name] = `(min-width: ${min}px)`;\n }\n }\n return dict;\n }\n}\n\nexport interface MediaQueryListMeta {\n mediaQueryList: MediaQueryList;\n mediaQueryList$: BehaviorSubject<MediaQueryListEvent>;\n}\n\nexport interface MediaBreakpointsState {\n matches: boolean;\n breakpoints: { [key: string]: boolean };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DfMediaQuery {\n private readonly _isBrowser: boolean;\n\n constructor(@Inject(PLATFORM_ID) platformId: Object) {\n this._isBrowser = isPlatformBrowser(platformId);\n }\n\n notSupported(query: string): Partial<MediaQueryList> {\n return { matches: false, media: query, addEventListener: () => {}, removeEventListener: () => {} };\n }\n\n matchMedia(query: string): MediaQueryList {\n if (this._isBrowser && window.matchMedia) {\n return window.matchMedia(query);\n } else {\n return this.notSupported(query) as MediaQueryList;\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DfMediaObserver implements OnDestroy {\n private readonly _subscription: Subscription = new Subscription();\n\n private readonly _queries = new Map<string, MediaQueryListMeta>();\n\n constructor(private readonly _mediaQuery: DfMediaQuery) {}\n\n /**\n * Verifies if at least one of the provided media-queries is matching\n * the current viewport\n */\n matches(queries: string[] | string): boolean {\n queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);\n return queries.some(q => this._registerQuery(q)!.mediaQueryList.matches);\n }\n\n /**\n * Produces an observable for a set of media-queries that will emit\n * meta information for any changes of the given queries.\n * @param value One or more media-queries to be observed.\n * @returns A stream of matches meta object for the given media-queries.\n */\n observe(queries: string | string[]): Observable<MediaBreakpointsState> {\n queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);\n return combineLatest(queries.map(q => this._registerQuery(q)!.mediaQueryList$)).pipe(\n map(\n (events: MediaQueryListEvent[]): MediaBreakpointsState =>\n events.reduce(\n (result, event) => {\n result.matches = result.matches || event.matches;\n result.breakpoints[event.media] = event.matches;\n return result;\n },\n { matches: false, breakpoints: {} } as MediaBreakpointsState\n )\n )\n );\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n\n private _flattenQueries(queries: string[]): string[] {\n return queries.map(q => q.split(',')).reduce((flat, a) => flat.concat(a));\n }\n\n private _registerQuery(query: string): MediaQueryListMeta | undefined {\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const queryList: MediaQueryList = this._mediaQuery.matchMedia(query);\n const queryList$ = new BehaviorSubject<MediaQueryListEvent>({\n media: query,\n matches: queryList.matches\n } as MediaQueryListEvent);\n this._subscription.add(\n fromEvent(queryList, 'change').subscribe((event: Event) => {\n queryList$.next(event as MediaQueryListEvent);\n })\n );\n const meta: MediaQueryListMeta = { mediaQueryList: queryList, mediaQueryList$: queryList$ };\n this._queries.set(query, meta);\n return meta;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap } from 'rxjs/operators';\nimport { DfBreakpoints, DfMediaObserver } from './mediaUtils.service';\n\n/**\n * Services you can use to get indication about the current width screen of your application\n * the matchMedia JS feature (https://developer.mozilla.org/fr/docs/Web/API/Window/matchMedia)\n */\n@Injectable({ providedIn: 'root' })\nexport class DfMedia {\n constructor(private readonly mediaObserver: DfMediaObserver, private readonly _breakPointsService: DfBreakpoints) {}\n\n initQueries(mediaOrBreakpoints: string | string[], breakPoints: { [key: string]: string } = {}): string[] {\n const queries: string[] = [];\n if (Array.isArray(mediaOrBreakpoints)) {\n for (const el of mediaOrBreakpoints) {\n queries.push(breakPoints[el] ? breakPoints[el] : el);\n }\n } else {\n queries.push(breakPoints[mediaOrBreakpoints] ? breakPoints[mediaOrBreakpoints] : mediaOrBreakpoints);\n }\n return queries;\n }\n\n /**\n * Getter to have the observable indication if you are or not in the current scope of your queries\n * If one queries is matching result is `True` otherwise result is `False`\n * @param mediaOrBreakpoints either media query string/Array of string or/and in case of BS usage a\n * string/Array of string of the breakpoints name (sm...).\n */\n getObservable(mediaOrBreakpoints: string | string[]): Observable<boolean> {\n return this._breakPointsService.breakPoints$.pipe(\n map(breakpoints => {\n return breakpoints ? this.initQueries(mediaOrBreakpoints, breakpoints) : this.initQueries(mediaOrBreakpoints);\n }),\n switchMap(query => {\n return this.mediaObserver.observe(query);\n }),\n map(value => value.matches),\n distinctUntilChanged()\n );\n }\n}\n","import { Directive, effect, inject, input, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\nimport { DfMedia } from './media.service';\nimport { Subscription } from 'rxjs';\n\n/**\n * Directive using the matchMedia JS feature (https://developer.mozilla.org/fr/docs/Web/API/Window/matchMedia)\n * to be able to add or remove an element like ngIf is doing.\n * Import DfMediaModule from DF to use all media elements provided\n */\n@Directive({ selector: '[dfIfMedia]' })\nexport class DfIfMediaDirective implements OnDestroy {\n private _viewInstance: ViewRef | null = null;\n\n /**\n * Input of the directive\n * @param mediaOrBreakpoints either media query string/Array of string or in case of BS usage a\n * string/Array of string of the breakpoints name (sm...).\n */\n readonly dfIfMedia = input.required<string | string[]>();\n\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _template = inject(TemplateRef);\n private readonly _mediaService = inject(DfMedia);\n private _subscription = new Subscription();\n\n constructor() {\n effect(() => {\n this._subscription.unsubscribe();\n this._subscription = this._mediaService.getObservable(this.dfIfMedia()).subscribe((matches) => {\n this.update(matches);\n });\n });\n }\n\n ngOnDestroy() {\n if (this._viewInstance) {\n this._viewContainerRef.clear();\n }\n this._subscription.unsubscribe();\n }\n\n private update(matches: boolean) {\n if (matches && this._viewInstance === null) {\n this._viewInstance = this._viewContainerRef.createEmbeddedView(this._template);\n } else if (!matches) {\n this._viewContainerRef.clear();\n this._viewInstance = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfIfMediaDirective } from './ifMedia.directive';\n\nexport { DfIfMediaDirective } from './ifMedia.directive';\n\n@NgModule({\n imports: [DfIfMediaDirective],\n exports: [DfIfMediaDirective]\n})\nexport class DfMediaModule {}\n","import { NgModule } from '@angular/core';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n imports: [DfMediaModule, NgbAccordionModule],\n exports: [DfMediaModule, NgbAccordionModule]\n})\nexport class DfFooterModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-amadeus-icon',\n styleUrls: ['./amadeus-icon.scss'],\n template: `\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 510.2 67.9\"\n style=\"enable-background:new 0 0 510.2 67.9;\"\n xml:space=\"preserve\"\n >\n <g id=\"Layer_2\"></g>\n <g id=\"Layer_1\">\n <path\n d=\"M269.7,0c-8.3,0-19.8,1.4-26.9,4v61.9c5.8,1.2,16.8,2,24.4,2c26,0,36.1-10.2,36.1-34.4C303.4,12.5,290.5,0,269.7,0\n M257.5,12.6c2.4-0.5,7-1.1,11.6-1.1c10.6,0,18.8,5.9,18.8,22c0,15.5-4.1,22.9-20.2,22.9c-5.2,0-10.3-0.8-10.3-0.8V12.6z\n M461.5,65.5c0,0,9,2.4,21.7,2.4c12,0,27-4.1,27-20.3c0-10.6-7.8-15.1-20.5-19.7c-6.9-2.5-12.7-4.8-12.7-9.5\n c0-2.3,1.7-6.7,10.5-6.7c8.2,0,16.6,3.8,16.6,3.8l3.7-10.8C505.2,3.4,497.2,0,486.1,0c-12.1,0-23.8,6.4-23.8,19.3\n c0,13.3,12.1,17.3,21.5,20.5c6.4,2.2,11.8,4.4,11.8,8.7c0,4.1-2.3,7.7-13.1,7.7c-8.9,0-18.3-2-18.3-2L461.5,65.5z M429.6,50.3\n c-3.5,1.7-11,4.5-17.9,4.5c-10,0-11.7-4.5-11.7-14.9V0.6h-2.2c-3.3,0-10.6,0.6-12.4,0.9v40.3c0,17.6,4.3,26,22.2,26\n c13.7,0,21.7-5.3,22.2-5.3c0.2,0,4.9,2.9,14.3,2.9v-64c-1-0.2-8.1-0.9-11.7-0.9h-2.9V50.3z M198.5,0c-13,0-23.2,3.2-27.1,5.2\n l3.1,10.9c0,0,10-3.6,19.8-3.6c8.4,0,12.7,2.4,12.7,10.6v4.7h-12.7c-21.6,0-28,9.9-28,20.8c0,14.5,11.3,19.1,21.6,19.1\n c12,0,18.9-5,19.8-5c0.7,0,3.1,2.6,14,2.6V19.3C221.7,5.5,213.1,0,198.5,0 M207.1,52.7c-3.1,1.2-10.7,3.7-16.2,3.7\n c-6,0-10.6-2.1-10.6-8.7c0-5.7,3.1-9,11.4-9.3l15.4-0.6V52.7z M32.2,0C19.2,0,9,3.2,5.1,5.2l3.1,10.9c0,0,10-3.6,19.8-3.6\n c8.4,0,12.7,2.4,12.7,10.6v4.7H28c-21.6,0-28,9.9-28,20.8c0,14.5,11.3,19.1,21.6,19.1c12,0,18.9-5,19.8-5c0.7,0,3.1,2.6,14,2.6\n V19.3C55.4,5.5,46.8,0,32.2,0 M40.9,52.7c-3.1,1.2-10.7,3.7-16.2,3.7c-6,0-10.6-2.1-10.6-8.7c0-5.7,3.1-9,11.4-9.3l15.4-0.6V52.7z\n M114,39c-0.4,0.9-0.8,2.7-1.1,3.8c-0.3-1-0.8-2.8-1.1-3.8L99,6.1C96.8,0.7,93.4,0,87.2,0c-2.2,0-6.6,0.3-6.6,0.3L74,66.9h14.6\n l3.2-44.7l13.9,33.8c1,2.6,3.1,3.7,7.3,3.7c4.1,0,6.2-1,7.3-3.7L134,22.2l3.2,44.7h14.6l-6.6-66.6c0,0-4.4-0.3-6.6-0.3\n c-6.2,0-9.6,0.7-11.8,6.1L114,39z M320.8,64.7c0,0,11.2,3.1,25.5,3.1c15.3,0,22.3-1.7,22.3-1.7V54.8c0,0-7.6,1.5-18.3,1.5\n c-9.3,0-15.1-1.2-15.1-1.2v-16h28.9V27.8h-28.9V12.5c0,0,5.7-1,14.1-1c9.5,0,18.1,1.5,18.1,1.5V1.6c0,0-7.5-1.6-19.8-1.6\n c-16.3,0-27,2.9-27,2.9V64.7z\"\n />\n </g>\n </svg>\n `\n})\nexport class DfAmadeusIconComponent {}\n","import { NgModule } from '@angular/core';\nimport { DfAmadeusIconComponent } from './amadeus-icon';\n\nexport { DfAmadeusIconComponent } from './amadeus-icon';\n\n@NgModule({\n imports: [DfAmadeusIconComponent],\n exports: [DfAmadeusIconComponent]\n})\nexport class DfIconModule {\n}\n","import { NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * @deprecated `DfModalService` is deprecated, use `NgbModal` from ng-bootstrap instead. \n * Please note that `NgbModal` adds 'modal-open' class to the body while DfModalService adds 'df-modal-open' class. Both classes include the same styles, but you may need to update your stylesheets if you were overriding 'df-modal-open' in your application.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfModalService {\n private renderer: Renderer2;\n\n constructor(\n private modalService: NgbModal,\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n open(content: any, options?: NgbModalOptions): NgbModalRef {\n let modalRef: NgbModalRef;\n if (options && options.container) {\n modalRef = this.modalService.open(content, options);\n } else {\n modalRef = this.modalService.open(content, Object.assign({}, { container: 'body' }, options));\n }\n // we add the 'df-modal-open' class to the body when the modal is open. We remove it when the modal is closed/dismissed\n this.renderer.addClass(document.body, 'df-modal-open');\n modalRef.result.then(\n () => {\n this.renderer.removeClass(document.body, 'df-modal-open');\n },\n () => {\n this.renderer.removeClass(document.body, 'df-modal-open');\n }\n );\n return modalRef;\n }\n}\n","import { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DfPopoverConfig extends NgbPopoverConfig {\n override autoClose = 'outside' as 'outside';\n}\n","import { NgModule } from '@angular/core';\nimport { NgbPopoverModule, NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { DfPopoverConfig } from './config/popover.config';\n\n@NgModule({\n exports: [NgbPopoverModule],\n providers: [{ provide: NgbPopoverConfig, useClass: DfPopoverConfig }]\n})\nexport class DfPopoverModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n signal,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-progressbar',\n templateUrl: 'progressbar.component.html'\n})\nexport class DfProgressbarComponent implements OnInit, OnDestroy {\n readonly PERCENTAGE_PLACEHOLDER = '%PERCENTAGE%';\n readonly FADING_DELAY_MS = 1500; // if triggered by observables, number of milliseconds after progress bar disappears once stopped\n\n readonly infiniteAnimation = input(false, { transform: booleanAttribute });\n\n /**\n * Current value of the progressBar. If 'maxValue' is not defined, value represents a percentage. Otherwise, progress\n * bar percentage value will be computed based on the ratio of 'value/maxValue'\n */\n readonly value = input(0, { transform: numberAttribute });\n readonly maxValue = input(100, { transform: numberAttribute });\n readonly innerValue = signal(0);\n\n readonly percentageValue = computed(() => {\n const val = this.innerValue();\n const maxVal = this.maxValue();\n if (val > maxVal) {\n return 100;\n } else {\n return Math.floor((val / maxVal) * 100);\n }\n });\n\n readonly percentageValueChange = output<number>();\n\n /**\n * Observable used to trigger the start of the loading.\n * When emitting, progressbar will start to randomly increment toward 100%.\n */\n readonly start$ = input<Observable<any>>();\n\n /**\n * Observable used to trigger the end of the loading.\n * When emitting, it forces the progressbar to reach 100%.\n */\n readonly end$ = input<Observable<any>>();\n\n /**\n * Id of the label used to describe the progress bar.\n * It is used in priority compared to the ariaLabel.\n */\n readonly ariaLabelledBy = input<string>();\n\n /**\n * Aria label used to describe the progress bar if no ariaLabelledBy is specified.\n */\n readonly ariaLabel = input<string>();\n\n readonly text = input('');\n\n readonly computedText = computed(() => {\n const text = this.text();\n if (text.includes(this.PERCENTAGE_PLACEHOLDER)) {\n const advancementInPercents = `${Math.floor(this.percentageValue())}%`;\n return text.replace(this.PERCENTAGE_PLACEHOLDER, advancementInPercents);\n }\n return text;\n });\n\n readonly displayProgressBar = signal(false);\n private startSubscription?: Subscription;\n private endSubscription?: Subscription;\n private intervalId: any; // store the result of 'setInterval' function so that we can clear it onDestroy\n private animationOngoing = false;\n\n constructor() {\n effect(() => {\n this.innerValue.set(this.value());\n });\n effect(() => {\n this.percentageValueChange.emit(this.percentageValue());\n });\n }\n\n ngOnInit() {\n const start$ = this.start$();\n const end$ = this.end$();\n const isTriggeredByObservables = start$ && end$;\n if (isTriggeredByObservables) {\n this.startSubscription = start$.subscribe((_) => {\n this.animationOngoing = true;\n this.stopAutomaticIncrement();\n this.resetProgressBarValues();\n this.displayProgressBar.set(true);\n this.startAutomaticIncrement();\n });\n this.endSubscription = end$.subscribe((_) => {\n if (this.animationOngoing) {\n this.animationOngoing = false;\n this.stopAutomaticIncrement();\n this.innerValue.set(100);\n setTimeout(() => {\n this.displayProgressBar.set(false);\n }, this.FADING_DELAY_MS);\n }\n });\n } else {\n this.displayProgressBar.set(true);\n }\n }\n\n ngOnDestroy() {\n if (this.startSubscription) {\n this.startSubscription.unsubscribe();\n }\n if (this.endSubscription) {\n this.endSubscription.unsubscribe();\n }\n this.stopAutomaticIncrement();\n }\n\n /**\n * Randomly increase the percentage but making sure that it can never reach 100%\n */\n private increasePercentage() {\n const maximumReachableValue = 0.9 * this.maxValue();\n const remainingPercentage = maximumReachableValue - this.value();\n const averageIncreaseRatio = 0.015;\n const randomIncreaseRatio = Math.random() * 2 * averageIncreaseRatio;\n this.innerValue.update((val) => val + randomIncreaseRatio * remainingPercentage);\n }\n\n /**\n * Clears the 'setInterval' function so that the automatic increase of the progressbar stops\n */\n private stopAutomaticIncrement() {\n clearInterval(this.intervalId);\n }\n\n /**\n * Periodically calls a function which increments the value of the progressbar\n */\n private startAutomaticIncrement() {\n this.intervalId = setInterval(this.increasePercentage.bind(this), 50);\n }\n\n private resetProgressBarValues() {\n this.innerValue.set(0);\n }\n}\n","@if (displayProgressBar()) {\n @if (computedText(); as computedText) {\n <div class=\"progressbar-text mb-2\">{{ computedText }}</div>\n }\n @if (infiniteAnimation()) {\n <div\n class=\"progress\"\n role=\"progressbar\"\n aria-valuetext=\"indeterminate\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-label]=\"!ariaLabelledBy() && ariaLabel() ? ariaLabel() : null\"\n >\n <div class=\"progress-bar infinite-animation\"></div>\n </div>\n } @else {\n <div\n class=\"progress\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"innerValue()\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"maxValue()\"\n [attr.aria-valuetext]=\"computedText() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-label]=\"!ariaLabelledBy() && ariaLabel() ? ariaLabel() : null\"\n >\n <div [style.width.%]=\"percentageValue()\" class=\"progress-bar\"></div>\n </div>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfProgressbarComponent } from './progressbar.component';\nimport { NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';\n\nexport { DfProgressbarComponent } from './progressbar.component';\n\n@NgModule({\n imports: [DfProgressbarComponent],\n exports: [DfProgressbarComponent, NgbProgressbarModule]\n})\nexport class DfProgressbarModule {\n}\n","export interface DfProgressIndicatorOptions {\n /**\n * If `true`, the backdrop element will be created for a given progress indicator.\n * Default value is `true`.\n */\n backdrop?: boolean;\n\n /**\n * A selector specifying the progress indicator elements should be appended to.\n * If not specified, will be `body`.\n */\n container?: string | HTMLElement;\n\n /**\n * A custom class to append to the progress indicator container.\n */\n containerClass?: string;\n\n /**\n * Specify the position of the content in the container.\n */\n position?: DfProgressIndicatorContentPosition;\n\n /**\n * A custom class to append to the progress indicator backdrop.\n */\n backdropClass?: string;\n}\n\nexport enum DfProgressIndicatorContentType {\n SPINNER = 'spinner',\n PROGRESSBAR = 'progressbar'\n}\n\nexport class DfProgressIndicatorContentSpinner {\n readonly type = DfProgressIndicatorContentType.SPINNER;\n spinnerInput?: {\n contentClass?: string;\n ariaLabel?: string;\n };\n\n constructor(spinnerInput?: { contentClass?: string; ariaLabel?: string }) {\n this.spinnerInput = spinnerInput;\n }\n}\n\nexport class DfProgressIndicatorContentProgressBar {\n readonly type = DfProgressIndicatorContentType.PROGRESSBAR;\n progressBarInput?: {\n ariaLabel: string;\n };\n position: DfProgressIndicatorContentPosition;\n\n constructor(progressBarInput?: { ariaLabel: string }, position?: DfProgressIndicatorContentPosition) {\n this.progressBarInput = progressBarInput;\n this.position = position || DfProgressIndicatorContentPosition.TOP;\n }\n}\n\nexport enum DfProgressIndicatorContentPosition {\n TOP = 'top',\n BOTTOM = 'bottom',\n CENTERED = 'centered'\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n input,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport { DfProgressIndicatorContentPosition } from './progressindicator-config';\n\n@Component({\n selector: 'df-progressindicator-container',\n encapsulation: ViewEncapsulation.None,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfProgressIndicatorContainerComponent {\n private readonly DEFAULT_CLASS_POSITION = 'df-progressindicator-centered';\n\n readonly containerClass = input<string>();\n readonly position = input<DfProgressIndicatorContentPosition>();\n\n readonly positionClass = computed(() => {\n const position = this.position();\n switch (position) {\n case DfProgressIndicatorContentPosition.TOP:\n return 'df-progressindicator-top';\n case DfProgressIndicatorContentPosition.BOTTOM:\n return 'df-progressindicator-bottom';\n default:\n return this.DEFAULT_CLASS_POSITION;\n }\n });\n readonly classes = computed(\n () => `df-progressindicator-container ${this.containerClass() || ''} ${this.positionClass()}`\n );\n}\n","import { Component, ChangeDetectionStrategy, input, booleanAttribute } from '@angular/core';\n\n@Component({\n selector: 'df-default-spinner',\n templateUrl: './default-spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DfDefaultSpinnerComponent {\n readonly isGlobalSpinner = input(false, { transform: booleanAttribute });\n readonly contentClass = input('spinner-border text-primary');\n readonly ariaLabel = input<string>();\n}\n","<div [class]=\"contentClass()\" [attr.role]=\"isGlobalSpinner() ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel(); as ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'df-progressindicator-backdrop',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfProgressIndicatorBackdropComponent {\n readonly backdropClass = input<string>();\n readonly isGlobalBackdrop = input(true);\n\n readonly classes = computed(\n () =>\n `df-progressindicator-backdrop ${this.backdropClass() || ''} df-progressindicator-backdrop${\n this.isGlobalBackdrop() ? '-global' : '-contextual'\n }`\n );\n}\n","import { ComponentRef, EmbeddedViewRef } from '@angular/core';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\n\nexport class DfProgressIndicatorRef {\n constructor(\n public containerRef: ComponentRef<DfProgressIndicatorContainerComponent>,\n public contentRef: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n public backdropRef?: ComponentRef<DfProgressIndicatorBackdropComponent>\n ) {}\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nconst noop = () => {};\n\n/** Type for the callback used to revert the scrollbar compensation. */\nexport type CompensationReverter = () => void;\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n *\n * It is a copy of https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/scrollbar.ts\n */\n@Injectable({ providedIn: 'root' })\nexport class ScrollBar {\n constructor(@Inject(DOCUMENT) private readonly _document: any) {}\n\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n compensate(): CompensationReverter {\n const width = this._getWidth();\n return !this._isPresent(width) ? noop : this._adjustBody(width);\n }\n\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n private _adjustBody(scrollbarWidth: number): CompensationReverter {\n const body = this._document.body;\n const userSetPaddingStyle = body.style.paddingRight;\n const paddingRight = 'padding-right';\n const actualPadding = parseFloat(window.getComputedStyle(body)[paddingRight as any]);\n body.style[paddingRight] = `${actualPadding + scrollbarWidth}px`;\n return () => (body.style[paddingRight] = userSetPaddingStyle);\n }\n\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n private _isPresent(scrollbarWidth: number): boolean {\n const rect = this._document.body.getBoundingClientRect();\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n const uncertainty = 0.1 * scrollbarWidth;\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\n }\n\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n private _getWidth(): number {\n const measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n\n const body = this._document.body;\n body.appendChild(measurer);\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n\n return width;\n }\n}\n","import {\n ComponentFactoryResolver,\n Injectable,\n RendererFactory2,\n Renderer2,\n Inject,\n ApplicationRef,\n Injector,\n EmbeddedViewRef,\n ComponentRef,\n Type,\n TemplateRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport {\n DfProgressIndicatorOptions,\n DfProgressIndicatorContentSpinner,\n DfProgressIndicatorContentProgressBar\n} from './progressindicator-config';\nimport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nimport { DfProgressIndicatorRef } from './progressindicator-ref';\nimport { DfProgressbarComponent } from '../progressbar/progressbar.component';\nimport { ScrollBar } from '../utils/scrollbar.service';\n\nexport type DfProgressIndicatorContent<T> =\n | undefined\n | TemplateRef<T>\n | Type<T>\n | DfProgressIndicatorContentSpinner\n | DfProgressIndicatorContentProgressBar;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfProgressIndicatorService {\n private readonly renderer: Renderer2;\n private readonly BODY_CLASS = 'df-progressindicator-open';\n // TODO - Remove it when https://github.com/angular/angular/issues/22567\n private readonly containerAttributes = ['containerClass', 'position'];\n private readonly backdropAttributes = ['backdropClass', 'isGlobalBackdrop'];\n private readonly defaultSpinnerAttributes = ['contentClass', 'ariaLabel', 'isGlobalSpinner'];\n private readonly defaultProgressBarAttributes = ['infiniteAnimation', 'ariaLabel'];\n\n private readonly activeInstances: DfProgressIndicatorRef[] = [];\n\n constructor(\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly rendererFactory: RendererFactory2,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n private readonly injector: Injector,\n private readonly scrollbar: ScrollBar\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n open<T>(content: DfProgressIndicatorContent<T>, options?: DfProgressIndicatorOptions): DfProgressIndicatorRef {\n const containerElt = this.getContainer(this.document, options);\n if (!containerElt) {\n throw new Error(\n `[Design Factory] The specified progress indicator container \"${\n options?.container || 'body'\n }\" was not found in the DOM.`\n );\n }\n\n // Create needed components\n const backdropRef: ComponentRef<DfProgressIndicatorBackdropComponent> | undefined =\n options?.backdrop !== false\n ? this.createComponent(\n DfProgressIndicatorBackdropComponent,\n this.componentFactoryResolver,\n undefined,\n containerElt\n )\n : undefined;\n\n const contentRef = this.getContent(content, this.componentFactoryResolver, containerElt);\n const containerCmpRef: ComponentRef<DfProgressIndicatorContainerComponent> = this.createComponent(\n DfProgressIndicatorContainerComponent,\n this.componentFactoryResolver,\n contentRef,\n containerElt\n );\n\n const onDestroyOperations: (() => void)[] = [];\n\n // Add aria attributes on the container\n this.renderer.setAttribute(containerElt, 'aria-busy', 'true');\n onDestroyOperations.push(() => {\n this.renderer.removeAttribute(containerElt, 'aria-busy');\n });\n\n // Override some styles if body is the container\n if (containerElt === this.document.body) {\n const scrollCompensation = this.scrollbar.compensate();\n this.renderer.addClass(this.document.body, this.BODY_CLASS);\n this.renderer.setAttribute(this.document.body, 'aria-busy', 'true');\n\n onDestroyOperations.push(() => {\n scrollCompensation();\n this.renderer.removeClass(this.document.body, this.BODY_CLASS);\n });\n }\n\n if (onDestroyOperations.length > 0) {\n containerCmpRef.onDestroy(() => {\n onDestroyOperations.forEach((operation) => {\n operation();\n });\n });\n }\n\n // Force override of position in case of the use of a progress bar component\n if (content instanceof DfProgressIndicatorContentProgressBar) {\n options = {\n ...options,\n position: content.position\n };\n }\n\n // Apply options to the created components\n if (backdropRef) {\n this.applyOptions(backdropRef, this.backdropAttributes, {\n ...options,\n isGlobalBackdrop: containerElt === this.document.body\n });\n }\n this.applyOptions(containerCmpRef, this.containerAttributes, options);\n\n const progressIndicatorRef = new DfProgressIndicatorRef(containerCmpRef, contentRef, backdropRef);\n this.activeInstances.push(progressIndicatorRef);\n return progressIndicatorRef;\n }\n\n close(progressIndicatorRef: DfProgressIndicatorRef): void {\n const instanceIndex = this.activeInstances.indexOf(progressIndicatorRef);\n if (instanceIndex > -1) {\n Object.keys(progressIndicatorRef).forEach((key) => {\n const propertyValue = (progressIndicatorRef as unknown as { [key: string]: unknown })[key];\n if (propertyValue && propertyValue instanceof ComponentRef) {\n propertyValue.destroy();\n (progressIndicatorRef as unknown as { [key: string]: unknown })[key] = undefined;\n }\n });\n this.activeInstances.splice(instanceIndex, 1);\n } else {\n throw new Error(\n '[Design Factory] The specified progress indicator reference is no longer active and cannot be closed.'\n );\n }\n }\n\n /**\n * Retrieve container according to the desired options.\n */\n private getContainer(document: Document, options?: DfProgressIndicatorOptions): HTMLElement | null {\n if (options?.container instanceof HTMLElement) {\n return options.container;\n }\n return options?.container ? document.querySelector(options.container) : document.body;\n }\n\n private getContent<T>(\n content: DfProgressIndicatorContent<T>,\n cfr: ComponentFactoryResolver,\n container: HTMLElement\n ): ComponentRef<any> | EmbeddedViewRef<any> {\n if (!content) {\n return this.createComponent(DfDefaultSpinnerComponent, cfr);\n } else if (content instanceof DfProgressIndicatorContentSpinner) {\n const cmpRef = this.createComponent(DfDefaultSpinnerComponent, cfr);\n this.applyOptions(cmpRef, this.defaultSpinnerAttributes, {\n ...content.spinnerInput,\n isGlobalSpinner: container === this.document.body\n });\n return cmpRef;\n } else if (content instanceof DfProgressIndicatorContentProgressBar) {\n const cmpRef = this.createComponent(DfProgressbarComponent, cfr);\n this.applyOptions(cmpRef, this.defaultProgressBarAttributes, {\n ...content.progressBarInput,\n infiniteAnimation: true\n });\n return cmpRef;\n } else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView({} as T);\n this.appRef.attachView(viewRef);\n return viewRef;\n } else {\n return this.createComponent(content, cfr);\n }\n }\n\n private createComponent<T>(\n cmpType: Type<T>,\n cfr: ComponentFactoryResolver,\n childrenProjectables?: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n container?: HTMLElement\n ): ComponentRef<T> {\n const cmpFactory = cfr.resolveComponentFactory(cmpType);\n let cmpRef: ComponentRef<T>;\n if (childrenProjectables) {\n if (childrenProjectables instanceof ComponentRef) {\n cmpRef = cmpFactory.create(this.injector, [[childrenProjectables.location.nativeElement]]);\n } else {\n cmpRef = cmpFactory.create(this.injector, [childrenProjectables.rootNodes]);\n }\n } else {\n cmpRef = cmpFactory.create(this.injector);\n }\n this.appRef.attachView(cmpRef.hostView);\n if (container) {\n container.appendChild(cmpRef.location.nativeElement);\n }\n return cmpRef;\n }\n\n private applyOptions<T>(\n cmpRef: ComponentRef<T>,\n availableOptions: string[],\n options?: DfProgressIndicatorOptions | { [key: string]: unknown }\n ): void {\n if (options) {\n availableOptions.forEach((option: string) => {\n const optionValue = (options as { [key: string]: unknown })[option];\n if (optionValue !== null && optionValue !== undefined) {\n cmpRef.setInput(option, optionValue);\n }\n });\n }\n }\n}\n","import { Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { DfProgressIndicatorService, DfProgressIndicatorContent } from './progressindicator.service';\nimport { DfProgressIndicatorOptions } from './progressindicator-config';\nimport { DfProgressIndicatorRef } from './progressindicator-ref';\n\n@Directive({\n selector: '[dfProgressIndicator]'\n})\nexport class DfProgressIndicatorDirective {\n readonly dfProgressIndicator = input.required<boolean>();\n readonly dfProgressIndicatorConfig = input<{\n content?: DfProgressIndicatorContent<unknown>;\n options: DfProgressIndicatorOptions;\n }>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly progressService = inject(DfProgressIndicatorService);\n private progressIndicatorRef: DfProgressIndicatorRef | undefined;\n\n constructor() {\n effect(() => {\n if (this.dfProgressIndicator()) {\n untracked(() => {\n const config: DfProgressIndicatorOptions = {\n ...this.dfProgressIndicatorConfig()?.options,\n container: this.elementRef.nativeElement\n };\n this.progressIndicatorRef = this.progressService.open(this.dfProgressIndicatorConfig()?.content, config);\n });\n } else if (this.progressIndicatorRef) {\n this.progressService.close(this.progressIndicatorRef);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfProgressbarModule } from '../progressbar/progressbar.module';\nimport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nimport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nimport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nimport { DfProgressIndicatorDirective } from './progressindicator.directive';\n\nexport { DfProgressIndicatorContainerComponent } from './progressindicator-container.component';\nexport { DfDefaultSpinnerComponent } from './default/default-spinner.component';\nexport { DfProgressIndicatorBackdropComponent } from './progressindicator-backdrop.component';\nexport { DfProgressIndicatorDirective } from './progressindicator.directive';\n\n@NgModule({\n imports: [\n DfDefaultSpinnerComponent,\n DfProgressbarModule,\n DfProgressIndicatorBackdropComponent,\n DfProgressIndicatorContainerComponent,\n DfProgressIndicatorDirective\n ],\n exports: [\n DfProgressbarModule,\n DfProgressIndicatorContainerComponent,\n DfProgressIndicatorDirective,\n DfProgressIndicatorBackdropComponent,\n DfDefaultSpinnerComponent\n ]\n})\nexport class DfProgressIndicatorModule {}\n","import { Directive, ElementRef, OnInit, input, inject } from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../../right-to-left/directionDetection.service';\n\n/**\n * @deprecated DfSliderDirectionDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n selector: '[dfSliderDirection]'\n})\nexport class DfSliderDirectionDirective implements OnInit {\n // Workaround due to bad export on @angular-slider/ngx-slider and https://github.com/angular/angular/issues/8277\n readonly dfSliderDirection = input.required<any>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly rtlDirectionService = inject(DfDirectionDetectionService, { optional: true });\n\n ngOnInit() {\n if (this.rtlDirectionService) {\n const direction = this.rtlDirectionService.getPageDirection(this.elementRef);\n\n if (direction === RightToLeftDirectionEnum.RightToLeft) {\n this.dfSliderDirection().options.rightToLeft = true;\n }\n }\n }\n}\n","import { PointerType } from './pointer-type';\n\n/** Label type */\nexport enum LabelType {\n /** Label above low pointer */\n Low,\n /** Label above high pointer */\n High,\n /** Label for minimum slider value */\n Floor,\n /** Label for maximum slider value */\n Ceil,\n /** Label below legend tick */\n TickValue\n}\n\n/** Function to translate label value into text */\nexport type TranslateFunction = (value: number, label: LabelType) => string;\n/** Function to combind */\nexport type CombineLabelsFunction = (minLabel: string, maxLabel: string) => string;\n/** Function to provide legend */\nexport type GetLegendFunction = (value: number) => string;\nexport type GetStepLegendFunction = (step: CustomStepDefinition) => string;\n\n/** Function converting slider value to slider position */\nexport type ValueToPositionFunction = (val: number, minVal: number, maxVal: number) => number;\n\n/** Function converting slider position to slider value */\nexport type PositionToValueFunction = (percent: number, minVal: number, maxVal: number) => number;\n\n/**\n * Custom step definition\n *\n * This can be used to specify custom values and legend values for slider ticks\n */\nexport interface CustomStepDefinition {\n /** Value */\n value: number;\n /** Legend (label for the value) */\n legend?: string;\n}\n\n/** Slider options */\nexport class Options {\n /** Minimum value for a slider.\n Not applicable when using stepsArray. */\n floor?: number = 0;\n\n /** Maximum value for a slider.\n Not applicable when using stepsArray. */\n ceil?: number;\n\n /** Step between each value.\n Not applicable when using stepsArray. */\n step?: number = 1;\n\n /** The minimum range authorized on the slider.\n Applies to range slider only.\n When using stepsArray, expressed as index into stepsArray. */\n minRange?: number;\n\n /** The maximum range authorized on the slider.\n Applies to range slider only.\n When using stepsArray, expressed as index into stepsArray. */\n maxRange?: number;\n\n /** Set to true to have a push behavior. When the min handle goes above the max,\n the max is moved as well (and vice-versa). The range between min and max is\n defined by the step option (defaults to 1) and can also be overriden by\n the minRange option. Applies to range slider only. */\n pushRange?: boolean = false;\n\n /** The minimum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n minLimit?: number;\n\n /** The maximum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n maxLimit?: number;\n\n /** Custom translate function. Use this if you want to translate values displayed\n on the slider. */\n translate?: TranslateFunction;\n\n /** Custom function for combining overlapping labels in range slider.\n It takes the min and max values (already translated with translate fuction)\n and should return how these two values should be combined.\n If not provided, the default function will join the two values with\n ' - ' as separator. */\n combineLabels?: CombineLabelsFunction;\n\n /** Use to display legend under ticks (thus, it needs to be used along with\n showTicks or showTicksValues). The function will be called with each tick\n value and returned content will be displayed under the tick as a legend.\n If the returned value is null, then no legend is displayed under\n the corresponding tick.You can also directly provide the legend values\n in the stepsArray option. */\n getLegend?: GetLegendFunction;\n\n /** Use to display a custom legend of a stepItem from stepsArray.\n It will be the same as getLegend but for stepsArray. */\n getStepLegend?: GetStepLegendFunction;\n\n /** If you want to display a slider with non linear/number steps.\n Just pass an array with each slider value and that's it; the floor, ceil and step settings\n of the slider will be computed automatically.\n By default, the value model and valueHigh model values will be the value of the selected item\n in the stepsArray.\n They can also be bound to the index of the selected item by setting the bindIndexForStepsArray\n option to true. */\n stepsArray?: CustomStepDefinition[];\n\n /** Set to true to bind the index of the selected item to value model and valueHigh model. */\n bindIndexForStepsArray?: boolean = false;\n\n /** When set to true and using a range slider, the range can be dragged by the selection bar.\n Applies to range slider only. */\n draggableRange?: boolean = false;\n\n /** Same as draggableRange but the slider range can't be changed.\n Applies to range slider only. */\n draggableRangeOnly?: boolean = false;\n\n /** Set to true to always show the selection bar before the slider handle. */\n showSelectionBar?: boolean = false;\n\n /** Set to true to always show the selection bar after the slider handle. */\n showSelectionBarEnd?: boolean = false;\n\n /** Set a number to draw the selection bar between this value and the slider handle.\n When using stepsArray, expressed as index into stepsArray. */\n showSelectionBarFromValue?: number;\n\n /** Only for range slider. Set to true to visualize in different colour the areas\n on the left/right (top/bottom for vertical range slider) of selection bar between the handles. */\n showOuterSelectionBars?: boolean = false;\n\n /** Set to true to hide pointer labels */\n hidePointerLabels?: boolean = false;\n\n /** Set to true to hide min / max labels */\n hideLimitLabels?: boolean = false;\n\n /** Set to false to disable the auto-hiding behavior of the limit labels. */\n autoHideLimitLabels?: boolean = true;\n\n /** Set to true to make the slider read-only. */\n readOnly?: boolean = false;\n\n /** Set to true to disable the slider. */\n disabled?: boolean = false;\n\n /** Set to true to display a tick for each step of the slider. */\n showTicks?: boolean = false;\n\n /** Set to true to display a tick and the step value for each step of the slider.. */\n showTicksValues?: boolean = false;\n\n /* The step between each tick to display. If not set, the step value is used.\n Not used when ticksArray is specified. */\n tickStep?: number;\n\n /* The step between displaying each tick step value.\n If not set, then tickStep or step is used, depending on which one is set. */\n tickValueStep?: number;\n\n /** Use to display ticks at specific positions.\n The array contains the index of the ticks that should be displayed.\n For example, [0, 1, 5] will display a tick for the first, second and sixth values. */\n ticksArray?: number[];\n\n /** Used to display a tooltip when a tick is hovered.\n Set to a function that returns the tooltip content for a given value. */\n ticksTooltip?: (value: number) => string;\n\n /** Same as ticksTooltip but for ticks values. */\n ticksValuesTooltip?: (value: number) => string;\n\n /** Set to true to display the slider vertically.\n The slider will take the full height of its parent.\n Changing this value at runtime is not currently supported. */\n vertical?: boolean = false;\n\n /** Function that returns the current color of the selection bar.\n If your color won't change, don't use this option but set it through CSS.\n If the returned color depends on a model value (either value or valueHigh),\n you should use the argument passed to the function.\n Indeed, when the function is called, there is no certainty that the model\n has already been updated.*/\n getSelectionBarColor?: (minValue: number, maxValue?: number) => string;\n\n /** Function that returns the color of a tick. showTicks must be enabled. */\n getTickColor?: (value: number) => string;\n\n /** Function that returns the current color of a pointer.\n If your color won't change, don't use this option but set it through CSS.\n If the returned color depends on a model value (either value or valueHigh),\n you should use the argument passed to the function.\n Indeed, when the function is called, there is no certainty that the model has already been updated.\n To handle range slider pointers independently, you should evaluate pointerType within the given\n function where \"min\" stands for value model and \"max\" for valueHigh model values. */\n getPointerColor?: (value: number, pointerType: PointerType) => string;\n\n /** Handles are focusable (on click or with tab) and can be modified using the following keyboard controls:\n Left/bottom arrows: -1\n Right/top arrows: +1\n Page-down: -10%\n Page-up: +10%\n Home: minimum value\n End: maximum value\n */\n keyboardSupport?: boolean = true;\n\n /** If you display the slider in an element that uses transform: scale(0.5), set the scale value to 2\n so that the slider is rendered properly and the events are handled correctly. */\n scale?: number = 1;\n\n /** If you display the slider in an element that uses transform: rotate(90deg), set the rotate value to 90\n so that the slider is rendered properly and the events are handled correctly. Value is in degrees. */\n rotate?: number = 0;\n\n /** Set to true to force the value(s) to be rounded to the step, even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, they are not rounded\n and can be between two steps. */\n enforceStep?: boolean = true;\n\n /** Set to true to force the value(s) to be normalised to allowed range (floor to ceil), even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation. */\n enforceRange?: boolean = true;\n\n /** Set to true to force the value(s) to be rounded to the nearest step value, even when modified from the outside.\n When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation. */\n enforceStepsArray?: boolean = true;\n\n /** Set to true to prevent to user from switching the min and max handles. Applies to range slider only. */\n noSwitching?: boolean = false;\n\n /** Set to true to only bind events on slider handles. */\n onlyBindHandles?: boolean = false;\n\n /** Set to true to show graphs right to left.\n If vertical is true it will be from top to bottom and left / right arrow functions reversed. */\n rightToLeft?: boolean = false;\n\n /** Set to true to reverse keyboard navigation:\n Right/top arrows: -1\n Left/bottom arrows: +1\n Page-up: -10%\n Page-down: +10%\n End: minimum value\n Home: maximum value\n */\n reversedControls?: boolean = false;\n\n /** Set to true to keep the slider labels inside the slider bounds. */\n boundPointerLabels?: boolean = true;\n\n /** Set to true to use a logarithmic scale to display the slider. */\n logScale?: boolean = false;\n\n /** Function that returns the position on the slider for a given value.\n The position must be a percentage between 0 and 1.\n The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly. */\n customValueToPosition?: ValueToPositionFunction;\n\n /** Function that returns the value for a given position on the slider.\n The position is a percentage between 0 and 1.\n The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly. */\n customPositionToValue?: PositionToValueFunction;\n\n /** Precision limit for calculated values.\n Values used in calculations will be rounded to this number of significant digits\n to prevent accumulating small floating-point errors. */\n precisionLimit?: number = 12;\n\n /** Use to display the selection bar as a gradient.\n The given object must contain from and to properties which are colors. */\n selectionBarGradient?: {from: string, to: string};\n\n /** Use to add a label directly to the slider for accessibility. Adds the aria-label attribute. */\n ariaLabel?: string = 'ngx-slider';\n\n /** Use instead of ariaLabel to reference the id of an element which will be used to label the slider.\n Adds the aria-labelledby attribute. */\n ariaLabelledBy?: string;\n\n /** Use to add a label directly to the slider range for accessibility. Adds the aria-label attribute. */\n ariaLabelHigh?: string = 'ngx-slider-max';\n\n /** Use instead of ariaLabelHigh to reference the id of an element which will be used to label the slider range.\n Adds the aria-labelledby attribute. */\n ariaLabelledByHigh?: string;\n\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the handle */\n handleDimension?: number;\n\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the bar */\n barDimension?: number;\n\n /** Enable/disable CSS animations */\n animate?: boolean = true;\n\n /** Enable/disable CSS animations while moving the slider */\n animateOnMove?: boolean = false;\n}","/** Pointer type */\nexport enum PointerType {\n /** Low pointer */\n Min,\n /** High pointer */\n Max\n}","import { PointerType } from './pointer-type';\n\nexport class ChangeContext {\n value?: number;\n highValue?: number;\n pointerType?: PointerType;\n}","import { CustomStepDefinition } from './options';\n\n/**\n * Collection of functions to handle conversions/lookups of values\n */\nexport class ValueHelper {\n static isNullOrUndefined(value: any): boolean {\n return value === undefined || value === null;\n }\n\n static areArraysEqual(array1: any[], array2: any[]): boolean {\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let i: number = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n static linearValueToPosition(val: number, minVal: number, maxVal: number): number {\n const range: number = maxVal - minVal;\n return (val - minVal) / range;\n }\n\n static logValueToPosition(val: number, minVal: number, maxVal: number): number {\n val = Math.log(val);\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const range: number = maxVal - minVal;\n return (val - minVal) / range;\n }\n\n static linearPositionToValue(percent: number, minVal: number, maxVal: number): number {\n return percent * (maxVal - minVal) + minVal;\n }\n\n static logPositionToValue(percent: number, minVal: number, maxVal: number): number {\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const value: number = percent * (maxVal - minVal) + minVal;\n return Math.exp(value);\n }\n\n static findStepIndex(modelValue: number, stepsArray: CustomStepDefinition[]): number {\n const differences: number[] = stepsArray.map((step: CustomStepDefinition): number => Math.abs(modelValue - step.value));\n\n let minDifferenceIndex: number = 0;\n for (let index: number = 0; index < stepsArray.length; index++) {\n if (differences[index] !== differences[minDifferenceIndex] && differences[index] < differences[minDifferenceIndex]) {\n minDifferenceIndex = index;\n }\n }\n\n return minDifferenceIndex;\n }\n}","// Declaration for ResizeObserver a new API available in some of newest browsers:\n// https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\ndeclare class ResizeObserver {}\n\n/** Helper with compatibility functions to support different browsers */\nexport class CompatibilityHelper {\n /** Workaround for TouchEvent constructor sadly not being available on all browsers (e.g. Firefox, Safari) */\n public static isTouchEvent(event: any): boolean {\n if ((window as any).TouchEvent !== undefined) {\n return event instanceof TouchEvent;\n }\n\n return event.touches !== undefined;\n }\n\n /** Detect presence of ResizeObserver API */\n public static isResizeObserverAvailable(): boolean {\n if (typeof window === 'undefined') {\n return false;\n }\n return (window as any).ResizeObserver !== undefined;\n }\n}\n","/** Helper with mathematical functions */\nexport class MathHelper {\n /* Round numbers to a given number of significant digits */\n static roundToPrecisionLimit(value: number, precisionLimit: number): number {\n return +( value.toPrecision(precisionLimit) );\n }\n\n static isModuloWithinPrecisionLimit(value: number, modulo: number, precisionLimit: number): boolean {\n const limit: number = Math.pow(10, -precisionLimit);\n return Math.abs(value % modulo) <= limit || Math.abs(Math.abs(value % modulo) - modulo) <= limit;\n }\n\n static clampToRange(value: number, floor: number, ceil: number): number {\n return Math.min(Math.max(value, floor), ceil);\n }\n}","import { Subject, Subscription } from 'rxjs';\n\nexport class EventListener {\n eventName?: string;\n events?: Subject<Event>;\n eventsSubscription?: Subscription;\n teardownCallback?: () => void;\n}","import { Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { throttleTime, tap } from 'rxjs/operators';\nimport { EventListener } from './event-listener';\nimport { ValueHelper } from './value-helper';\n\nconst w: Window | any =\n typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\n\nlet passiveOptionAccessed = false;\nconst options = {\n get passive() {\n return (passiveOptionAccessed = true);\n }\n};\nconst noop = () => {};\nw.addEventListener && w.addEventListener('p', noop, options);\nw.removeEventListener && w.removeEventListener('p', noop, false);\n\nexport const supportsPassiveEvents: boolean = passiveOptionAccessed;\n\n/**\n * Helper class to attach event listeners to DOM elements with debounce support using rxjs\n */\nexport class EventListenerHelper {\n constructor(private renderer: Renderer2) {\n }\n\n public attachPassiveEventListener(nativeElement: any, eventName: string, callback: (event: any) => void,\n throttleInterval?: number): EventListener {\n // Only use passive event listeners if the browser supports it\n if (supportsPassiveEvents !== true) {\n return this.attachEventListener(nativeElement, eventName, callback, throttleInterval);\n }\n\n // Angular doesn't support passive event handlers (yet), so we need to roll our own code using native functions\n const listener: EventListener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject<Event>();\n\n const observerCallback: (event: Event) => void = (event: Event): void => {\n listener.events?.next(event);\n };\n nativeElement.addEventListener(eventName, observerCallback, {passive: true, capture: false});\n\n listener.teardownCallback = (): void => {\n nativeElement.removeEventListener(eventName, observerCallback, {passive: true, capture: false});\n };\n\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval!, undefined, { leading: true, trailing: true})\n : tap(() => {}) // no-op\n )\n .subscribe((event: Event) => {\n callback(event);\n });\n\n return listener;\n }\n\n public detachEventListener(eventListener: EventListener): void {\n if (!ValueHelper.isNullOrUndefined(eventListener.eventsSubscription)) {\n eventListener.eventsSubscription?.unsubscribe();\n }\n\n if (!ValueHelper.isNullOrUndefined(eventListener.events)) {\n eventListener.events?.complete();\n }\n\n if (!ValueHelper.isNullOrUndefined(eventListener.teardownCallback)) {\n eventListener.teardownCallback?.();\n }\n }\n\n public attachEventListener(nativeElement: any, eventName: string, callback: (event: any) => void,\n throttleInterval?: number): EventListener {\n const listener: EventListener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject<Event>();\n\n const observerCallback: (event: Event) => void = (event: Event): void => {\n listener.events?.next(event);\n };\n\n listener.teardownCallback = this.renderer.listen(nativeElement, eventName, observerCallback);\n\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval!, undefined, { leading: true, trailing: true})\n : tap(() => {}) // no-op\n )\n .subscribe((event: Event) => { callback(event); });\n\n return listener;\n }\n}","import { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef, inject, PLATFORM_ID } from '@angular/core';\nimport { EventListenerHelper } from './event-listener-helper';\nimport { EventListener } from './event-listener';\nimport { ValueHelper } from './value-helper';\nimport { isPlatformServer } from '@angular/common';\n\n/**\n * @deprecated SliderElementDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderElement]'\n})\nexport class SliderElementDirective {\n private _position: number = 0;\n get position(): number {\n return this._position;\n }\n\n private _dimension: number = 0;\n get dimension(): number {\n return this._dimension;\n }\n\n private _alwaysHide: boolean = false;\n get alwaysHide(): boolean {\n return this._alwaysHide;\n }\n\n private _vertical: boolean = false;\n get vertical(): boolean {\n return this._vertical;\n }\n\n private _scale: number = 1;\n get scale(): number {\n return this._scale;\n }\n\n private _rotate: number = 0;\n get rotate(): number {\n return this._rotate;\n }\n\n @HostBinding('style.opacity')\n opacity: number = 1;\n\n @HostBinding('style.visibility')\n visibility: string = 'visible';\n\n @HostBinding('style.left')\n left: string = '';\n\n @HostBinding('style.bottom')\n bottom: string = '';\n\n @HostBinding('style.height')\n height: string = '';\n\n @HostBinding('style.width')\n width: string = '';\n\n @HostBinding('style.transform')\n transform: string = '';\n\n private eventListenerHelper: EventListenerHelper;\n private eventListeners: EventListener[] = [];\n\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor(\n protected elemRef: ElementRef,\n protected renderer: Renderer2,\n protected changeDetectionRef: ChangeDetectorRef\n ) {\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n\n setAlwaysHide(hide: boolean): void {\n this._alwaysHide = hide;\n if (hide) {\n this.visibility = 'hidden';\n } else {\n this.visibility = 'visible';\n }\n }\n\n hide(): void {\n this.opacity = 0;\n }\n\n show(): void {\n if (this.alwaysHide) {\n return;\n }\n\n this.opacity = 1;\n }\n\n isVisible(): boolean {\n if (this.alwaysHide) {\n return false;\n }\n return this.opacity !== 0;\n }\n\n setVertical(vertical: boolean): void {\n this._vertical = vertical;\n if (this._vertical) {\n this.left = '';\n this.width = '';\n } else {\n this.bottom = '';\n this.height = '';\n }\n }\n\n setScale(scale: number): void {\n this._scale = scale;\n }\n\n setRotate(rotate: number): void {\n this._rotate = rotate;\n this.transform = 'rotate(' + rotate + 'deg)';\n }\n\n getRotate(): number {\n return this._rotate;\n }\n\n // Set element left/top position depending on whether slider is horizontal or vertical\n setPosition(pos: number): void {\n if (this._position !== pos && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n\n this._position = pos;\n if (this._vertical) {\n this.bottom = Math.round(pos) + 'px';\n } else {\n this.left = Math.round(pos) + 'px';\n }\n }\n\n // Calculate element's width/height depending on whether slider is horizontal or vertical\n calculateDimension(): void {\n const val: ClientRect = this.getBoundingClientRect();\n if (this.vertical) {\n this._dimension = (val.bottom - val.top) * this.scale;\n } else {\n this._dimension = (val.right - val.left) * this.scale;\n }\n }\n\n // Set element width/height depending on whether slider is horizontal or vertical\n setDimension(dim: number): void {\n if (this._dimension !== dim && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n\n this._dimension = dim;\n if (this._vertical) {\n this.height = Math.round(dim) + 'px';\n } else {\n this.width = Math.round(dim) + 'px';\n }\n }\n\n getBoundingClientRect(): ClientRect {\n if (isPlatformServer(this.platformId)) {\n return {\n bottom: 50,\n top: 0,\n left: 0,\n right: 50\n } as ClientRect;\n }\n return this.elemRef.nativeElement.getBoundingClientRect();\n }\n\n on(eventName: string, callback: (event: any) => void, debounceInterval?: number): void {\n const listener: EventListener = this.eventListenerHelper.attachEventListener(\n this.elemRef.nativeElement,\n eventName,\n callback,\n debounceInterval\n );\n this.eventListeners.push(listener);\n }\n\n onPassive(eventName: string, callback: (event: any) => void, debounceInterval?: number): void {\n const listener: EventListener = this.eventListenerHelper.attachPassiveEventListener(\n this.elemRef.nativeElement,\n eventName,\n callback,\n debounceInterval\n );\n this.eventListeners.push(listener);\n }\n\n off(eventName?: string): void {\n let listenersToKeep: EventListener[];\n let listenersToRemove: EventListener[];\n if (!ValueHelper.isNullOrUndefined(eventName)) {\n listenersToKeep = this.eventListeners.filter((event: EventListener) => event.eventName !== eventName);\n listenersToRemove = this.eventListeners.filter((event: EventListener) => event.eventName === eventName);\n } else {\n listenersToKeep = [];\n listenersToRemove = this.eventListeners;\n }\n\n for (const listener of listenersToRemove) {\n this.eventListenerHelper.detachEventListener(listener);\n }\n\n this.eventListeners = listenersToKeep;\n }\n\n private isRefDestroyed(): boolean {\n return (\n ValueHelper.isNullOrUndefined(this.changeDetectionRef) || (this.changeDetectionRef as unknown as any)['destroyed']\n );\n }\n}\n","import { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef } from '@angular/core';\nimport { SliderElementDirective } from './slider-element.directive';\n\n/**\n * @deprecated SliderHandleDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderHandle]'\n})\nexport class SliderHandleDirective extends SliderElementDirective {\n @HostBinding('class.ngx-slider-active')\n active: boolean = false;\n\n @HostBinding('attr.role')\n role: string = '';\n\n @HostBinding('attr.tabindex')\n tabindex: string = '';\n\n @HostBinding('attr.aria-orientation')\n ariaOrientation: string = '';\n\n @HostBinding('attr.aria-label')\n ariaLabel: string = '';\n\n @HostBinding('attr.aria-labelledby')\n ariaLabelledBy: string = '';\n\n @HostBinding('attr.aria-valuenow')\n ariaValueNow: string = '';\n\n @HostBinding('attr.aria-valuetext')\n ariaValueText: string = '';\n\n @HostBinding('attr.aria-valuemin')\n ariaValueMin: string = '';\n\n @HostBinding('attr.aria-valuemax')\n ariaValueMax: string = '';\n\n constructor(elemRef: ElementRef, renderer: Renderer2, changeDetectionRef: ChangeDetectorRef) {\n super(elemRef, renderer, changeDetectionRef);\n }\n\n focus(): void {\n this.elemRef.nativeElement.focus();\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Renderer2 } from '@angular/core';\nimport { SliderElementDirective } from './slider-element.directive';\nimport { ValueHelper } from './value-helper';\n\n/**\n * @deprecated SliderLabelDirective is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ngxSliderLabel]'\n})\nexport class SliderLabelDirective extends SliderElementDirective {\n private _value?: string;\n get value(): string {\n return this._value || '';\n }\n\n constructor(elemRef: ElementRef, renderer: Renderer2, changeDetectionRef: ChangeDetectorRef) {\n super(elemRef, renderer, changeDetectionRef);\n }\n\n setValue(value: string): void {\n let recalculateDimension: boolean = false;\n\n if (\n !this.alwaysHide &&\n (ValueHelper.isNullOrUndefined(this.value) ||\n this.value.length !== value.length ||\n (this.value.length > 0 && this.dimension === 0))\n ) {\n recalculateDimension = true;\n }\n\n this._value = value;\n this.elemRef.nativeElement.innerHTML = value;\n\n // Update dimension only when length of the label have changed\n if (recalculateDimension) {\n this.calculateDimension();\n }\n }\n}\n","/* eslint-disable @angular-eslint/prefer-signals */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from '@angular/core';\n\n/**\n * @deprecated TooltipWrapperComponent is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-slider-tooltip-wrapper',\n templateUrl: './tooltip-wrapper.component.html',\n styleUrls: ['./tooltip-wrapper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class TooltipWrapperComponent {\n @Input()\n template?: TemplateRef<any>;\n\n @Input()\n tooltip?: string;\n\n @Input()\n placement?: string;\n\n @Input()\n content?: string;\n}\n","@if (template) {\n <ng-template\n *ngTemplateOutlet=\"template; context: { tooltip: tooltip, placement: placement, content: content }\"\n ></ng-template>\n} @else {\n <div class=\"ngx-slider-inner-tooltip\" [attr.title]=\"tooltip\" [attr.data-tooltip-placement]=\"placement\">\n {{ content }}\n </div>\n}\n","/* eslint-disable @angular-eslint/prefer-signals */\nimport {\n Component,\n OnInit,\n ViewChild,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n HostBinding,\n HostListener,\n Input,\n ElementRef,\n Renderer2,\n EventEmitter,\n Output,\n ContentChild,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n forwardRef,\n NgZone\n} from '@angular/core';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { Options, LabelType, ValueToPositionFunction, PositionToValueFunction, CustomStepDefinition } from './options';\nimport { PointerType } from './pointer-type';\nimport { ChangeContext } from './change-context';\nimport { ValueHelper } from './value-helper';\nimport { CompatibilityHelper } from './compatibility-helper';\nimport { MathHelper } from './math-helper';\nimport { EventListener } from './event-listener';\nimport { EventListenerHelper, supportsPassiveEvents } from './event-listener-helper';\nimport { SliderElementDirective } from './slider-element.directive';\nimport { SliderHandleDirective } from './slider-handle.directive';\nimport { SliderLabelDirective } from './slider-label.directive';\nimport { CommonModule } from '@angular/common';\nimport { TooltipWrapperComponent } from './tooltip-wrapper.component';\n\n// Declaration for ResizeObserver a new API available in some of newest browsers:\n// https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\ndeclare class ResizeObserver {\n constructor(callback: () => void);\n observe(target: any): void;\n unobserve(target: any): void;\n disconnect(): void;\n}\n\nexport class Tick {\n selected: boolean = false;\n style: any = {};\n tooltip?: string;\n tooltipPlacement?: string;\n value?: string;\n valueTooltip?: string;\n valueTooltipPlacement?: string;\n legend?: string;\n}\n\nclass Dragging {\n active: boolean = false;\n value: number = 0;\n difference: number = 0;\n position: number = 0;\n lowLimit: number = 0;\n highLimit: number = 0;\n}\n\nclass ModelValues {\n value?: number;\n highValue?: number;\n\n public static compare(x?: ModelValues, y?: ModelValues): boolean {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x!.value === y!.value && x!.highValue === y!.highValue;\n }\n}\n\nclass ModelChange extends ModelValues {\n // Flag used to by-pass distinctUntilChanged() filter on input values\n // (sometimes there is a need to pass values through even though the model values have not changed)\n forceChange?: boolean;\n\n public static override compare(x?: ModelChange, y?: ModelChange): boolean {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x!.value === y!.value && x!.highValue === y!.highValue && x!.forceChange === y!.forceChange;\n }\n}\n\nclass InputModelChange extends ModelChange {\n internalChange?: boolean;\n}\n\nclass OutputModelChange extends ModelChange {\n userEventInitiated?: boolean;\n}\n\nconst NGX_SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n};\n\n/**\n * @deprecated SliderComponent is deprecated. Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-slider',\n templateUrl: './slider.component.html',\n providers: [NGX_SLIDER_CONTROL_VALUE_ACCESSOR],\n imports: [CommonModule, TooltipWrapperComponent, SliderLabelDirective, SliderHandleDirective, SliderElementDirective]\n})\nexport class SliderComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\n @HostBinding('class') class = 'ngx-slider';\n // Model for low value of slider. For simple slider, this is the only input. For range slider, this is the low value.\n @Input()\n public value?: number;\n // Output for low value slider to support two-way bindings\n @Output()\n public valueChange: EventEmitter<number> = new EventEmitter();\n\n // Model for high value of slider. Not used in simple slider. For range slider, this is the high value.\n @Input()\n public highValue?: number;\n // Output for high value slider to support two-way bindings\n @Output()\n public highValueChange: EventEmitter<number> = new EventEmitter();\n\n // An object with all the other options of the slider.\n // Each option can be updated at runtime and the slider will automatically be re-rendered.\n @Input()\n public options: Options = new Options();\n\n // Event emitted when user starts interaction with the slider\n @Output()\n public userChangeStart: EventEmitter<ChangeContext> = new EventEmitter();\n\n // Event emitted on each change coming from user interaction\n @Output()\n public userChange: EventEmitter<ChangeContext> = new EventEmitter();\n\n // Event emitted when user finishes interaction with the slider\n @Output()\n public userChangeEnd: EventEmitter<ChangeContext> = new EventEmitter();\n\n private manualRefreshSubscription: any;\n // Input event that triggers slider refresh (re-positioning of slider elements)\n @Input() set manualRefresh(manualRefresh: EventEmitter<void>) {\n this.unsubscribeManualRefresh();\n\n this.manualRefreshSubscription = manualRefresh.subscribe(() => {\n setTimeout(() => this.calculateViewDimensionsAndDetectChanges());\n });\n }\n\n private triggerFocusSubscription: any;\n // Input event that triggers setting focus on given slider handle\n @Input() set triggerFocus(triggerFocus: EventEmitter<void>) {\n this.unsubscribeTriggerFocus();\n\n this.triggerFocusSubscription = triggerFocus.subscribe((pointerType: PointerType) => {\n this.focusPointer(pointerType);\n });\n }\n\n // Slider type, true means range slider\n public get range(): boolean {\n return !ValueHelper.isNullOrUndefined(this.value) && !ValueHelper.isNullOrUndefined(this.highValue);\n }\n\n // Set to true if init method already executed\n private initHasRun: boolean = false;\n\n // Changes in model inputs are passed through this subject\n // These are all changes coming in from outside the component through input bindings or reactive form inputs\n private inputModelChangeSubject: Subject<InputModelChange> = new Subject<InputModelChange>();\n private inputModelChangeSubscription?: Subscription;\n\n // Changes to model outputs are passed through this subject\n // These are all changes that need to be communicated to output emitters and registered callbacks\n private outputModelChangeSubject: Subject<OutputModelChange> = new Subject<OutputModelChange>();\n private outputModelChangeSubscription?: Subscription;\n\n // Low value synced to model low value\n private viewLowValue?: number;\n // High value synced to model high value\n private viewHighValue?: number;\n // Options synced to model options, based on defaults\n private viewOptions: Options = new Options();\n\n // Half of the width or height of the slider handles\n private handleHalfDimension: number = 0;\n // Maximum position the slider handle can have\n private maxHandlePosition: number = 0;\n\n // Which handle is currently tracked for move events\n private currentTrackingPointer?: PointerType;\n // Internal variable to keep track of the focus element\n private currentFocusPointer?: PointerType;\n // Used to call onStart on the first keydown event\n private firstKeyDown = false;\n // Current touch id of touch event being handled\n private touchId?: number;\n // Values recorded when first dragging the bar\n private dragging: Dragging = new Dragging();\n\n /* Slider DOM elements */\n\n // Left selection bar outside two handles\n @ViewChild('leftOuterSelectionBar', { read: SliderElementDirective })\n private leftOuterSelectionBarElement?: SliderElementDirective;\n\n // Right selection bar outside two handles\n @ViewChild('rightOuterSelectionBar', { read: SliderElementDirective })\n private rightOuterSelectionBarElement?: SliderElementDirective;\n\n // The whole slider bar\n @ViewChild('fullBar', { read: SliderElementDirective })\n private fullBarElement?: SliderElementDirective;\n\n // Highlight between two handles\n @ViewChild('selectionBar', { read: SliderElementDirective })\n private selectionBarElement?: SliderElementDirective;\n\n // Left slider handle\n @ViewChild('minHandle', { read: SliderHandleDirective })\n private minHandleElement?: SliderHandleDirective;\n\n // Right slider handle\n @ViewChild('maxHandle', { read: SliderHandleDirective })\n private maxHandleElement?: SliderHandleDirective;\n\n // Floor label\n @ViewChild('floorLabel', { read: SliderLabelDirective })\n private floorLabelElement?: SliderLabelDirective;\n\n // Ceiling label\n @ViewChild('ceilLabel', { read: SliderLabelDirective })\n private ceilLabelElement?: SliderLabelDirective;\n\n // Label above the low value\n @ViewChild('minHandleLabel', { read: SliderLabelDirective })\n private minHandleLabelElement?: SliderLabelDirective;\n\n // Label above the high value\n @ViewChild('maxHandleLabel', { read: SliderLabelDirective })\n private maxHandleLabelElement?: SliderLabelDirective;\n\n // Combined label\n @ViewChild('combinedLabel', { read: SliderLabelDirective })\n private combinedLabelElement?: SliderLabelDirective;\n\n // The ticks\n @ViewChild('ticksElement', { read: SliderElementDirective })\n private ticksElement?: SliderElementDirective;\n\n // Optional custom template for displaying tooltips\n @ContentChild('tooltipTemplate')\n public tooltipTemplate!: TemplateRef<any>;\n\n // Host element class bindings\n @HostBinding('class.vertical')\n public sliderElementVerticalClass = false;\n @HostBinding('class.animate')\n public sliderElementAnimateClass = false;\n @HostBinding('class.with-legend')\n public sliderElementWithLegendClass = false;\n @HostBinding('attr.disabled')\n public sliderElementDisabledAttr?: string;\n @HostBinding('attr.aria-label')\n public sliderElementAriaLabel: string = 'ngx-slider';\n\n // CSS styles and class flags\n public barStyle: any = {};\n public minPointerStyle: any = {};\n public maxPointerStyle: any = {};\n public fullBarTransparentClass = false;\n public selectionBarDraggableClass = false;\n public ticksUnderValuesClass = false;\n\n // Whether to show/hide ticks\n public get showTicks(): boolean {\n return this.viewOptions.showTicks || false;\n }\n\n /* If tickStep is set or ticksArray is specified.\n In this case, ticks values should be displayed below the slider. */\n private intermediateTicks: boolean = false;\n // Ticks array as displayed in view\n public ticks: Tick[] = [];\n\n // Event listeners\n private eventListenerHelper?: EventListenerHelper;\n private onMoveEventListener?: EventListener;\n private onEndEventListener?: EventListener;\n // Whether currently moving the slider (between onStart() and onEnd())\n private moving: boolean = false;\n\n // Observer for slider element resize events\n private resizeObserver?: ResizeObserver;\n\n // Callbacks for reactive forms support\n private onTouchedCallback?: (value: any) => void;\n private onChangeCallback?: (value: any) => void;\n\n public constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n private changeDetectionRef: ChangeDetectorRef,\n private zone: NgZone\n ) {\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n\n // OnInit interface\n public ngOnInit(): void {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n\n // We need to run these two things first, before the rest of the init in ngAfterViewInit(),\n // because these two settings are set through @HostBinding and Angular change detection\n // mechanism doesn't like them changing in ngAfterViewInit()\n\n this.updateDisabledState();\n this.updateVerticalState();\n this.updateAriaLabel();\n }\n\n // AfterViewInit interface\n public ngAfterViewInit(): void {\n this.applyOptions();\n\n this.subscribeInputModelChangeSubject();\n this.subscribeOutputModelChangeSubject();\n\n // Once we apply options, we need to normalise model values for the first time\n this.renormaliseModelValues();\n\n this.viewLowValue = this.modelValueToViewValue(this.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.updateVerticalState(); // need to run this again to cover changes to slider elements\n this.manageElementsStyle();\n this.updateDisabledState();\n this.calculateViewDimensions();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n this.initHandles();\n this.manageEventsBindings();\n this.updateAriaLabel();\n\n this.subscribeResizeObserver();\n\n this.initHasRun = true;\n\n // Run change detection manually to resolve some issues when init procedure changes values used in the view\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n // OnChanges interface\n public ngOnChanges(changes: SimpleChanges): void {\n // Always apply options first\n const options = changes['options'];\n if (\n !ValueHelper.isNullOrUndefined(options) &&\n JSON.stringify(options.previousValue) !== JSON.stringify(options.currentValue)\n ) {\n this.onChangeOptions();\n }\n\n // Then value changes\n if (!ValueHelper.isNullOrUndefined(changes['value']) || !ValueHelper.isNullOrUndefined(changes['highValue'])) {\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n }\n\n // OnDestroy interface\n public ngOnDestroy(): void {\n this.unbindEvents();\n\n this.unsubscribeResizeObserver();\n this.unsubscribeInputModelChangeSubject();\n this.unsubscribeOutputModelChangeSubject();\n this.unsubscribeManualRefresh();\n this.unsubscribeTriggerFocus();\n }\n\n // ControlValueAccessor interface\n public writeValue(obj: any): void {\n if (obj instanceof Array) {\n this.value = obj[0];\n this.highValue = obj[1];\n } else {\n this.value = obj;\n }\n\n // ngOnChanges() is not called in this instance, so we need to communicate the change manually\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n\n // ControlValueAccessor interface\n public registerOnChange(onChangeCallback: any): void {\n this.onChangeCallback = onChangeCallback;\n }\n\n // ControlValueAccessor interface\n public registerOnTouched(onTouchedCallback: any): void {\n this.onTouchedCallback = onTouchedCallback;\n }\n\n // ControlValueAccessor interface\n public setDisabledState(isDisabled: boolean): void {\n this.viewOptions.disabled = isDisabled;\n this.updateDisabledState();\n }\n\n public setAriaLabel(ariaLabel: string): void {\n this.viewOptions.ariaLabel = ariaLabel;\n this.updateAriaLabel();\n }\n\n @HostListener('window:resize', ['$event'])\n public onResize(event: any): void {\n this.calculateViewDimensionsAndDetectChanges();\n }\n\n private subscribeInputModelChangeSubject(): void {\n this.inputModelChangeSubscription = this.inputModelChangeSubject\n .pipe(\n distinctUntilChanged(ModelChange.compare as unknown as any),\n // Hack to reset the status of the distinctUntilChanged() - if a \"fake\" event comes through with forceChange=true,\n // we forcefully by-pass distinctUntilChanged(), but otherwise drop the event\n filter((modelChange: InputModelChange) => !modelChange.forceChange && !modelChange.internalChange)\n )\n .subscribe((modelChange: InputModelChange) => this.applyInputModelChange(modelChange));\n }\n\n private subscribeOutputModelChangeSubject(): void {\n this.outputModelChangeSubscription = this.outputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare))\n .subscribe((modelChange: any) => this.publishOutputModelChange(modelChange));\n }\n\n private subscribeResizeObserver(): void {\n if (CompatibilityHelper.isResizeObserverAvailable()) {\n this.resizeObserver = new ResizeObserver((): void => this.calculateViewDimensionsAndDetectChanges());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n\n private unsubscribeResizeObserver(): void {\n if (CompatibilityHelper.isResizeObserverAvailable() && this.resizeObserver !== null) {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n }\n\n private unsubscribeOnMove(): void {\n if (!ValueHelper.isNullOrUndefined(this.onMoveEventListener)) {\n this.eventListenerHelper?.detachEventListener(this.onMoveEventListener!);\n this.onMoveEventListener = undefined;\n }\n }\n\n private unsubscribeOnEnd(): void {\n if (!ValueHelper.isNullOrUndefined(this.onEndEventListener)) {\n this.eventListenerHelper?.detachEventListener(this.onEndEventListener!);\n this.onEndEventListener = undefined;\n }\n }\n\n private unsubscribeInputModelChangeSubject(): void {\n if (!ValueHelper.isNullOrUndefined(this.inputModelChangeSubscription)) {\n this.inputModelChangeSubscription?.unsubscribe();\n this.inputModelChangeSubscription = undefined;\n }\n }\n\n private unsubscribeOutputModelChangeSubject(): void {\n if (!ValueHelper.isNullOrUndefined(this.outputModelChangeSubscription)) {\n this.outputModelChangeSubscription?.unsubscribe();\n this.outputModelChangeSubscription = undefined;\n }\n }\n\n private unsubscribeManualRefresh(): void {\n if (!ValueHelper.isNullOrUndefined(this.manualRefreshSubscription)) {\n this.manualRefreshSubscription.unsubscribe();\n this.manualRefreshSubscription = undefined;\n }\n }\n\n private unsubscribeTriggerFocus(): void {\n if (!ValueHelper.isNullOrUndefined(this.triggerFocusSubscription)) {\n this.triggerFocusSubscription.unsubscribe();\n this.triggerFocusSubscription = null;\n }\n }\n\n private getPointerElement(pointerType: PointerType): SliderHandleDirective | undefined {\n if (pointerType === PointerType.Min) {\n return this.minHandleElement;\n } else if (pointerType === PointerType.Max) {\n return this.maxHandleElement;\n }\n return undefined;\n }\n\n private getCurrentTrackingValue(): number | undefined {\n if (this.currentTrackingPointer === PointerType.Min) {\n return this.viewLowValue;\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return this.viewHighValue;\n }\n return undefined;\n }\n\n private modelValueToViewValue(modelValue: number): number {\n if (ValueHelper.isNullOrUndefined(modelValue)) {\n return NaN;\n }\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return ValueHelper.findStepIndex(+modelValue, this.viewOptions.stepsArray!);\n }\n return +modelValue;\n }\n\n private viewValueToModelValue(viewValue: number): number {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return this.getStepValue(viewValue);\n }\n return viewValue;\n }\n\n private getStepValue(sliderValue: number): number {\n const step: CustomStepDefinition = this.viewOptions.stepsArray![sliderValue];\n return !ValueHelper.isNullOrUndefined(step) ? step.value : NaN;\n }\n\n private applyViewChange(): void {\n this.value = this.viewValueToModelValue(this.viewLowValue!);\n if (this.range) {\n this.highValue = this.viewValueToModelValue(this.viewHighValue!);\n }\n\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n userEventInitiated: true,\n forceChange: false\n });\n\n // At this point all changes are applied and outputs are emitted, so we should be done.\n // However, input changes are communicated in different stream and we need to be ready to\n // act on the next input change even if it is exactly the same as last input change.\n // Therefore, we send a special event to reset the stream.\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: true\n });\n }\n\n // Apply model change to the slider view\n private applyInputModelChange(modelChange: InputModelChange): void {\n const normalisedModelChange: ModelValues = this.normaliseModelValues(modelChange);\n\n // If normalised model change is different, apply the change to the model values\n const normalisationChange: boolean = !ModelValues.compare(modelChange, normalisedModelChange);\n if (normalisationChange) {\n this.value = normalisedModelChange.value;\n this.highValue = normalisedModelChange.highValue;\n }\n\n this.viewLowValue = this.modelValueToViewValue(normalisedModelChange.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(normalisedModelChange.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n this.updateAriaAttributes();\n if (this.range) {\n this.updateCombinedLabel();\n }\n\n // At the end, we need to communicate the model change to the outputs as well\n // Normalisation changes are also always forced out to ensure that subscribers always end up in correct state\n this.outputModelChangeSubject.next({\n value: normalisedModelChange.value,\n highValue: normalisedModelChange.highValue,\n forceChange: normalisationChange,\n userEventInitiated: false\n });\n }\n\n // Publish model change to output event emitters and registered callbacks\n private publishOutputModelChange(modelChange: OutputModelChange): void {\n const emitOutputs: () => void = (): void => {\n this.valueChange.emit(modelChange.value);\n if (this.range) {\n this.highValueChange.emit(modelChange.highValue);\n }\n\n if (!ValueHelper.isNullOrUndefined(this.onChangeCallback)) {\n if (this.range) {\n this.onChangeCallback!([modelChange.value, modelChange.highValue]);\n } else {\n this.onChangeCallback!(modelChange.value);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.onTouchedCallback)) {\n if (this.range) {\n this.onTouchedCallback!([modelChange.value, modelChange.highValue]);\n } else {\n this.onTouchedCallback!(modelChange.value);\n }\n }\n };\n\n if (modelChange.userEventInitiated) {\n // If this change was initiated by a user event, we can emit outputs in the same tick\n emitOutputs();\n this.userChange.emit(this.getChangeContext());\n } else {\n // But, if the change was initated by something else like a change in input bindings,\n // we need to wait until next tick to emit the outputs to keep Angular change detection happy\n setTimeout(() => {\n emitOutputs();\n });\n }\n }\n\n private normaliseModelValues(input: ModelValues): ModelValues {\n const normalisedInput: ModelValues = new ModelValues();\n normalisedInput.value = input.value;\n normalisedInput.highValue = input.highValue;\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n // When using steps array, only round to nearest step in the array\n // No other enforcement can be done, as the step array may be out of order, and that is perfectly fine\n if (this.viewOptions.enforceStepsArray) {\n const valueIndex: number = ValueHelper.findStepIndex(normalisedInput.value!, this.viewOptions.stepsArray!);\n normalisedInput.value = this.viewOptions.stepsArray![valueIndex].value;\n\n if (this.range) {\n const highValueIndex: number = ValueHelper.findStepIndex(\n normalisedInput.highValue!,\n this.viewOptions.stepsArray!\n );\n normalisedInput.highValue = this.viewOptions.stepsArray![highValueIndex].value;\n }\n }\n\n return normalisedInput;\n }\n\n if (this.viewOptions.enforceStep) {\n normalisedInput.value = this.roundStep(normalisedInput.value!);\n if (this.range) {\n normalisedInput.highValue = this.roundStep(normalisedInput.highValue!);\n }\n }\n\n if (this.viewOptions.enforceRange) {\n normalisedInput.value = MathHelper.clampToRange(\n normalisedInput.value!,\n this.viewOptions.floor!,\n this.viewOptions.ceil!\n );\n\n if (this.range) {\n normalisedInput.highValue = MathHelper.clampToRange(\n normalisedInput.highValue!,\n this.viewOptions.floor!,\n this.viewOptions.ceil!\n );\n }\n\n // Make sure that range slider invariant (value <= highValue) is always satisfied\n if (this.range && input.value! > input.highValue!) {\n // We know that both values are now clamped correctly, they may just be in the wrong order\n // So the easy solution is to swap them... except swapping is sometimes disabled in options, so we make the two values the same\n if (this.viewOptions.noSwitching) {\n normalisedInput.value = normalisedInput.highValue;\n } else {\n const tempValue = input.value;\n normalisedInput.value = input.highValue;\n normalisedInput.highValue = tempValue;\n }\n }\n }\n\n return normalisedInput;\n }\n\n private renormaliseModelValues(): void {\n const previousModelValues: ModelValues = {\n value: this.value,\n highValue: this.highValue\n };\n const normalisedModelValues: ModelValues = this.normaliseModelValues(previousModelValues);\n if (!ModelValues.compare(normalisedModelValues, previousModelValues)) {\n this.value = normalisedModelValues.value;\n this.highValue = normalisedModelValues.highValue;\n\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: true,\n userEventInitiated: false\n });\n }\n }\n\n private onChangeOptions(): void {\n if (!this.initHasRun) {\n return;\n }\n\n const previousOptionsInfluencingEventBindings: boolean[] = this.getOptionsInfluencingEventBindings(\n this.viewOptions\n );\n\n this.applyOptions();\n\n const newOptionsInfluencingEventBindings: boolean[] = this.getOptionsInfluencingEventBindings(this.viewOptions);\n // Avoid re-binding events in case nothing changes that can influence it\n // It makes it possible to change options while dragging the slider\n const rebindEvents: boolean = !ValueHelper.areArraysEqual(\n previousOptionsInfluencingEventBindings,\n newOptionsInfluencingEventBindings\n );\n\n // With new options, we need to re-normalise model values if necessary\n this.renormaliseModelValues();\n\n this.viewLowValue = this.modelValueToViewValue(this.value!);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue!);\n } else {\n this.viewHighValue = undefined;\n }\n\n this.resetSlider(rebindEvents);\n }\n\n // Read the user options and apply them to the slider model\n private applyOptions(): void {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n\n this.viewOptions.draggableRange = this.range && this.viewOptions.draggableRange;\n this.viewOptions.draggableRangeOnly = this.range && this.viewOptions.draggableRangeOnly;\n if (this.viewOptions.draggableRangeOnly) {\n this.viewOptions.draggableRange = true;\n }\n\n this.viewOptions.showTicks =\n this.viewOptions.showTicks ||\n this.viewOptions.showTicksValues ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray);\n if (\n this.viewOptions.showTicks &&\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray))\n ) {\n this.intermediateTicks = true;\n }\n\n this.viewOptions.showSelectionBar =\n this.viewOptions.showSelectionBar ||\n this.viewOptions.showSelectionBarEnd ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue);\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n this.applyStepsArrayOptions();\n } else {\n this.applyFloorCeilOptions();\n }\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.combineLabels)) {\n this.viewOptions.combineLabels = (minValue: string, maxValue: string): string => {\n return minValue + ' - ' + maxValue;\n };\n }\n\n if (this.viewOptions.logScale && this.viewOptions.floor === 0) {\n throw Error(\"Can't use floor=0 with logarithmic scale\");\n }\n }\n\n private applyStepsArrayOptions(): void {\n this.viewOptions.floor = 0;\n this.viewOptions.ceil = this.viewOptions.stepsArray!.length - 1;\n this.viewOptions.step = 1;\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (modelValue: number): string => {\n if (this.viewOptions.bindIndexForStepsArray) {\n return String(this.getStepValue(modelValue));\n }\n return String(modelValue);\n };\n }\n }\n\n private applyFloorCeilOptions(): void {\n if (ValueHelper.isNullOrUndefined(this.viewOptions.step)) {\n this.viewOptions.step = 1;\n } else {\n this.viewOptions.step = +this.viewOptions.step!;\n if (this.viewOptions.step <= 0) {\n this.viewOptions.step = 1;\n }\n }\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.ceil) || ValueHelper.isNullOrUndefined(this.viewOptions.floor)) {\n throw Error('floor and ceil options must be supplied');\n }\n this.viewOptions.ceil = +this.viewOptions.ceil!;\n this.viewOptions.floor = +this.viewOptions.floor!;\n\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (value: number): string => String(value);\n }\n }\n\n // Resets slider\n private resetSlider(rebindEvents: boolean = true): void {\n this.manageElementsStyle();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n if (rebindEvents) {\n this.unbindEvents();\n this.manageEventsBindings();\n }\n this.updateDisabledState();\n this.updateAriaLabel();\n this.calculateViewDimensions();\n this.refocusPointerIfNeeded();\n }\n\n // Sets focus on the specified pointer\n private focusPointer(pointerType: PointerType): void {\n // If not supplied, use min pointer as default\n if (pointerType !== PointerType.Min && pointerType !== PointerType.Max) {\n pointerType = PointerType.Min;\n }\n\n if (pointerType === PointerType.Min) {\n this.minHandleElement?.focus();\n } else if (this.range && pointerType === PointerType.Max) {\n this.maxHandleElement?.focus();\n }\n }\n\n private refocusPointerIfNeeded(): void {\n if (!ValueHelper.isNullOrUndefined(this.currentFocusPointer)) {\n this.onPointerFocus(this.currentFocusPointer!);\n const element = this.getPointerElement(this.currentFocusPointer!);\n element?.focus();\n }\n }\n\n // Update each elements style based on options\n private manageElementsStyle(): void {\n this.updateScale();\n this.floorLabelElement?.setAlwaysHide(this.viewOptions.showTicksValues! || this.viewOptions.hideLimitLabels!);\n this.ceilLabelElement?.setAlwaysHide(this.viewOptions.showTicksValues! || this.viewOptions.hideLimitLabels!);\n\n const hideLabelsForTicks: boolean = this.viewOptions.showTicksValues! && !this.intermediateTicks!;\n this.minHandleLabelElement?.setAlwaysHide(hideLabelsForTicks || this.viewOptions.hidePointerLabels!);\n this.maxHandleLabelElement?.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels!);\n this.combinedLabelElement?.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels!);\n this.selectionBarElement?.setAlwaysHide(!this.range && !this.viewOptions.showSelectionBar);\n this.leftOuterSelectionBarElement?.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.rightOuterSelectionBarElement?.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n\n this.fullBarTransparentClass = this.range && this.viewOptions.showOuterSelectionBars!;\n this.selectionBarDraggableClass = this.viewOptions.draggableRange! && !this.viewOptions.onlyBindHandles!;\n this.ticksUnderValuesClass = this.intermediateTicks && this.options.showTicksValues!;\n\n if (this.sliderElementVerticalClass !== this.viewOptions.vertical) {\n this.updateVerticalState();\n // The above change in host component class will not be applied until the end of this cycle\n // However, functions calculating the slider position expect the slider to be already styled as vertical\n // So as a workaround, we need to reset the slider once again to compute the correct values\n setTimeout((): void => {\n this.resetSlider();\n });\n }\n\n // Changing animate class may interfere with slider reset/initialisation, so we should set it separately,\n // after all is properly set up\n if (this.sliderElementAnimateClass !== this.viewOptions.animate) {\n setTimeout((): void => {\n this.sliderElementAnimateClass = this.viewOptions.animate!;\n });\n }\n this.updateRotate();\n }\n\n // Manage the events bindings based on readOnly and disabled options\n private manageEventsBindings(): void {\n if (this.viewOptions.disabled || this.viewOptions.readOnly) {\n this.unbindEvents();\n } else {\n this.bindEvents();\n }\n }\n\n // Set the disabled state based on disabled option\n private updateDisabledState(): void {\n this.sliderElementDisabledAttr = this.viewOptions.disabled ? 'disabled' : undefined;\n }\n\n // Set the aria-label state based on ariaLabel option\n private updateAriaLabel(): void {\n this.sliderElementAriaLabel = this.viewOptions.ariaLabel || 'nxg-slider';\n }\n\n // Set vertical state based on vertical option\n private updateVerticalState(): void {\n this.sliderElementVerticalClass = this.viewOptions.vertical!;\n for (const element of this.getAllSliderElements()) {\n // This is also called before ngAfterInit, so need to check that view child bindings work\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.setVertical(this.viewOptions.vertical!);\n }\n }\n }\n\n private updateScale(): void {\n for (const element of this.getAllSliderElements()) {\n element.setScale(this.viewOptions.scale!);\n }\n }\n\n private updateRotate(): void {\n for (const element of this.getAllSliderElements()) {\n element.setRotate(this.viewOptions.rotate!);\n }\n }\n\n private getAllSliderElements(): SliderElementDirective[] {\n return [\n this.leftOuterSelectionBarElement!,\n this.rightOuterSelectionBarElement!,\n this.fullBarElement!,\n this.selectionBarElement!,\n this.minHandleElement!,\n this.maxHandleElement!,\n this.floorLabelElement!,\n this.ceilLabelElement!,\n this.minHandleLabelElement!,\n this.maxHandleLabelElement!,\n this.combinedLabelElement!,\n this.ticksElement!\n ];\n }\n\n // Initialize slider handles positions and labels\n // Run only once during initialization and every time view port changes size\n private initHandles(): void {\n this.updateLowHandle(this.valueToPosition(this.viewLowValue!));\n\n /*\n the order here is important since the selection bar should be\n updated after the high handle but before the combined label\n */\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n }\n\n this.updateSelectionBar();\n\n if (this.range) {\n this.updateCombinedLabel();\n }\n\n this.updateTicksScale();\n }\n\n // Adds accessibility attributes, run only once during initialization\n private addAccessibility(): void {\n this.updateAriaAttributes();\n\n this.minHandleElement!.role = 'slider';\n\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.minHandleElement!.tabindex = '0';\n } else {\n this.minHandleElement!.tabindex = '';\n }\n\n this.minHandleElement!.ariaOrientation =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabel)) {\n this.minHandleElement!.ariaLabel = this.viewOptions.ariaLabel!;\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledBy)) {\n this.minHandleElement!.ariaLabelledBy = this.viewOptions.ariaLabelledBy!;\n }\n\n if (this.range) {\n this.maxHandleElement!.role = 'slider';\n\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.maxHandleElement!.tabindex = '0';\n } else {\n this.maxHandleElement!.tabindex = '';\n }\n\n this.maxHandleElement!.ariaOrientation =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelHigh)) {\n this.maxHandleElement!.ariaLabel = this.viewOptions.ariaLabelHigh!;\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledByHigh)) {\n this.maxHandleElement!.ariaLabelledBy = this.viewOptions.ariaLabelledByHigh!;\n }\n }\n }\n\n // Updates aria attributes according to current values\n private updateAriaAttributes(): void {\n this.minHandleElement!.ariaValueNow = (+this.value!).toString();\n this.minHandleElement!.ariaValueText = this.viewOptions.translate!(+this.value!, LabelType.Low);\n this.minHandleElement!.ariaValueMin = this.viewOptions.floor!.toString();\n this.minHandleElement!.ariaValueMax = this.viewOptions.ceil!.toString();\n\n if (this.range) {\n this.maxHandleElement!.ariaValueNow = (+this.highValue!).toString();\n this.maxHandleElement!.ariaValueText = this.viewOptions.translate!(+this.highValue!, LabelType.High);\n this.maxHandleElement!.ariaValueMin = this.viewOptions.floor!.toString();\n this.maxHandleElement!.ariaValueMax = this.viewOptions.ceil!.toString();\n }\n }\n\n // Calculate dimensions that are dependent on view port size\n // Run once during initialization and every time view port changes size.\n private calculateViewDimensions(): void {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.handleDimension)) {\n this.minHandleElement!.setDimension(this.viewOptions.handleDimension!);\n } else {\n this.minHandleElement!.calculateDimension();\n }\n\n const handleWidth = this.minHandleElement!.dimension;\n\n this.handleHalfDimension = handleWidth / 2;\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.barDimension)) {\n this.fullBarElement!.setDimension(this.viewOptions.barDimension!);\n } else {\n this.fullBarElement!.calculateDimension();\n }\n\n this.maxHandlePosition = this.fullBarElement!.dimension - handleWidth;\n\n if (this.initHasRun) {\n this.updateFloorLabel();\n this.updateCeilLabel();\n this.initHandles();\n }\n }\n\n private calculateViewDimensionsAndDetectChanges(): void {\n this.calculateViewDimensions();\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n /**\n * If the slider reference is already destroyed\n * @returns boolean - true if ref is destroyed\n */\n private isRefDestroyed(): boolean {\n return (this.changeDetectionRef as any)['destroyed'];\n }\n\n // Update the ticks position\n private updateTicksScale(): void {\n if (!this.viewOptions.showTicks) {\n setTimeout(() => {\n this.sliderElementWithLegendClass = false;\n });\n return;\n }\n\n const ticksArray = !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray)\n ? this.viewOptions.ticksArray\n : this.getTicksArray();\n const translate: string = this.viewOptions.vertical ? 'translateY' : 'translateX';\n\n if (this.viewOptions.rightToLeft) {\n ticksArray!.reverse();\n }\n\n const tickValueStep = !ValueHelper.isNullOrUndefined(this.viewOptions.tickValueStep)\n ? this.viewOptions.tickValueStep\n : !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)\n ? this.viewOptions.tickStep\n : this.viewOptions.step;\n\n let hasAtLeastOneLegend: boolean = false;\n\n const newTicks: Tick[] = ticksArray!.map((value: number): Tick => {\n let position: number = this.valueToPosition(value);\n\n if (this.viewOptions.vertical) {\n position = this.maxHandlePosition - position;\n }\n\n const translation: string = translate + '(' + Math.round(position) + 'px)';\n const tick: Tick = new Tick();\n tick.selected = this.isTickSelected(value);\n tick.style = {\n '-webkit-transform': translation,\n '-moz-transform': translation,\n '-o-transform': translation,\n '-ms-transform': translation,\n transform: translation\n };\n if (tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n tick.style['background-color'] = this.getSelectionBarColor();\n }\n if (!tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getTickColor)) {\n tick.style['background-color'] = this.getTickColor(value);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksTooltip)) {\n tick.tooltip = this.viewOptions.ticksTooltip!(value);\n tick.tooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n if (\n this.viewOptions.showTicksValues &&\n !ValueHelper.isNullOrUndefined(tickValueStep) &&\n MathHelper.isModuloWithinPrecisionLimit(value, tickValueStep!, this.viewOptions.precisionLimit!)\n ) {\n tick.value = this.getDisplayValue(value, LabelType.TickValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksValuesTooltip)) {\n tick.valueTooltip = this.viewOptions.ticksValuesTooltip!(value);\n tick.valueTooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n }\n\n let legend: string;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n const step: CustomStepDefinition = this.viewOptions.stepsArray![value];\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getStepLegend)) {\n legend = this.viewOptions.getStepLegend!(step);\n } else if (!ValueHelper.isNullOrUndefined(step)) {\n legend = step.legend!;\n }\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.getLegend)) {\n legend = this.viewOptions.getLegend!(value);\n }\n if (!ValueHelper.isNullOrUndefined(legend!)) {\n tick.legend = legend!;\n hasAtLeastOneLegend = true;\n }\n\n return tick;\n });\n\n setTimeout(() => {\n this.sliderElementWithLegendClass = hasAtLeastOneLegend;\n });\n\n // We should avoid re-creating the ticks array if possible\n // This both improves performance and makes CSS animations work correctly\n if (!ValueHelper.isNullOrUndefined(this.ticks) && this.ticks.length === newTicks.length) {\n for (let i: number = 0; i < newTicks.length; ++i) {\n Object.assign(this.ticks[i], newTicks[i]);\n }\n } else {\n this.ticks = newTicks;\n }\n\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n private getTicksArray(): number[] {\n const step = !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)\n ? this.viewOptions.tickStep\n : this.viewOptions.step;\n const ticksArray: number[] = [];\n\n const numberOfValues: number =\n 1 +\n Math.floor(\n MathHelper.roundToPrecisionLimit(\n Math.abs(this.viewOptions.ceil! - this.viewOptions.floor!) / step!,\n this.viewOptions.precisionLimit!\n )\n );\n for (let index: number = 0; index < numberOfValues; ++index) {\n ticksArray.push(\n MathHelper.roundToPrecisionLimit(this.viewOptions.floor! + step! * index, this.viewOptions.precisionLimit!)\n );\n }\n\n return ticksArray;\n }\n\n private isTickSelected(value: number): boolean {\n if (!this.range) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n const center = this.viewOptions.showSelectionBarFromValue;\n if (this.viewLowValue! > center! && value >= center! && value <= this.viewLowValue!) {\n return true;\n } else if (this.viewLowValue! < center! && value <= center! && value >= this.viewLowValue!) {\n return true;\n }\n } else if (this.viewOptions.showSelectionBarEnd) {\n if (value >= this.viewLowValue!) {\n return true;\n }\n } else if (this.viewOptions.showSelectionBar && value <= this.viewLowValue!) {\n return true;\n }\n }\n\n if (this.range && value >= this.viewLowValue! && value <= this.viewHighValue!) {\n return true;\n }\n\n return false;\n }\n\n // Update position of the floor label\n private updateFloorLabel(): void {\n if (!this.floorLabelElement!.alwaysHide) {\n this.floorLabelElement!.setValue(this.getDisplayValue(this.viewOptions.floor!, LabelType.Floor));\n this.floorLabelElement!.calculateDimension();\n const position: number = this.viewOptions.rightToLeft\n ? this.fullBarElement!.dimension - this.floorLabelElement!.dimension\n : 0;\n this.floorLabelElement!.setPosition(position);\n }\n }\n\n // Update position of the ceiling label\n private updateCeilLabel(): void {\n if (!this.ceilLabelElement!.alwaysHide) {\n this.ceilLabelElement!.setValue(this.getDisplayValue(this.viewOptions.ceil!, LabelType.Ceil));\n this.ceilLabelElement!.calculateDimension();\n const position: number = this.viewOptions.rightToLeft\n ? 0\n : this.fullBarElement!.dimension - this.ceilLabelElement!.dimension;\n this.ceilLabelElement!.setPosition(position);\n }\n }\n\n // Update slider handles and label positions\n private updateHandles(which: PointerType, newPos: number): void {\n if (which === PointerType.Min) {\n this.updateLowHandle(newPos);\n } else if (which === PointerType.Max) {\n this.updateHighHandle(newPos);\n }\n\n this.updateSelectionBar();\n this.updateTicksScale();\n if (this.range) {\n this.updateCombinedLabel();\n }\n }\n\n // Helper function to work out the position for handle labels depending on RTL or not\n private getHandleLabelPos(labelType: PointerType, newPos: number): number {\n const labelDimension: number =\n labelType === PointerType.Min ? this.minHandleLabelElement!.dimension : this.maxHandleLabelElement!.dimension;\n const nearHandlePos: number = newPos - labelDimension / 2 + this.handleHalfDimension;\n const endOfBarPos: number = this.fullBarElement!.dimension - labelDimension;\n\n if (!this.viewOptions.boundPointerLabels) {\n return nearHandlePos;\n }\n\n if (\n (this.viewOptions.rightToLeft && labelType === PointerType.Min) ||\n (!this.viewOptions.rightToLeft && labelType === PointerType.Max)\n ) {\n return Math.min(nearHandlePos, endOfBarPos);\n } else {\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\n }\n }\n\n // Update low slider handle position and label\n private updateLowHandle(newPos: number): void {\n this.minHandleElement!.setPosition(newPos);\n this.minHandleLabelElement!.setValue(this.getDisplayValue(this.viewLowValue!, LabelType.Low));\n this.minHandleLabelElement!.setPosition(this.getHandleLabelPos(PointerType.Min, newPos));\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.minPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Min)\n };\n }\n\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Update high slider handle position and label\n private updateHighHandle(newPos: number): void {\n this.maxHandleElement!.setPosition(newPos);\n this.maxHandleLabelElement!.setValue(this.getDisplayValue(this.viewHighValue!, LabelType.High));\n this.maxHandleLabelElement!.setPosition(this.getHandleLabelPos(PointerType.Max, newPos));\n\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.maxPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Max)\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Show/hide floor/ceiling label\n private updateFloorAndCeilLabelsVisibility(): void {\n // Show based only on hideLimitLabels if pointer labels are hidden\n if (this.viewOptions.hidePointerLabels) {\n return;\n }\n let floorLabelHidden: boolean = false;\n let ceilLabelHidden: boolean = false;\n const isMinLabelAtFloor: boolean = this.isLabelBelowFloorLabel(this.minHandleLabelElement!);\n const isMinLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.minHandleLabelElement!);\n const isMaxLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.maxHandleLabelElement!);\n const isCombinedLabelAtFloor: boolean = this.isLabelBelowFloorLabel(this.combinedLabelElement!);\n const isCombinedLabelAtCeil: boolean = this.isLabelAboveCeilLabel(this.combinedLabelElement!);\n\n if (isMinLabelAtFloor) {\n floorLabelHidden = true;\n this.floorLabelElement!.hide();\n } else {\n floorLabelHidden = false;\n this.floorLabelElement!.show();\n }\n\n if (isMinLabelAtCeil) {\n ceilLabelHidden = true;\n this.ceilLabelElement!.hide();\n } else {\n ceilLabelHidden = false;\n this.ceilLabelElement!.show();\n }\n\n if (this.range) {\n const hideCeil: boolean = this.combinedLabelElement!.isVisible() ? isCombinedLabelAtCeil : isMaxLabelAtCeil;\n const hideFloor: boolean = this.combinedLabelElement!.isVisible() ? isCombinedLabelAtFloor : isMinLabelAtFloor;\n\n if (hideCeil) {\n this.ceilLabelElement!.hide();\n } else if (!ceilLabelHidden) {\n this.ceilLabelElement!.show();\n }\n\n // Hide or show floor label\n if (hideFloor) {\n this.floorLabelElement!.hide();\n } else if (!floorLabelHidden) {\n this.floorLabelElement!.show();\n }\n }\n }\n\n private isLabelBelowFloorLabel(label: SliderLabelDirective): boolean {\n const pos: number = label.position;\n const dim: number = label.dimension;\n const floorPos: number = this.floorLabelElement!.position;\n const floorDim: number = this.floorLabelElement!.dimension;\n return this.viewOptions.rightToLeft ? pos + dim >= floorPos - 2 : pos <= floorPos + floorDim + 2;\n }\n\n private isLabelAboveCeilLabel(label: SliderLabelDirective): boolean {\n const pos: number = label.position;\n const dim: number = label.dimension;\n const ceilPos: number = this.ceilLabelElement!.position;\n const ceilDim: number = this.ceilLabelElement!.dimension;\n return this.viewOptions.rightToLeft ? pos <= ceilPos + ceilDim + 2 : pos + dim >= ceilPos - 2;\n }\n\n // Update slider selection bar, combined label and range label\n private updateSelectionBar(): void {\n let position: number = 0;\n let dimension: number = 0;\n const isSelectionBarFromRight: boolean = this.viewOptions.rightToLeft\n ? !this.viewOptions.showSelectionBarEnd!\n : this.viewOptions.showSelectionBarEnd!;\n const positionForRange: number = this.viewOptions.rightToLeft\n ? this.maxHandleElement!.position + this.handleHalfDimension\n : this.minHandleElement!.position + this.handleHalfDimension;\n\n if (this.range) {\n dimension = Math.abs(this.maxHandleElement!.position - this.minHandleElement!.position);\n position = positionForRange;\n } else {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n const center = this.viewOptions.showSelectionBarFromValue;\n const centerPosition: number = this.valueToPosition(center!);\n const isModelGreaterThanCenter: boolean = this.viewOptions.rightToLeft\n ? this.viewLowValue! <= center!\n : this.viewLowValue! > center!;\n if (isModelGreaterThanCenter) {\n dimension = this.minHandleElement!.position - centerPosition;\n position = centerPosition + this.handleHalfDimension;\n } else {\n dimension = centerPosition - this.minHandleElement!.position;\n position = this.minHandleElement!.position + this.handleHalfDimension;\n }\n } else if (isSelectionBarFromRight) {\n dimension = Math.ceil(\n Math.abs(this.maxHandlePosition - this.minHandleElement!.position) + this.handleHalfDimension\n );\n position = Math.floor(this.minHandleElement!.position + this.handleHalfDimension);\n } else {\n dimension = this.minHandleElement!.position + this.handleHalfDimension;\n position = 0;\n }\n }\n this.selectionBarElement!.setDimension(dimension);\n this.selectionBarElement!.setPosition(position);\n if (this.range && this.viewOptions.showOuterSelectionBars) {\n if (this.viewOptions.rightToLeft) {\n this.rightOuterSelectionBarElement!.setDimension(position);\n this.rightOuterSelectionBarElement!.setPosition(0);\n this.fullBarElement!.calculateDimension();\n this.leftOuterSelectionBarElement!.setDimension(this.fullBarElement!.dimension - (position + dimension));\n this.leftOuterSelectionBarElement!.setPosition(position + dimension);\n } else {\n this.leftOuterSelectionBarElement!.setDimension(position);\n this.leftOuterSelectionBarElement!.setPosition(0);\n this.fullBarElement!.calculateDimension();\n this.rightOuterSelectionBarElement!.setDimension(this.fullBarElement!.dimension - (position + dimension));\n this.rightOuterSelectionBarElement!.setPosition(position + dimension);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n const color: string = this.getSelectionBarColor();\n this.barStyle = {\n backgroundColor: color\n };\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.selectionBarGradient)) {\n const offset: number = !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)\n ? this.valueToPosition(this.viewOptions.showSelectionBarFromValue!)\n : 0;\n const reversed: boolean =\n (offset - position > 0 && !isSelectionBarFromRight) || (offset - position <= 0 && isSelectionBarFromRight);\n const direction: string = this.viewOptions.vertical ? (reversed ? 'bottom' : 'top') : reversed ? 'left' : 'right';\n this.barStyle = {\n backgroundImage:\n 'linear-gradient(to ' +\n direction +\n ', ' +\n this.viewOptions.selectionBarGradient!.from +\n ' 0%,' +\n this.viewOptions.selectionBarGradient!.to +\n ' 100%)'\n };\n if (this.viewOptions.vertical) {\n this.barStyle.backgroundPosition =\n 'center ' + (offset + dimension + position + (reversed ? -this.handleHalfDimension : 0)) + 'px';\n this.barStyle.backgroundSize = '100% ' + (this.fullBarElement!.dimension - this.handleHalfDimension) + 'px';\n } else {\n this.barStyle.backgroundPosition = offset - position + (reversed ? this.handleHalfDimension : 0) + 'px center';\n this.barStyle.backgroundSize = this.fullBarElement!.dimension - this.handleHalfDimension + 'px 100%';\n }\n }\n }\n\n // Wrapper around the getSelectionBarColor of the user to pass to correct parameters\n private getSelectionBarColor(): string {\n if (this.range) {\n return this.viewOptions.getSelectionBarColor!(this.value!, this.highValue);\n }\n return this.viewOptions.getSelectionBarColor!(this.value!);\n }\n\n // Wrapper around the getPointerColor of the user to pass to correct parameters\n private getPointerColor(pointerType: PointerType): string {\n if (pointerType === PointerType.Max) {\n return this.viewOptions.getPointerColor!(this.highValue!, pointerType);\n }\n return this.viewOptions.getPointerColor!(this.value!, pointerType);\n }\n\n // Wrapper around the getTickColor of the user to pass to correct parameters\n private getTickColor(value: number): string {\n return this.viewOptions.getTickColor!(value);\n }\n\n // Update combined label position and value\n private updateCombinedLabel(): void {\n let isLabelOverlap = false;\n if (this.viewOptions.rightToLeft) {\n isLabelOverlap =\n this.minHandleLabelElement!.position - this.minHandleLabelElement!.dimension - 10 <=\n this.maxHandleLabelElement!.position;\n } else {\n isLabelOverlap =\n this.minHandleLabelElement!.position + this.minHandleLabelElement!.dimension + 10 >=\n this.maxHandleLabelElement!.position;\n }\n\n if (isLabelOverlap) {\n const lowDisplayValue: string = this.getDisplayValue(this.viewLowValue!, LabelType.Low);\n const highDisplayValue: string = this.getDisplayValue(this.viewHighValue!, LabelType.High);\n const combinedLabelValue: string = this.viewOptions.rightToLeft\n ? this.viewOptions.combineLabels!(highDisplayValue, lowDisplayValue)\n : this.viewOptions.combineLabels!(lowDisplayValue, highDisplayValue);\n\n this.combinedLabelElement!.setValue(combinedLabelValue);\n const pos: number = this.viewOptions.boundPointerLabels\n ? Math.min(\n Math.max(\n this.selectionBarElement!.position +\n this.selectionBarElement!.dimension / 2 -\n this.combinedLabelElement!.dimension / 2,\n 0\n ),\n this.fullBarElement!.dimension - this.combinedLabelElement!.dimension\n )\n : this.selectionBarElement!.position +\n this.selectionBarElement!.dimension / 2 -\n this.combinedLabelElement!.dimension / 2;\n\n this.combinedLabelElement!.setPosition(pos);\n this.minHandleLabelElement!.hide();\n this.maxHandleLabelElement!.hide();\n this.combinedLabelElement!.show();\n } else {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue!));\n this.updateLowHandle(this.valueToPosition(this.viewLowValue!));\n this.maxHandleLabelElement!.show();\n this.minHandleLabelElement!.show();\n this.combinedLabelElement!.hide();\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n\n // Return the translated value if a translate function is provided else the original value\n private getDisplayValue(value: number, which: LabelType): string {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n value = this.getStepValue(value);\n }\n return this.viewOptions.translate!(value, which);\n }\n\n // Round value to step and precision based on minValue\n private roundStep(value: number, customStep?: number): number {\n const step = !ValueHelper.isNullOrUndefined(customStep) ? customStep : this.viewOptions.step;\n let steppedDifference: number = MathHelper.roundToPrecisionLimit(\n (value - this.viewOptions.floor!) / step!,\n this.viewOptions.precisionLimit!\n );\n steppedDifference = Math.round(steppedDifference) * step!;\n return MathHelper.roundToPrecisionLimit(\n this.viewOptions.floor! + steppedDifference,\n this.viewOptions.precisionLimit!\n );\n }\n\n // Translate value to pixel position\n private valueToPosition(val: number): number {\n let fn: ValueToPositionFunction = ValueHelper.linearValueToPosition;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customValueToPosition)) {\n fn = this.viewOptions.customValueToPosition!;\n } else if (this.viewOptions.logScale) {\n fn = ValueHelper.logValueToPosition;\n }\n\n val = MathHelper.clampToRange(val, this.viewOptions.floor!, this.viewOptions.ceil!);\n let percent: number = fn(val, this.viewOptions.floor!, this.viewOptions.ceil!);\n if (ValueHelper.isNullOrUndefined(percent)) {\n percent = 0;\n }\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n return percent * this.maxHandlePosition;\n }\n\n // Translate position to model value\n private positionToValue(position: number): number {\n let percent: number = position / this.maxHandlePosition;\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n let fn: PositionToValueFunction = ValueHelper.linearPositionToValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customPositionToValue)) {\n fn = this.viewOptions.customPositionToValue!;\n } else if (this.viewOptions.logScale) {\n fn = ValueHelper.logPositionToValue;\n }\n const value: number = fn(percent, this.viewOptions.floor!, this.viewOptions.ceil!);\n return !ValueHelper.isNullOrUndefined(value) ? value : 0;\n }\n\n // Get the X-coordinate or Y-coordinate of an event\n private getEventXY(event: MouseEvent | TouchEvent, targetTouchId?: number): number {\n if (event instanceof MouseEvent) {\n return this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? event.clientY : event.clientX;\n }\n\n let touchIndex: number = 0;\n const touches: TouchList = event.touches;\n if (!ValueHelper.isNullOrUndefined(targetTouchId)) {\n for (let i: number = 0; i < touches.length; i++) {\n if (touches[i].identifier === targetTouchId) {\n touchIndex = i;\n break;\n }\n }\n }\n\n // Return the target touch or if the target touch was not found in the event\n // returns the coordinates of the first touch\n return this.viewOptions.vertical || this.viewOptions.rotate !== 0\n ? touches[touchIndex].clientY\n : touches[touchIndex].clientX;\n }\n\n // Compute the event position depending on whether the slider is horizontal or vertical\n private getEventPosition(event: MouseEvent | TouchEvent, targetTouchId?: number): number {\n const sliderElementBoundingRect: ClientRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n const sliderPos: number =\n this.viewOptions.vertical || this.viewOptions.rotate !== 0\n ? sliderElementBoundingRect.bottom\n : sliderElementBoundingRect.left;\n let eventPos: number = 0;\n\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n eventPos = -this.getEventXY(event, targetTouchId) + sliderPos;\n } else {\n eventPos = this.getEventXY(event, targetTouchId) - sliderPos;\n }\n\n return eventPos * this.viewOptions.scale! - this.handleHalfDimension;\n }\n\n // Get the handle closest to an event\n private getNearestHandle(event: MouseEvent | TouchEvent): PointerType {\n if (!this.range) {\n return PointerType.Min;\n }\n\n const position: number = this.getEventPosition(event);\n const distanceMin: number = Math.abs(position - this.minHandleElement!.position);\n const distanceMax: number = Math.abs(position - this.maxHandleElement!.position);\n\n if (distanceMin < distanceMax) {\n return PointerType.Min;\n } else if (distanceMin > distanceMax) {\n return PointerType.Max;\n } else if (!this.viewOptions.rightToLeft) {\n // if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH\n return position < this.minHandleElement!.position ? PointerType.Min : PointerType.Max;\n }\n // reverse in rtl\n return position > this.minHandleElement!.position ? PointerType.Min : PointerType.Max;\n }\n\n // Bind mouse and touch events to slider handles\n private bindEvents(): void {\n const draggableRange: boolean = this.viewOptions.draggableRange!;\n\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, undefined, true)\n );\n }\n\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Min)\n );\n this.maxHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Max)\n );\n } else {\n this.minHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, PointerType.Min)\n );\n\n if (this.range) {\n this.maxHandleElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, PointerType.Max)\n );\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, undefined, true)\n );\n this.ticksElement!.on('mousedown', (event: MouseEvent): void =>\n this.onStart(event, true, true, undefined, true, true)\n );\n }\n }\n\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, undefined, true)\n );\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Min)\n );\n this.maxHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onBarStart(draggableRange, event, true, true, PointerType.Max)\n );\n } else {\n this.minHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, PointerType.Min)\n );\n if (this.range) {\n this.maxHandleElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, PointerType.Max)\n );\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, true, true, undefined, true)\n );\n this.ticksElement!.onPassive('touchstart', (event: TouchEvent): void =>\n this.onStart(event, false, false, undefined, true, true)\n );\n }\n }\n\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement!.on('focus', (): void => this.onPointerFocus(PointerType.Min));\n if (this.range) {\n this.maxHandleElement!.on('focus', (): void => this.onPointerFocus(PointerType.Max));\n }\n }\n }\n\n private getOptionsInfluencingEventBindings(options: Options): boolean[] {\n return [\n options.disabled!,\n options.readOnly!,\n options.draggableRange!,\n options.draggableRangeOnly!,\n options.onlyBindHandles!,\n options.keyboardSupport!\n ];\n }\n\n // Unbind mouse and touch events to slider handles\n private unbindEvents(): void {\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n\n for (const element of this.getAllSliderElements()) {\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.off();\n }\n }\n }\n\n private onBarStart(\n draggableRange: boolean,\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType,\n simulateImmediateMove?: boolean,\n simulateImmediateEnd?: boolean\n ): void {\n if (draggableRange) {\n this.onDragStart(event, bindMove, bindEnd, pointerType);\n } else {\n this.onStart(event, bindMove, bindEnd, pointerType, simulateImmediateMove, simulateImmediateEnd);\n }\n }\n\n // onStart event handler\n private onStart(\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType,\n simulateImmediateMove?: boolean,\n simulateImmediateEnd?: boolean\n ): void {\n event.stopPropagation();\n // Only call preventDefault() when handling non-passive events (passive events don't need it)\n if (!CompatibilityHelper.isTouchEvent(event) && !supportsPassiveEvents) {\n event.preventDefault();\n }\n\n this.moving = false;\n\n // We have to do this in case the HTML where the sliders are on\n // have been animated into view.\n this.calculateViewDimensions();\n\n if (ValueHelper.isNullOrUndefined(pointerType)) {\n pointerType = this.getNearestHandle(event);\n }\n\n this.currentTrackingPointer = pointerType;\n\n const pointerElement: SliderHandleDirective = this.getPointerElement(pointerType!)!;\n pointerElement.active = true;\n\n if (this.viewOptions.keyboardSupport) {\n pointerElement.focus();\n }\n\n if (bindMove) {\n this.unsubscribeOnMove();\n\n const onMoveCallback: (e: MouseEvent | TouchEvent) => void = (e: MouseEvent | TouchEvent): void =>\n this.dragging.active ? this.onDragMove(e) : this.onMove(e);\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onMoveEventListener = this.eventListenerHelper!.attachPassiveEventListener(\n document,\n 'touchmove',\n onMoveCallback\n );\n } else {\n this.onMoveEventListener = this.eventListenerHelper!.attachEventListener(document, 'mousemove', onMoveCallback);\n }\n }\n\n if (bindEnd) {\n this.unsubscribeOnEnd();\n\n const onEndCallback: (e: MouseEvent | TouchEvent) => void = (e: MouseEvent | TouchEvent): void => this.onEnd(e);\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onEndEventListener = this.eventListenerHelper!.attachPassiveEventListener(\n document,\n 'touchend',\n onEndCallback\n );\n } else {\n this.onEndEventListener = this.eventListenerHelper!.attachEventListener(document, 'mouseup', onEndCallback);\n }\n }\n\n this.userChangeStart.emit(this.getChangeContext());\n\n if (\n CompatibilityHelper.isTouchEvent(event) &&\n !ValueHelper.isNullOrUndefined((event as TouchEvent).changedTouches)\n ) {\n // Store the touch identifier\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.touchId = (event as TouchEvent).changedTouches[0].identifier;\n }\n }\n\n // Click events, either with mouse or touch gesture are weird. Sometimes they result in full\n // start, move, end sequence, and sometimes, they don't - they only invoke mousedown\n // As a workaround, we simulate the first move event and the end event if it's necessary\n if (simulateImmediateMove) {\n this.onMove(event, true);\n }\n\n if (simulateImmediateEnd) {\n this.onEnd(event);\n }\n }\n\n // onMove event handler\n private onMove(event: MouseEvent | TouchEvent, fromTick?: boolean): void {\n let touchForThisSlider: Touch;\n\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches: TouchList = (event as TouchEvent).changedTouches;\n for (let i: number = 0; i < changedTouches.length; i++) {\n if (changedTouches[i].identifier === this.touchId) {\n touchForThisSlider = changedTouches[i];\n break;\n }\n }\n\n if (ValueHelper.isNullOrUndefined(touchForThisSlider!)) {\n return;\n }\n }\n\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n\n this.moving = true;\n\n const newPos: number = !ValueHelper.isNullOrUndefined(touchForThisSlider!)\n ? this.getEventPosition(event, touchForThisSlider!.identifier)\n : this.getEventPosition(event);\n let newValue: number;\n const ceilValue: number = this.viewOptions.rightToLeft ? this.viewOptions.floor! : this.viewOptions.ceil!;\n const floorValue: number = this.viewOptions.rightToLeft ? this.viewOptions.ceil! : this.viewOptions.floor!;\n\n if (newPos <= 0) {\n newValue = floorValue;\n } else if (newPos >= this.maxHandlePosition) {\n newValue = ceilValue;\n } else {\n newValue = this.positionToValue(newPos);\n if (fromTick && !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) {\n newValue = this.roundStep(newValue, this.viewOptions.tickStep);\n } else {\n newValue = this.roundStep(newValue);\n }\n }\n this.positionTrackingHandle(newValue);\n }\n\n private onEnd(event: MouseEvent | TouchEvent): void {\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches: TouchList = (event as TouchEvent).changedTouches;\n if (changedTouches[0].identifier !== this.touchId) {\n return;\n }\n }\n\n this.moving = false;\n if (this.viewOptions.animate) {\n this.sliderElementAnimateClass = true;\n }\n\n this.touchId = undefined;\n\n if (!this.viewOptions.keyboardSupport) {\n this.minHandleElement!.active = false;\n this.maxHandleElement!.active = false;\n this.currentTrackingPointer = undefined;\n }\n this.dragging.active = false;\n\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n\n this.userChangeEnd.emit(this.getChangeContext());\n }\n\n private onPointerFocus(pointerType: PointerType): void {\n const pointerElement: SliderHandleDirective = this.getPointerElement(pointerType)!;\n pointerElement.on('blur', (): void => this.onPointerBlur(pointerElement));\n pointerElement.on('keydown', (event: KeyboardEvent): void => this.onKeyboardEvent(event));\n pointerElement.on('keyup', (): void => this.onKeyUp());\n pointerElement.active = true;\n\n this.currentTrackingPointer = pointerType;\n this.currentFocusPointer = pointerType;\n this.firstKeyDown = true;\n }\n\n private onKeyUp(): void {\n this.firstKeyDown = true;\n this.userChangeEnd.emit(this.getChangeContext());\n }\n\n private onPointerBlur(pointer: SliderHandleDirective): void {\n pointer.off('blur');\n pointer.off('keydown');\n pointer.off('keyup');\n pointer.active = false;\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.currentTrackingPointer = undefined;\n this.currentFocusPointer = undefined;\n }\n }\n\n private getKeyActions(currentValue: number): { [key: string]: number } {\n const valueRange: number = this.viewOptions.ceil! - this.viewOptions.floor!;\n\n let increaseStep: number = currentValue + this.viewOptions.step!;\n let decreaseStep: number = currentValue - this.viewOptions.step!;\n let increasePage: number = currentValue + valueRange / 10;\n let decreasePage: number = currentValue - valueRange / 10;\n\n if (this.viewOptions.reversedControls) {\n increaseStep = currentValue - this.viewOptions.step!;\n decreaseStep = currentValue + this.viewOptions.step!;\n increasePage = currentValue - valueRange / 10;\n decreasePage = currentValue + valueRange / 10;\n }\n\n // Left to right default actions\n const actions: { [key: string]: number } = {\n UP: increaseStep,\n DOWN: decreaseStep,\n LEFT: decreaseStep,\n RIGHT: increaseStep,\n PAGEUP: increasePage,\n PAGEDOWN: decreasePage,\n HOME: this.viewOptions.reversedControls ? this.viewOptions.ceil! : this.viewOptions.floor!,\n END: this.viewOptions.reversedControls ? this.viewOptions.floor! : this.viewOptions.ceil!\n };\n // right to left means swapping right and left arrows\n if (this.viewOptions.rightToLeft) {\n actions['LEFT'] = increaseStep;\n actions['RIGHT'] = decreaseStep;\n // right to left and vertical means we also swap up and down\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n actions['UP'] = decreaseStep;\n actions['DOWN'] = increaseStep;\n }\n }\n return actions;\n }\n\n private onKeyboardEvent(event: KeyboardEvent): void {\n const currentValue = this.getCurrentTrackingValue()!;\n const keyCode = !ValueHelper.isNullOrUndefined(event.keyCode) ? event.keyCode : event.which;\n const keys: { [keyCode: number]: string } = {\n 38: 'UP',\n 40: 'DOWN',\n 37: 'LEFT',\n 39: 'RIGHT',\n 33: 'PAGEUP',\n 34: 'PAGEDOWN',\n 36: 'HOME',\n 35: 'END'\n };\n const actions: { [key: string]: number } = this.getKeyActions(currentValue);\n const key: string = keys[keyCode];\n const action: number = actions[key];\n\n if (ValueHelper.isNullOrUndefined(action) || ValueHelper.isNullOrUndefined(this.currentTrackingPointer)) {\n return;\n }\n event.preventDefault();\n\n if (this.firstKeyDown) {\n this.firstKeyDown = false;\n this.userChangeStart.emit(this.getChangeContext());\n }\n\n const actionValue: number = MathHelper.clampToRange(action, this.viewOptions.floor!, this.viewOptions.ceil!);\n const newValue: number = this.roundStep(actionValue);\n if (!this.viewOptions.draggableRangeOnly) {\n this.positionTrackingHandle(newValue);\n } else {\n const difference = this.viewHighValue! - this.viewLowValue!;\n let newMinValue: number;\n let newMaxValue: number;\n\n if (this.currentTrackingPointer === PointerType.Min) {\n newMinValue = newValue;\n newMaxValue = newValue + difference;\n if (newMaxValue > this.viewOptions.ceil!) {\n newMaxValue = this.viewOptions.ceil!;\n newMinValue = newMaxValue - difference;\n }\n } else if (this.currentTrackingPointer === PointerType.Max) {\n newMaxValue = newValue;\n newMinValue = newValue - difference;\n if (newMinValue < this.viewOptions.floor!) {\n newMinValue = this.viewOptions.floor!;\n newMaxValue = newMinValue + difference;\n }\n }\n this.positionTrackingBar(newMinValue!, newMaxValue!);\n }\n }\n\n // onDragStart event handler, handles dragging of the middle bar\n private onDragStart(\n event: MouseEvent | TouchEvent,\n bindMove: boolean,\n bindEnd: boolean,\n pointerType?: PointerType\n ): void {\n const position: number = this.getEventPosition(event);\n\n this.dragging = new Dragging();\n this.dragging.active = true;\n this.dragging.value = this.positionToValue(position);\n this.dragging.difference = this.viewHighValue! - this.viewLowValue!;\n this.dragging.lowLimit = this.viewOptions.rightToLeft\n ? this.minHandleElement!.position - position\n : position - this.minHandleElement!.position;\n this.dragging.highLimit = this.viewOptions.rightToLeft\n ? position - this.maxHandleElement!.position\n : this.maxHandleElement!.position - position;\n\n this.onStart(event, bindMove, bindEnd, pointerType);\n }\n\n /** Get min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n private getMinValue(newPos: number, outOfBounds: boolean, isAbove: boolean): number {\n const isRTL = this.viewOptions.rightToLeft!;\n let value: number;\n\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL ? this.viewOptions.floor! : this.viewOptions.ceil! - this.dragging.difference;\n } else {\n value = isRTL ? this.viewOptions.ceil! - this.dragging.difference : this.viewOptions.floor!;\n }\n } else {\n value = isRTL\n ? this.positionToValue(newPos + this.dragging.lowLimit)\n : this.positionToValue(newPos - this.dragging.lowLimit);\n }\n return this.roundStep(value);\n }\n\n /** Get max value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n private getMaxValue(newPos: number, outOfBounds: boolean, isAbove: boolean): number {\n const isRTL = this.viewOptions.rightToLeft!;\n let value: number;\n\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL ? this.viewOptions.floor! + this.dragging.difference : this.viewOptions.ceil!;\n } else {\n value = isRTL ? this.viewOptions.ceil! : this.viewOptions.floor! + this.dragging.difference;\n }\n } else {\n if (isRTL) {\n value = this.positionToValue(newPos + this.dragging.lowLimit) + this.dragging.difference;\n } else {\n value = this.positionToValue(newPos - this.dragging.lowLimit) + this.dragging.difference;\n }\n }\n\n return this.roundStep(value);\n }\n\n private onDragMove(event?: MouseEvent | TouchEvent): void {\n const newPos: number = this.getEventPosition(event!);\n\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n\n this.moving = true;\n\n let ceilLimit: number,\n floorLimit: number,\n floorHandleElement: SliderHandleDirective,\n ceilHandleElement: SliderHandleDirective;\n if (this.viewOptions.rightToLeft) {\n ceilLimit = this.dragging.lowLimit;\n floorLimit = this.dragging.highLimit;\n floorHandleElement = this.maxHandleElement!;\n ceilHandleElement = this.minHandleElement!;\n } else {\n ceilLimit = this.dragging.highLimit;\n floorLimit = this.dragging.lowLimit;\n floorHandleElement = this.minHandleElement!;\n ceilHandleElement = this.maxHandleElement!;\n }\n\n const isUnderFloorLimit: boolean = newPos <= floorLimit;\n const isOverCeilLimit: boolean = newPos >= this.maxHandlePosition - ceilLimit;\n\n let newMinValue: number;\n let newMaxValue: number;\n if (isUnderFloorLimit) {\n if (floorHandleElement.position === 0) {\n return;\n }\n newMinValue = this.getMinValue(newPos, true, false);\n newMaxValue = this.getMaxValue(newPos, true, false);\n } else if (isOverCeilLimit) {\n if (ceilHandleElement.position === this.maxHandlePosition) {\n return;\n }\n newMaxValue = this.getMaxValue(newPos, true, true);\n newMinValue = this.getMinValue(newPos, true, true);\n } else {\n newMinValue = this.getMinValue(newPos, false, false);\n newMaxValue = this.getMaxValue(newPos, false, false);\n }\n\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n\n // Set the new value and position for the entire bar\n private positionTrackingBar(newMinValue: number, newMaxValue: number): void {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newMinValue < this.viewOptions.minLimit!) {\n newMinValue = this.viewOptions.minLimit!;\n newMaxValue = MathHelper.roundToPrecisionLimit(\n newMinValue + this.dragging.difference,\n this.viewOptions.precisionLimit!\n );\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newMaxValue > this.viewOptions.maxLimit!) {\n newMaxValue = this.viewOptions.maxLimit!;\n newMinValue = MathHelper.roundToPrecisionLimit(\n newMaxValue - this.dragging.difference,\n this.viewOptions.precisionLimit!\n );\n }\n\n this.viewLowValue = newMinValue;\n this.viewHighValue = newMaxValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(newMinValue));\n this.updateHandles(PointerType.Max, this.valueToPosition(newMaxValue));\n }\n\n // Set the new value and position to the current tracking handle\n private positionTrackingHandle(newValue: number): void {\n newValue = this.applyMinMaxLimit(newValue);\n if (this.range) {\n if (this.viewOptions.pushRange) {\n newValue = this.applyPushRange(newValue);\n } else {\n if (this.viewOptions.noSwitching) {\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue!) {\n newValue = this.applyMinMaxRange(this.viewHighValue!);\n } else if (this.currentTrackingPointer === PointerType.Max && newValue < this.viewLowValue!) {\n newValue = this.applyMinMaxRange(this.viewLowValue!);\n }\n }\n newValue = this.applyMinMaxRange(newValue);\n /* This is to check if we need to switch the min and max handles */\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue!) {\n this.viewLowValue = this.viewHighValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.maxHandleElement!.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Max;\n this.minHandleElement!.active = false;\n this.maxHandleElement!.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.maxHandleElement!.focus();\n }\n } else if (this.currentTrackingPointer === PointerType.Max && newValue < this.viewLowValue!) {\n this.viewHighValue = this.viewLowValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.minHandleElement!.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Min;\n this.maxHandleElement!.active = false;\n this.minHandleElement!.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement!.focus();\n }\n }\n }\n }\n\n if (this.getCurrentTrackingValue() !== newValue) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewLowValue = newValue;\n this.applyViewChange();\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewHighValue = newValue;\n this.applyViewChange();\n }\n this.updateHandles(this.currentTrackingPointer!, this.valueToPosition(newValue));\n this.updateAriaAttributes();\n }\n }\n\n private applyMinMaxLimit(newValue: number): number {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newValue < this.viewOptions.minLimit!) {\n return this.viewOptions.minLimit!;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newValue > this.viewOptions.maxLimit!) {\n return this.viewOptions.maxLimit!;\n }\n return newValue;\n }\n\n private applyMinMaxRange(newValue: number): number {\n const oppositeValue = this.currentTrackingPointer === PointerType.Min ? this.viewHighValue : this.viewLowValue;\n const difference: number = Math.abs(newValue - oppositeValue!);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange)) {\n if (difference < this.viewOptions.minRange!) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(\n this.viewHighValue! - this.viewOptions.minRange!,\n this.viewOptions.precisionLimit!\n );\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(\n this.viewLowValue! + this.viewOptions.minRange!,\n this.viewOptions.precisionLimit!\n );\n }\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxRange)) {\n if (difference > this.viewOptions.maxRange!) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(\n this.viewHighValue! - this.viewOptions.maxRange!,\n this.viewOptions.precisionLimit!\n );\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(\n this.viewLowValue! + this.viewOptions.maxRange!,\n this.viewOptions.precisionLimit!\n );\n }\n }\n }\n return newValue;\n }\n\n private applyPushRange(newValue: number): number {\n const difference: number =\n this.currentTrackingPointer === PointerType.Min ? this.viewHighValue! - newValue : newValue - this.viewLowValue!;\n const minRange = !ValueHelper.isNullOrUndefined(this.viewOptions.minRange)\n ? this.viewOptions.minRange!\n : this.viewOptions.step!;\n const maxRange = this.viewOptions.maxRange!;\n // if smaller than minRange\n if (difference < minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(\n Math.min(newValue + minRange, this.viewOptions.ceil!),\n this.viewOptions.precisionLimit!\n );\n newValue = MathHelper.roundToPrecisionLimit(this.viewHighValue - minRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(\n Math.max(newValue - minRange, this.viewOptions.floor!),\n this.viewOptions.precisionLimit!\n );\n newValue = MathHelper.roundToPrecisionLimit(this.viewLowValue + minRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n } else if (!ValueHelper.isNullOrUndefined(maxRange) && difference > maxRange) {\n // if greater than maxRange\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(newValue + maxRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n } else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(newValue - maxRange, this.viewOptions.precisionLimit!);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n return newValue;\n }\n\n private getChangeContext(): ChangeContext {\n const changeContext: ChangeContext = new ChangeContext();\n changeContext.pointerType = this.currentTrackingPointer;\n changeContext.value = +this.value!;\n if (this.range) {\n changeContext.highValue = +this.highValue!;\n }\n return changeContext;\n }\n}\n","<!-- // 0 Left selection bar outside two handles -->\n<span\n ngxSliderElement\n #leftOuterSelectionBar\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-left-out-selection\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 1 Right selection bar outside two handles -->\n<span\n ngxSliderElement\n #rightOuterSelectionBar\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-right-out-selection\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 2 The whole slider bar -->\n<span\n ngxSliderElement\n #fullBar\n [class.ngx-slider-transparent]=\"fullBarTransparentClass\"\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-full-bar\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar\"></span>\n</span>\n<!-- // 3 Selection bar between two handles -->\n<span\n ngxSliderElement\n #selectionBar\n [class.ngx-slider-draggable]=\"selectionBarDraggableClass\"\n class=\"ngx-slider-span ngx-slider-bar-wrapper ngx-slider-selection-bar\"\n>\n <span class=\"ngx-slider-span ngx-slider-bar ngx-slider-selection\" [ngStyle]=\"barStyle\"></span>\n</span>\n<!-- // 4 Low slider handle -->\n<span\n ngxSliderHandle\n #minHandle\n class=\"ngx-slider-span ngx-slider-pointer ngx-slider-pointer-min\"\n [ngStyle]=\"minPointerStyle\"\n></span>\n<!-- // 5 High slider handle -->\n<span\n ngxSliderHandle\n #maxHandle\n [style.display]=\"range ? 'inherit' : 'none'\"\n class=\"ngx-slider-span ngx-slider-pointer ngx-slider-pointer-max\"\n [ngStyle]=\"maxPointerStyle\"\n></span>\n<!-- // 6 Floor label -->\n<span ngxSliderLabel #floorLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-limit ngx-slider-floor\"></span>\n<!-- // 7 Ceiling label -->\n<span ngxSliderLabel #ceilLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-limit ngx-slider-ceil\"></span>\n<!-- // 8 Label above the low slider handle -->\n<span ngxSliderLabel #minHandleLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-model-value\"></span>\n<!-- // 9 Label above the high slider handle -->\n<span ngxSliderLabel #maxHandleLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-model-high\"></span>\n<!-- // 10 Combined range label when the slider handles are close ex. 15 - 17 -->\n<span ngxSliderLabel #combinedLabel class=\"ngx-slider-span ngx-slider-bubble ngx-slider-combined\"></span>\n<!-- // 11 The ticks -->\n<span\n ngxSliderElement\n #ticksElement\n [hidden]=\"!showTicks\"\n [class.ngx-slider-ticks-values-under]=\"ticksUnderValuesClass\"\n class=\"ngx-slider-ticks\"\n>\n @for (t of ticks; track t) {\n <span class=\"ngx-slider-tick\" [ngClass]=\"{ 'ngx-slider-selected': t.selected }\" [ngStyle]=\"t.style\">\n <ngx-slider-tooltip-wrapper\n [template]=\"tooltipTemplate\"\n [tooltip]=\"t.tooltip\"\n [placement]=\"t.tooltipPlacement\"\n ></ngx-slider-tooltip-wrapper>\n @if (t.value !== null) {\n <ngx-slider-tooltip-wrapper\n class=\"ngx-slider-span ngx-slider-tick-value\"\n [template]=\"tooltipTemplate\"\n [tooltip]=\"t.valueTooltip\"\n [placement]=\"t.valueTooltipPlacement\"\n [content]=\"t.value\"\n ></ngx-slider-tooltip-wrapper>\n }\n @if (t.legend !== null) {\n <span class=\"ngx-slider-span ngx-slider-tick-legend\" [innerHTML]=\"t.legend\"></span>\n }\n </span>\n }\n</span>\n","import { NgModule } from '@angular/core';\nimport { DfSliderDirectionDirective } from './direction/sliderdirection.directive';\nimport { SliderComponent } from './lib/slider.component';\nimport { SliderElementDirective } from './lib/slider-element.directive';\nimport { SliderHandleDirective } from './lib/slider-handle.directive';\nimport { SliderLabelDirective } from './lib/slider-label.directive';\nimport { TooltipWrapperComponent } from './lib/tooltip-wrapper.component';\n\n/**\n * @deprecated DfSliderModule is deprecated.\n * Use {@link https://design-factory.amadeus.net/components/slider/agnosui AgnosUI Slider} instead.\n */\n@NgModule({\n imports: [\n SliderComponent,\n SliderElementDirective,\n SliderHandleDirective,\n SliderLabelDirective,\n TooltipWrapperComponent,\n DfSliderDirectionDirective\n ],\n exports: [DfSliderDirectionDirective, SliderComponent]\n})\nexport class DfSliderModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * A configuration service for the [DfSideNavService](#/components/sidenav/api#DfSideNavComponent) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for your sidenav used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class DfSideNavConfig {\n isMinmized = false;\n isCollapsed = false;\n isPresent = false;\n isInMenuOverlay = true;\n isAppOverlay = false;\n isAppOverlayMode = true;\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { DfSideNavConfig } from './sidenav-config';\n\nexport interface DfSideNavItem {\n value: string;\n title?: string;\n icon?: string | TemplateRef<any>;\n isExternal?: boolean;\n isActive?: boolean;\n isCollapsed?: boolean;\n breakpoints?: string[];\n subMenus?: DfSideNavItem[];\n type?: DfNavItemType;\n}\n\nexport enum DfNavItemType {\n subMenus,\n actionButton,\n routerLink,\n link,\n externalLink,\n separator,\n template,\n title\n}\n\n/**\n * A service for managing the sidenav panel.\n * This service is included at root level\n *\n * Creating a sidenav is straightforward: use [DfSideNavComponent](#/components/sidenav/api#DfSideNavComponent) component\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfSideNavService implements OnDestroy {\n public type = DfNavItemType;\n private readonly _sideNavItems$;\n private readonly _isMinmized$;\n private readonly _isCollapsed$;\n private readonly _isPresent$;\n private readonly _activeItem$;\n private readonly _isInMenuOverlay$;\n private readonly _isAppOverlay$;\n private _isAppOverlayMode;\n private _items: DfSideNavItem[] = [];\n private readonly subscription: Subscription = new Subscription();\n\n constructor(private readonly config: DfSideNavConfig) {\n this._sideNavItems$ = new BehaviorSubject<DfSideNavItem[]>([]);\n this._isMinmized$ = new BehaviorSubject<boolean>(config.isMinmized);\n this._isCollapsed$ = new BehaviorSubject<boolean>(config.isCollapsed);\n this._isPresent$ = new BehaviorSubject<boolean>(config.isPresent);\n this._isInMenuOverlay$ = new BehaviorSubject<boolean>(config.isInMenuOverlay);\n this._isAppOverlay$ = new BehaviorSubject<boolean>(config.isAppOverlay);\n this._activeItem$ = new BehaviorSubject<DfSideNavItem | null>(null);\n this._isAppOverlayMode = config.isAppOverlayMode;\n this.subscription.add(\n this._isCollapsed$.subscribe(() => {\n this.updateOverLay();\n })\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * Use this to init the list of Elements from your sidenav\n *\n *\n * Second option withRouter is to be set to false if you are not passing link string for the angular Router\n * Here we are not deep copying the array --> the function will change it\n */\n initItems(items: DfSideNavItem[], withRouter = true) {\n this._items = items;\n this.addNavItemType(withRouter);\n this.setActiveItem(this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to inactivate the list of Elements from your sidenav\n * isActive properties of all items will be set to false recursively\n *\n */\n inactiveItems(list: DfSideNavItem[]) {\n list.forEach((item) => {\n item.isActive = false;\n if (item.subMenus) {\n this.inactiveItems(item.subMenus);\n }\n });\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to active the item pass as input\n * This function inactivate all the other items of the service\n * It will then dispatch the list of items of the sideNav to activeItem$\n *\n */\n activeItem(item: DfSideNavItem) {\n this.inactiveItems(this._items);\n item.isActive = true;\n this._activeItem$.next(item);\n this.dispatchSideNavItems();\n }\n\n /**\n * Getter to know when to put/remove the overlay.\n * `True` in case of overlay needed\n *\n */\n get isAppOverlay$(): Observable<boolean> {\n return this._isAppOverlay$.asObservable();\n }\n\n /**\n * Getter to know if the sidenav is in an overlay panel or not\n * `True` in case of overlay panel\n *\n */\n get isInMenuOverlay$(): Observable<boolean> {\n return this._isInMenuOverlay$.asObservable();\n }\n\n /**\n * Getter to know the current activeItem a user clicked on\n *\n */\n get activeItem$(): Observable<DfSideNavItem | null> {\n return this._activeItem$.asObservable();\n }\n\n /**\n * Getter to know if the sideNav is present in the page\n * SideNav may be collapsed here or not\n *\n */\n get isPresent$(): Observable<boolean> {\n return this._isPresent$.asObservable();\n }\n\n /**\n * Future Options\n */\n get isMinimized$(): Observable<boolean> {\n return this._isMinmized$.asObservable();\n }\n\n /**\n * Getter to know if the SideNav is collapsed or not\n * If `true` the SideNav is collapsed\n *\n */\n get isCollapsed$(): Observable<boolean> {\n return this._isCollapsed$.asObservable();\n }\n\n /**\n * Getter of the SideNav Items after they have beens changed\n *\n */\n get sideNavItems$(): Observable<DfSideNavItem[]> {\n return this._sideNavItems$.asObservable();\n }\n\n /**\n * Getter to know the mode Apply for the SideNav\n * If `true` the SideNav can be in overlay (but not necessary is).\n *\n */\n get isAppOverlayMode() {\n return this._isAppOverlayMode;\n }\n\n // initItems must be used to push new items to the service\n get items(): DfSideNavItem[] {\n return this._items;\n }\n\n /**\n * Use this to toggle a SideNav Item (either from expand to collapse or the other way around).\n * isCollapsed attribute of the input item is changed.\n * All items are push again to the stream of items.\n * This is used internally by the SideNav in case of click and Enter on an Item with subMenus\n */\n toggle(itemInput: DfSideNavItem) {\n itemInput.isCollapsed = !itemInput.isCollapsed;\n this.dispatchSideNavItems();\n }\n\n /**\n *\n * @param itemInput\n */\n collapseItem(itemInput: DfSideNavItem) {\n this.collapse(itemInput, this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to collapseAll items\n */\n collapseAllItems() {\n this.collapseAll(this._items);\n this.dispatchSideNavItems();\n }\n\n /**\n * Use this to set/unset the SideNav in an Overlay Menu\n * If input is `True` then the SideNav will be in an Overlay Menu\n * (when not collapsed)\n *\n */\n setInMenuSideNav(on: boolean) {\n this._isInMenuOverlay$.next(on);\n }\n\n /**\n * Use this to collapse the SideNav\n *\n */\n hideSideNav() {\n this._isCollapsed$.next(true);\n }\n\n /**\n * Use this to make the SideNav visible (uncollapse)\n *\n */\n showSideNav() {\n this._isCollapsed$.next(false);\n }\n\n /**\n * Use this to toggle the SideNav status collapse/visible\n *\n */\n toggleSideNav() {\n this._isCollapsed$.next(!this._isCollapsed$.value);\n }\n\n // internal usage from the SideNav. Call when component is destroy\n removeSideBar() {\n this._isCollapsed$.next(this.config.isCollapsed);\n this._isPresent$.next(false);\n }\n\n /**\n * Use this to set the App Overlay Mode\n * Input `True` if you want to set the AppOverlay\n * An event is send to isAppOverlay$ depending on your status\n * if Input = `True` and isCollapsed = `False` then isAppOverlay$\n * will be `True`\n *\n */\n setAppOverlayMode(on: boolean) {\n this._isAppOverlayMode = on;\n this.updateOverLay();\n }\n\n // Internal usage to the sidenav component\n // Do not use\n setSideNav() {\n this._isPresent$.next(true);\n }\n\n /**\n *\n * @param itemInput\n * @param itemsList\n */\n private collapse(itemInput: DfSideNavItem, itemsList: DfSideNavItem[]): boolean {\n for (const item of itemsList) {\n if (item === itemInput && item.subMenus) {\n item.isCollapsed = true;\n return true; // propagate the collapse up\n } else if (item === itemInput) {\n return true;\n } else if (item.subMenus) {\n const needcol = this.collapse(itemInput, item.subMenus);\n if (needcol) {\n item.isCollapsed = true; // collapse it\n return true; // propagate the collapse up\n }\n }\n }\n return false;\n }\n\n /**\n *\n * @param itemsList\n */\n private collapseAll(itemsList: DfSideNavItem[]) {\n itemsList.forEach((item) => {\n if (item.subMenus) {\n item.isCollapsed = true;\n this.collapseAll(item.subMenus);\n }\n });\n }\n\n // Only one item at the time must be active\n // Active flag in item is only valid for action button and link\n // Router link does not use this active flag to work\n // It is up to you to inactivateItems when needed when you mix actionButton and router link\n // To avoid more than one active state visible\n private setActiveItem(items: DfSideNavItem[], foundAnActive = false): boolean {\n let foundActive = foundAnActive;\n items.forEach((item) => {\n if (item.isActive && foundAnActive) {\n throw Error('DfSideNavService must be init with only one isActive item');\n } else if (item.isActive) {\n this._activeItem$.next(item);\n foundActive = true;\n }\n if (item.subMenus) {\n foundActive = this.setActiveItem(item.subMenus, foundActive);\n }\n });\n return foundActive;\n }\n\n private addNavItemType(withRouter: boolean, items: DfSideNavItem[] = this._items) {\n items.forEach((item) => {\n if (!item.type) {\n if (item.subMenus) {\n item.type = DfNavItemType.subMenus;\n } else if (item.isExternal) {\n item.type = DfNavItemType.externalLink;\n } else if (withRouter) {\n item.type = DfNavItemType.routerLink;\n } else {\n item.type = DfNavItemType.actionButton;\n }\n }\n if (item.subMenus) {\n this.addNavItemType(withRouter, item.subMenus);\n }\n });\n }\n\n private dispatchSideNavItems() {\n this._sideNavItems$.next(this._items);\n }\n\n private updateOverLay() {\n this._isAppOverlay$.next(this.isAppOverlayMode && this._isCollapsed$.value === false);\n }\n}\n","export const environment = {\n animation: true,\n transitionTimerDelayMs: 5\n};\n","import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone Angular Zone element\n */\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: any) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe(onNext, onError, onComplete);\n });\n };\n}\n\nexport function getTransitionDurationMs(element: HTMLElement) {\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nexport function reflow(element: HTMLElement) {\n return (element || document.body).getBoundingClientRect();\n}\n","import { NgZone } from '@angular/core';\nimport { environment } from '../../../environment';\nimport { EMPTY, fromEvent, Observable, of, race, Subject, timer } from 'rxjs';\nimport { endWith, filter, takeUntil } from 'rxjs/operators';\nimport { getTransitionDurationMs, runInZone } from './util';\n\nexport type NgbTransitionStartFn<T = any> = (\n element: HTMLElement,\n animation: boolean,\n context: T\n) => NgbTransitionEndFn | void;\nexport type NgbTransitionEndFn = () => void;\n\nexport interface NgbTransitionOptions<T> {\n animation: boolean;\n runningTransition: 'continue' | 'stop';\n context?: T;\n}\n\nexport interface NgbTransitionCtx<T> {\n transition$: Subject<any>;\n complete: () => void;\n context: T;\n}\n\nconst noopFn: NgbTransitionEndFn = () => {};\n\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map<HTMLElement, NgbTransitionCtx<any>>();\n\nexport const ngbRunTransition = <T>(\n zone: NgZone,\n element: HTMLElement,\n startFn: NgbTransitionStartFn<T>,\n options: NgbTransitionOptions<T>\n): Observable<undefined> => {\n // Getting initial context from options\n let context = options.context || ({} as T);\n\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n\n // Starting a new transition\n const transition$ = new Subject<any>();\n const finishTransition$ = new Subject<any>();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next({});\n finishTransition$.complete();\n },\n context\n });\n\n const transitionDurationMs = getTransitionDurationMs(element);\n\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(\n takeUntil(stop$),\n filter(({ target }) => target === element)\n );\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n\n race(timer$, transitionEnd$, finishTransition$)\n .pipe(takeUntil(stop$))\n .subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next({});\n transition$.complete();\n });\n });\n });\n\n return transition$.asObservable();\n};\n\nexport const ngbCompleteTransition = (element: HTMLElement) => {\n runningTransitions.get(element)?.complete();\n};\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '@ng-bootstrap/ng-bootstrap';\n\n/**\n * A configuration service for the [DfSideNavCollapseDirective](#/components/sidenav/api#DfSideNavCollapseDirective) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for the sideNav used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class DfSideNavCollapseConfig {\n private _animation?: boolean;\n\n constructor(private readonly _ngbConfig: NgbConfig) {}\n\n get animation(): boolean {\n return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n }\n set animation(animation: boolean) {\n this._animation = animation;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DfSideNavCollapseConfig } from './dfSideNavCollapseConfig';\n\n/**\n * A service for managing the sidenav panel animation.\n * This service is included at root level\n *\n * Creating a sidenav is straightforward: use [DfSideNavComponent](#/components/sidenav/api#DfSideNavComponent) component\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DfSideNavCollapseService {\n private readonly _sideNavAnimation$;\n\n constructor(private readonly _config: DfSideNavCollapseConfig) {\n this._sideNavAnimation$ = new BehaviorSubject<boolean>(_config.animation);\n }\n\n get sideNavAnimation$(): Observable<boolean> {\n return this._sideNavAnimation$.asObservable();\n }\n\n /**\n * Use this to activate or desactivate the animation for the sideNav\n * If input is `True` it will activate the animation.\n * Default value for animation is set in by DfSideNavCollapseConfig\n *\n */\n setAnimation(on: boolean) {\n this._sideNavAnimation$.next(on);\n }\n}\n","import { NgbTransitionStartFn } from '../animation/ngbTransition';\nimport { reflow } from '../animation/util';\n\nexport interface DfSideNavCollapseCtx {\n direction: 'show' | 'hide';\n maxWidth?: string;\n minimized?: boolean;\n}\n\nfunction measureCollapsingElementWidthPx(element: HTMLElement): string {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n\n const { classList } = element;\n const hasShownClass = classList.contains('df-show');\n if (!hasShownClass) {\n classList.add('df-show');\n }\n\n element.style.width = '';\n const width = `${element.getBoundingClientRect().width}px`;\n\n if (!hasShownClass) {\n classList.remove('df-show');\n }\n\n return width;\n}\n\nexport const DfCollapsingTransition: NgbTransitionStartFn<DfSideNavCollapseCtx> = (\n element: HTMLElement,\n animation: boolean,\n context: DfSideNavCollapseCtx\n) => {\n const { direction, minimized } = context;\n let { maxWidth } = context;\n const { classList } = element;\n const dfcollapsingClass = 'df-collapsing';\n const dfminimizingClass = 'df-minimizing';\n\n function setInitialClasses() {\n if (minimized) {\n classList.add('df-minimized');\n } else {\n classList.add('df-collapse');\n }\n if (direction === 'show') {\n classList.add('df-show');\n } else {\n classList.remove('df-show');\n }\n }\n\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return () => {};\n }\n\n // No maxWidth -> running the transition for the first time\n if (!maxWidth) {\n maxWidth = measureCollapsingElementWidthPx(element);\n context.maxWidth = maxWidth;\n\n // Fix the width before starting the animation\n element.style.width = direction !== 'show' ? maxWidth : minimized ? '50px' : '0px';\n\n classList.remove('df-collapse');\n classList.remove('df-minimized'); // add\n classList.remove(dfcollapsingClass);\n classList.remove(dfminimizingClass);\n classList.remove('df-show');\n\n reflow(element);\n\n // Start the animation\n if (minimized) {\n classList.add(dfminimizingClass);\n } else {\n classList.add(dfcollapsingClass);\n }\n }\n\n // Start or revert the animation\n element.style.width = direction === 'show' ? maxWidth : minimized ? '50px' : '0px';\n\n return () => {\n setInitialClasses();\n classList.remove(dfcollapsingClass);\n classList.remove(dfminimizingClass);\n element.style.width = '';\n };\n};\n","import {\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n NgZone,\n OnInit,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { ngbRunTransition } from '../animation/ngbTransition';\nimport { Observable } from 'rxjs';\nimport { DfSideNavCollapseService } from './dfSideNavCollapse.service';\nimport { DfCollapsingTransition } from './dfSideNavAnimation';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * A directive to provide a simple way of hiding and showing the sideNav on the page.\n */\n@Directive({ selector: '[dfSideNavCollapse]', exportAs: 'dfSideNavCollapse' })\nexport class DfSideNavCollapseDirective implements OnInit {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n readonly dfSideNavCollapse = input.required<boolean>();\n private readonly collapsed = signal(false);\n readonly minimized = input(false);\n\n readonly dfSideNavCollapseChange = output<boolean>();\n\n /**\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\n *\n * @since 9.1.0\n */\n readonly shown = output<void>();\n\n /**\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\n *\n * @since 9.1.0\n */\n readonly hidden = output<void>();\n\n private readonly elementRef = inject(ElementRef);\n private readonly sideNavCollapseService = inject(DfSideNavCollapseService);\n private readonly zone = inject(NgZone);\n private readonly injector = inject(Injector);\n\n private animation = false;\n\n constructor() {\n effect(() => {\n this.collapsed.set(this.dfSideNavCollapse());\n });\n this.sideNavCollapseService.sideNavAnimation$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.animation = value;\n });\n }\n\n ngOnInit() {\n let firstRun = true;\n effect(\n () => {\n const collapsed = this.collapsed();\n // we only track the collapsed signal\n untracked(() => {\n // first time the effect is run, we run the transition without triggering event emitters\n if (firstRun) {\n this.runTransition(collapsed, this.animation, this.minimized());\n } else {\n this.runTransitionWithEvents(collapsed, this.animation, this.minimized());\n }\n firstRun = false;\n });\n },\n { injector: this.injector }\n );\n }\n\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 9.1.0\n */\n toggle(open: boolean = this.collapsed()) {\n this.collapsed.set(!open);\n }\n\n private runTransition(collapsed: boolean, animation: boolean, minimizedInput: boolean): Observable<any> {\n return ngbRunTransition(this.zone, this.elementRef.nativeElement, DfCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: collapsed ? 'hide' : 'show', minimized: minimizedInput }\n });\n }\n\n private runTransitionWithEvents(collapsed: boolean, animation: boolean, minimized: boolean) {\n this.runTransition(collapsed, animation, minimized).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n } else {\n this.shown.emit();\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfSideNavCollapseDirective } from './dfSideNavCollapse';\n\nexport { DfSideNavCollapseDirective } from './dfSideNavCollapse';\nexport { DfSideNavCollapseConfig } from './dfSideNavCollapseConfig';\n\n@NgModule({\n imports: [DfSideNavCollapseDirective],\n exports: [DfSideNavCollapseDirective]\n})\nexport class DfSideNavCollapseModule {}\n","import { AfterViewChecked, Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[dfManageSideNav]'\n})\nexport class DfManageSideNavDirective implements AfterViewChecked {\n constructor(\n private readonly element: ElementRef,\n private readonly renderer: Renderer2\n ) {}\n\n ngAfterViewChecked() {\n if (this.element.nativeElement.querySelector('.active')) {\n this.renderer.addClass(this.element.nativeElement, 'df-sidenav-list-withactivated');\n } else {\n this.renderer.removeClass(this.element.nativeElement, 'df-sidenav-list-withactivated');\n }\n }\n}\n","/**\n * @param element the HTML element\n * @returns whether the element is overflowing\n */\nexport function hasOverflow(element: HTMLElement): boolean {\n return hasOverflowX(element) || hasOverflowY(element);\n}\n\n/**\n * @param element the HTML element\n * @returns whether the element is overflowing horizontally\n */\nexport function hasOverflowX(element: HTMLElement): boolean {\n return element.offsetWidth < element.scrollWidth;\n}\n\n/**\n * @param element the HTML element\n * @returns whether the element is overflowing vertically\n */\nexport function hasOverflowY(element: HTMLElement): boolean {\n return element.offsetHeight < element.scrollHeight;\n}\n","import { Directive, DoCheck, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\nimport { hasOverflow } from './html-element-helper';\n\n/**\n * DfTitleTruncate directive\n * It adds the title attribute with the element's textContent as value\n * when the element is truncated.\n */\n@Directive({\n exportAs: 'dfTitleTruncate',\n selector: '[dfTitleTruncate]'\n})\nexport class DfTitleTruncateDirective implements OnInit, DoCheck {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');\n }\n\n ngDoCheck() {\n const { nativeElement } = this.elementRef;\n const titleAttributeName = 'title';\n if (hasOverflow(nativeElement)) {\n nativeElement.setAttribute(titleAttributeName, nativeElement.textContent);\n } else if (nativeElement.getAttribute(titleAttributeName)) {\n nativeElement.removeAttribute(titleAttributeName);\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, inject, input } from '@angular/core';\nimport { DfSideNavService } from './sidenav.service';\nimport { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RouterModule } from '@angular/router';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { DfSideNavCollapseModule } from './dfSideNavCollapse.module';\nimport type { DfSideNavItem } from './sidenav.service';\nimport { DfSideNavIconDirective, DfSideNavItemDirective } from './sidenav.component';\nimport { DfManageSideNavDirective } from './manage-sidenav.directive';\nimport { DfTitleTruncateDirective } from '../utils/titleTruncate.directive';\n\nlet uniqueId = 0;\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n *\n * It supports several options as:\n * - Being in an overlay menu or not\n * - Being collapsed or not\n * - Can be used with or without Angular Router\n * - Can be used with media queries to adjust behavior to different breakpoints (see media section)\n */\n// TODO cannot set to OnPush without a refactor of DfSideNavService\n// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n@Component({\n selector: 'df-sidenavlist',\n templateUrl: './sidenavlist.component.html',\n imports: [\n NgTemplateOutlet,\n NgbCollapseModule,\n RouterModule,\n DfMediaModule,\n DfSideNavCollapseModule,\n DfManageSideNavDirective,\n DfTitleTruncateDirective\n ]\n})\nexport class DfSideNavListComponent {\n readonly items = input.required<DfSideNavItem[]>();\n readonly tplIcon = input<DfSideNavIconDirective>();\n readonly tplItem = input<DfSideNavItemDirective>();\n readonly currentItem = input<DfSideNavItem>();\n readonly id = input<string>();\n\n readonly controlledUniqueId = this.getControlledUniqueId();\n readonly sideNavService = inject(DfSideNavService);\n\n getControlledUniqueId(): string {\n uniqueId++;\n return `df-sidenav-id-${uniqueId};`;\n }\n}\n","<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem()?.isCollapsed ?? false\" [attr.id]=\"id()\">\n @for (item of items(); track item; let i = $index) {\n <li dfManageSideNav>\n <ng-template #dfSideNavItemContent>\n @let tIcon = tplIcon();\n @if (tIcon && item.icon) {\n <ng-template\n [ngTemplateOutlet]=\"tIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n } @else if (item.icon) {\n <span aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-3\"></span>\n }\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n @switch (item.type) {\n @case (sideNavService.type.subMenus) {\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n @let tIcon = tplIcon();\n @if (tIcon && item.icon) {\n <ng-template\n [ngTemplateOutlet]=\"tIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n } @else if (item.icon) {\n <span aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-3\"></span>\n }\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3 df-sidenav-collapse-icon fa-light\"\n [class.fa-chevron-down]=\"item.isCollapsed\"\n [class.fa-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem()\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.actionButton) {\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.routerLink) {\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.separator) {\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n }\n }\n @case (sideNavService.type.template) {\n @let tItem = tplItem();\n @if (tItem) {\n <ng-template\n [ngTemplateOutlet]=\"tItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n }\n }\n @case (sideNavService.type.title) {\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n }\n }\n @default {\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n @if (!item.breakpoints) {\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n } @else {\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n }\n }\n }\n </li>\n }\n</ul>\n","import {\n Component,\n Directive,\n OnDestroy,\n TemplateRef,\n inject,\n contentChild,\n signal,\n computed,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { DfSideNavService } from './sidenav.service';\nimport { CommonModule } from '@angular/common';\nimport { DfSideNavListComponent } from './sidenavlist.component';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\n\n@Directive({ selector: 'ng-template[dfSideNavHeader]' })\nexport class DfSideNavHeaderDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({ selector: 'ng-template[dfSideNavIcon]' })\nexport class DfSideNavIconDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({ selector: 'ng-template[dfSideNavItem]' })\nexport class DfSideNavItemDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n *\n * It supports several options as:\n * - Being in an overlay menu or not\n * - Being collapsed or not\n * - Can be used with or without Angular Router\n * - Can be used with media queries to adjust behavior to different breakpoints (see media section)\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav',\n templateUrl: './sidenav.component.html',\n imports: [CommonModule, DfSideNavListComponent],\n host: {\n '[class]': 'classes()'\n }\n})\nexport class DfSideNavComponent implements OnDestroy {\n readonly tplHeader = contentChild(DfSideNavHeaderDirective);\n readonly tplIcon = contentChild(DfSideNavIconDirective);\n readonly tplItem = contentChild(DfSideNavItemDirective);\n\n readonly overlayClass = signal(false);\n readonly classes = computed(\n () => `df-sidenav-light d-flex flex-column flex-shrink-0${this.overlayClass() ? ' df-sidenav-menu-overlay' : ''}`\n );\n private readonly sideNavService = inject(DfSideNavService);\n readonly navItems = toSignal(this.sideNavService.sideNavItems$, { initialValue: [] });\n\n constructor() {\n this.sideNavService.isInMenuOverlay$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.overlayClass.set(value);\n });\n setTimeout(() => this.sideNavService.setSideNav());\n }\n\n ngOnDestroy() {\n this.sideNavService.removeSideBar();\n }\n}\n","<div class=\"df-scroll-content\">\n @if (tplHeader(); as tplHeader) {\n <ng-template [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n }\n <df-sidenavlist [items]=\"navItems()\" [tplIcon]=\"tplIcon()\" [tplItem]=\"tplItem()\" />\n</div>\n","import { Directive, ElementRef, inject, input, NgZone, OnDestroy, OnInit } from '@angular/core';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\n\n/**\n * The directive to catch focusin event and put the focus at a defined position in the page\n *\n * @deprecated use {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert inert} instead\n * @since 9.1.0\n */\n@Directive({\n selector: '[dfExcludeTrap]'\n})\nexport class DfExcludeTrapDirective implements OnDestroy, OnInit {\n private subscription: Subscription = new Subscription();\n private subscriptionInput?: Subscription;\n\n /**\n * The CSS selector used to get the element to put the focus when catched\n *\n */\n readonly dfExcludeTrapSelector = input('');\n\n /**\n * The Observable to enable or disable the ExcludeTrap\n * If `True` the excludeTrap will work\n */\n readonly dfExcludeTrap = input.required<Observable<boolean>>();\n\n private readonly zone = inject(NgZone);\n private readonly element = inject(ElementRef);\n\n init() {\n this.subscription = fromEvent<FocusEvent>(this.element.nativeElement, 'focusin').subscribe(() => {\n const el = document.querySelector(this.dfExcludeTrapSelector()) as HTMLElement;\n if (el) {\n el.focus();\n }\n });\n }\n\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.subscriptionInput = this.dfExcludeTrap().subscribe((isPresent) => {\n if (isPresent) {\n this.init();\n } else {\n this.subscription.unsubscribe();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n if (this.subscriptionInput) {\n this.subscriptionInput.unsubscribe();\n }\n }\n}\n","export const DF_SELECT_CLASS = 'df-ym';\n","import { Directive, Host, ElementRef, HostListener, OnInit, Renderer2 } from '@angular/core';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../../right-to-left/directionDetection.service';\nimport { DF_SELECT_CLASS } from '../select.model';\n\n@Directive({\n selector: '[dfManageNavSelect]'\n})\nexport class DfManageNavSelectDirective implements OnInit {\n private direction!: string;\n\n constructor(\n @Host() private readonly select: NgSelectComponent,\n private readonly element: ElementRef,\n private readonly rtlDirectionService: DfDirectionDetectionService,\n private readonly renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.direction = this.rtlDirectionService.getPageDirection(this.element);\n }\n\n @HostListener('keydown.arrowLeft', ['$event'])\n handleKeyDown(event: any) {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowLeftInnerHandler(event);\n } else {\n this.arrowRightInnerHandler(event);\n }\n }\n\n @HostListener('keydown.Backspace', ['$event']) handleKeyDownBackspace(event: any) {\n // Clear on backspace is already handled by ng select when clearable is true\n if (!this.select.clearable && !this.select.searchTerm) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n if (listBadge.length > 0) {\n listBadge[listBadge.length - 1].click();\n }\n }\n }\n\n @HostListener('keydown.arrowRight', ['$event'])\n handleKeyDownRight(event: any) {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowRightInnerHandler(event);\n } else {\n this.arrowLeftInnerHandler(event);\n }\n }\n\n arrowRightInnerHandler(event: any) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n const currentPos = Array.prototype.indexOf.call(listBadge, document.activeElement);\n // Test if the focus is in the list (otherwise it is in the input and we do nothing)\n if (currentPos !== -1) {\n if (currentPos === listBadge.length - 1) {\n this.select.focus();\n } else {\n (listBadge[currentPos + 1] || document.activeElement).focus();\n }\n } else if (\n event.target.selectionStart === event.target.selectionEnd &&\n event.target.nodeName === 'INPUT' &&\n event.target.selectionStart === event.target.value.length\n ) {\n const clearEl =\n this.element.nativeElement.querySelector('.ng-clear-wrapper') ||\n this.element.nativeElement.querySelector('.ng-clear');\n if (clearEl) {\n // Event if it can be added multiple time it is not an issue I think.\n this.renderer.listen(clearEl, 'keydown.Enter', (e) => {\n e.stopPropagation(); // kill the event to forbid default ng-select behavior (open the dropdown)\n this.select.handleClearClick();\n });\n clearEl.setAttribute('tabindex', '1'); // To be able to focus the element in chrome\n clearEl.focus();\n }\n }\n }\n\n arrowLeftInnerHandler(event: any) {\n const listBadge = this.element.nativeElement.querySelectorAll(`.${DF_SELECT_CLASS}`);\n if (\n event.target.selectionStart === event.target.selectionEnd &&\n event.target.selectionStart === 0 &&\n event.target.nodeName === 'INPUT'\n ) {\n if (listBadge.length > 0) {\n listBadge[listBadge.length - 1].focus();\n }\n } else if (event.target.classList.contains('ng-clear-wrapper') || event.target.classList.contains('ng-clear')) {\n this.select.focus();\n } else {\n const currentPos = Array.prototype.indexOf.call(listBadge, document.activeElement);\n (listBadge[currentPos - 1] || document.activeElement).focus();\n }\n }\n}\n","import {\n AfterViewInit,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal\n} from '@angular/core';\n\n// Copy of https://github.com/ng-select/ng-select/blob/master/src/ng-option-highlight/lib/ng-option-highlight.directive.ts\n@Directive({\n selector: '[dfOptionHighlight]'\n})\nexport class DfOptionHighlightDirective implements AfterViewInit {\n readonly dfOptionHighlight = input.required<string>();\n\n private readonly label = signal('');\n\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly canHighlight = computed(() => !!this.dfOptionHighlight() && !!this.label());\n\n constructor() {\n effect(() => {\n if (this.canHighlight()) {\n const alternationString = this.dfOptionHighlight()\n .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(' ', '|');\n const termRegex = new RegExp(alternationString, 'gi');\n this.setInnerHtml(this.label().replace(termRegex, `<span class=\\\"highlighted\\\">$&</span>`));\n } else if (this.label()) {\n // unhighlight if there was some\n this.setInnerHtml(this.label());\n }\n });\n }\n\n ngAfterViewInit() {\n this.label.set(this.elementRef.nativeElement.innerHTML);\n }\n\n private setInnerHtml(html: string) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html);\n }\n}\n","import { DF_SELECT_CLASS } from '../select.model';\nimport {\n Directive,\n ElementRef,\n HostListener,\n Input,\n HostBinding,\n Renderer2,\n AfterViewInit,\n input,\n inject\n} from '@angular/core';\n\n// Put to avoid opening of the select after removal. See why in file:\n// https://github.com/ng-select/ng-select/blob/57c6671a972d23beddcca2b6acc9418544c17a2e/src/ng-select/ng-select.component.ts#L307\nconst NG_SELECT_CLASS_IDENTIFIER = 'ng-value-icon';\n\n@Directive({\n selector: '[dfManageBadgeEventsSelect]',\n host: {\n tabindex: '-1',\n '(keydown.Backspace)': 'handleKeyDownBackspace($event)',\n '(click)': 'handleClick($event)',\n '(keydown.Enter)': 'handleKeyDownEnter($event)',\n '(keydown.Delete)': 'handleKeyDownDelete($event)'\n }\n})\nexport class DfManageBadgeEventsDirective implements AfterViewInit {\n readonly dfManageBadgeEventsSelect = input.required<[(arg: any) => void, any]>();\n\n private readonly renderer = inject(Renderer2);\n private readonly element = inject(ElementRef);\n\n constructor() {\n this.renderer.addClass(this.element.nativeElement, DF_SELECT_CLASS);\n this.renderer.addClass(this.element.nativeElement, NG_SELECT_CLASS_IDENTIFIER);\n }\n\n ngAfterViewInit() {\n const childs = this.element.nativeElement.children;\n const map = Array.from(childs);\n map.forEach((element) => {\n this.renderer.addClass(element, NG_SELECT_CLASS_IDENTIFIER);\n });\n }\n\n handleKeyDownBackspace(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleClick(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleKeyDownEnter(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n\n handleKeyDownDelete(event: any) {\n this.dfManageBadgeEventsSelect()[0](this.dfManageBadgeEventsSelect()[1]);\n event.stopPropagation();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfManageNavSelectDirective } from './nav/manage-nav-select.directive';\nimport { DfManageBadgeEventsDirective } from './events/manage-badge-events.directive';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { DfOptionHighlightDirective } from './option-highlight.directive';\n\nexport { DfManageNavSelectDirective } from './nav/manage-nav-select.directive';\nexport { DfManageBadgeEventsDirective } from './events/manage-badge-events.directive';\nexport { DfOptionHighlightDirective } from './option-highlight.directive';\n\n@NgModule({\n imports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective],\n exports: [DfManageNavSelectDirective, DfManageBadgeEventsDirective, DfOptionHighlightDirective, NgSelectModule]\n})\nexport class DfSelectModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport interface DfStepperStep {\n warning: boolean;\n completed: boolean;\n visited?: boolean;\n label: string;\n ariaControl: string;\n warningLabel?: string;\n optionalLabel?: string;\n}\n\nexport type DfStepType = 'warning' | 'completed' | 'future' | 'visited';\n\nexport interface DfStepperNormalizedStep extends DfStepperStep {\n type: DfStepType;\n}\n\nexport interface DfStepperState {\n steps: DfStepperStep[];\n active: number;\n isLinear: boolean;\n isInline: boolean;\n isVertical: boolean;\n}\n\nexport interface DfStepperNormalizedState {\n steps: DfStepperNormalizedStep[];\n active: number;\n isLinear: boolean;\n isInline: boolean;\n isVertical: boolean;\n}\n\n@Injectable()\nexport class DfStepperService {\n setFocus = false;\n private readonly _stepperState$ = new BehaviorSubject<DfStepperNormalizedState>({\n steps: [],\n active: 0,\n isLinear: false,\n isInline: false,\n isVertical: false\n });\n private _state: DfStepperNormalizedState = {\n steps: [],\n active: 0,\n isLinear: false,\n isInline: false,\n isVertical: false\n };\n\n // initState must be used to push new Steps to the service\n get state(): DfStepperNormalizedState {\n return this._state;\n }\n\n private _completedLabel = 'Completed';\n\n /**\n * Internal to get the completed label in the template\n */\n get completedLabel(): string {\n return this._completedLabel;\n }\n\n /**\n * Use this to set the completed label (i18n)\n */\n set completedLabel(label: string) {\n this._completedLabel = label;\n }\n\n private _warningLabel = 'Warning';\n\n /**\n * Internal to get the waring label in the template\n */\n get warningLabel(): string {\n return this._warningLabel;\n }\n\n /**\n * Use this to set the warning label (i18n)\n */\n set warningLabel(label: string) {\n this._warningLabel = label;\n }\n\n private _stepperAriaLabel = 'Stepper';\n\n /**\n * Internal to get the stepper aria label in the template\n */\n get stepperAriaLabel(): string {\n return this._stepperAriaLabel;\n }\n\n /**\n * Use this to set the stepper aria label (i18n)\n */\n set stepperAriaLabel(label: string) {\n this._stepperAriaLabel = label;\n }\n\n get stepperState$(): Observable<DfStepperNormalizedState> {\n return this._stepperState$.asObservable();\n }\n\n // API\n /**\n * Use this to init the list of Elements from your stepper\n *\n * Here we are not deep copying the array --> the function will change it\n */\n initStepperState(state: DfStepperState) {\n // normalize the steps here\n this._state = this.normalizeState(state);\n this.dispatchStepperState();\n }\n\n /**\n * Use this to normalize the state of the stepper (completed, warning, current, future)\n * @param state\n * @returns\n */\n normalizeState(state: DfStepperState): DfStepperNormalizedState {\n const stepsList: DfStepperNormalizedStep[] = [];\n for (let i = 0; i < state.steps.length; i++) {\n if (state.steps[i].warning) {\n stepsList.push({ ...state.steps[i], type: 'warning' });\n } else if (state.steps[i].completed) {\n stepsList.push({ ...state.steps[i], type: 'completed' });\n } else if (i === state.active || state.steps[i].visited) {\n stepsList.push({ ...state.steps[i], type: 'visited', visited: true });\n } else {\n stepsList.push({ ...state.steps[i], type: 'future', visited: false });\n }\n }\n return { ...state, steps: stepsList };\n }\n\n /**\n * TODO make it customizable\n * @param index - index of the step\n * @returns - string of the step number to display\n */\n getStepNumberLabel(index: number): string {\n return `${index + 1}`;\n }\n\n resetFocus() {\n this.setFocus = false;\n }\n\n /**\n *\n * @param isLinear - true if the stepper is linear\n */\n setLinear(isLinear: boolean) {\n this._state.isLinear = isLinear;\n this.dispatchStepperState();\n }\n\n /**\n * @param isInline - true if the stepper is inline\n */\n setInline(isInline: boolean) {\n this._state.isInline = isInline;\n this.dispatchStepperState();\n }\n\n /**\n * @param isVertical - true if the stepper is vertical\n *\n * @since 19.1.0\n */\n setVertical(isVertical: boolean) {\n this._state.isVertical = isVertical;\n this.dispatchStepperState();\n }\n\n /**\n *\n * @param index - index of the step to select start at 0\n */\n selectStep(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.active = index;\n this.updateStepperState();\n }\n\n /**\n * Same as selectStep but with focus on the step selected\n * @param index - index of the step to select start at 0\n */\n selectWithFocus(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this.setFocus = true;\n this.selectStep(index);\n }\n\n /**\n *\n * @param index - index of the step to complete start at 0\n */\n completeStep(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].completed = true;\n this._state.steps[index].warning = false;\n this.updateStepperState();\n }\n\n /**\n *\n * @param index - index of the step to complete start at 0\n */\n completeStepAndGoNext(index: number) {\n this.completeStep(index);\n this.selectStep(index + 1);\n }\n\n /**\n * Attention if the step was completed it will be uncompleted after.\n * @param index - index of the step to make Warning start at 0\n * @param warningLabel - label to display in the warning by default it will take the warningLabel if it exists or the label\n */\n makeWarning(index: number, warningLabel?: string) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].warning = true;\n this._state.steps[index].completed = false;\n this._state.steps[index].warningLabel = warningLabel\n ? warningLabel\n : this._state.steps[index].warningLabel\n ? this._state.steps[index].warningLabel\n : this._state.steps[index].label;\n this.updateStepperState();\n }\n\n /**\n *\n * @param index - index of the step to remove Warning start at 0\n */\n removeWarning(index: number) {\n if (index < 0 || index >= this._state.steps.length) {\n return;\n }\n this._state.steps[index].warning = false;\n this.updateStepperState();\n }\n\n private dispatchStepperState() {\n this._stepperState$.next(this._state);\n }\n\n private updateStepperState() {\n this._state = this.normalizeState(this._state as DfStepperState);\n this.dispatchStepperState();\n }\n}\n","import {\n AfterViewChecked,\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n Renderer2,\n inject\n} from '@angular/core';\nimport { DfDirectionDetectionService, RightToLeftDirectionEnum } from '../right-to-left/directionDetection.service';\nimport { DfStepperService } from './stepper.service';\nexport const DF_STEP_CLASS = 'df-stepper-step';\n\n@Directive({\n selector: '[dfStepperStep]',\n exportAs: 'dfStepperStep'\n})\nexport class DfStepperStepDirective implements OnInit, OnDestroy {\n private readonly unlistener: Array<() => void> = [];\n\n private readonly renderer2: Renderer2 = inject(Renderer2);\n private readonly element: ElementRef = inject(ElementRef);\n\n ngOnInit() {\n this.unlistener.push(\n this.renderer2.listen(this.element.nativeElement, 'focus', () => {\n this.handleFocusTabIndex();\n })\n );\n this.unlistener.push(\n this.renderer2.listen(this.element.nativeElement, 'blur', (event: FocusEvent) => {\n this.handleBlurTabIndex(event);\n })\n );\n }\n\n handleFocusTabIndex() {\n this.element.nativeElement.tabIndex = 0;\n }\n\n handleBlurTabIndex(event: FocusEvent) {\n if (\n event.relatedTarget &&\n 'classList' in event.relatedTarget &&\n (event.relatedTarget.classList as DOMTokenList).contains(DF_STEP_CLASS)\n ) {\n this.element.nativeElement.tabIndex = -1;\n }\n }\n\n ngOnDestroy() {\n this.unlistener.forEach((ul) => ul());\n }\n}\n\n@Directive({\n selector: '[dfStepperLogic]',\n exportAs: 'dfStepperLogic'\n})\nexport class DfStepperDirective implements OnInit, AfterViewChecked {\n private direction!: string;\n stepperService = inject(DfStepperService);\n private readonly element: ElementRef = inject(ElementRef);\n private readonly rtlDirectionService: DfDirectionDetectionService = inject(DfDirectionDetectionService);\n\n ngOnInit(): void {\n this.direction = this.rtlDirectionService.getPageDirection(this.element);\n }\n\n @HostListener('keydown.Enter')\n handleEnterDown() {\n this.handleSelect();\n }\n\n @HostListener('keydown.Space')\n handleSpaceDown() {\n this.handleSelect();\n }\n\n private handleGoPrevious() {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowLeftInnerHandler();\n } else {\n this.arrowRightInnerHandler();\n }\n }\n\n private handleGoNext() {\n if (this.direction === RightToLeftDirectionEnum.LeftToRight) {\n this.arrowRightInnerHandler();\n } else {\n this.arrowLeftInnerHandler();\n }\n }\n\n @HostListener('keydown.arrowRight', ['$event'])\n handleKeyDownRight(event: KeyboardEvent) {\n if (!this.stepperService.state.isVertical) {\n this.handleGoNext();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowLeft', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.stepperService.state.isVertical) {\n this.handleGoPrevious();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowDown', ['$event'])\n handleKeyDownUp(event: KeyboardEvent) {\n if (this.stepperService.state.isVertical) {\n this.handleGoNext();\n event.preventDefault();\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n handleKeyDownDown(event: KeyboardEvent) {\n if (this.stepperService.state.isVertical) {\n this.handleGoPrevious();\n event.preventDefault();\n }\n }\n\n getSteps(): HTMLButtonElement[] {\n return this.element.nativeElement.querySelectorAll(`:scope .${DF_STEP_CLASS}`);\n }\n\n private handleSelect() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n if (currentPos !== -1) {\n listStep[currentPos].click();\n }\n }\n\n private arrowRightInnerHandler() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n // Test if the focus is in the list (otherwise we do nothing)\n if (currentPos !== -1) {\n // we put the focus on the next element.\n if (currentPos === listStep.length - 1) {\n listStep[0].focus();\n } else {\n listStep[currentPos + 1].focus();\n }\n }\n }\n\n private arrowLeftInnerHandler() {\n const listStep = this.getSteps();\n const currentPos = Array.prototype.indexOf.call(listStep, document.activeElement);\n // Test if the focus is in the list (otherwise we do nothing)\n if (currentPos !== -1) {\n // we put the focus on the next element.\n if (currentPos === 0) {\n listStep[listStep.length - 1].focus();\n } else {\n listStep[currentPos - 1].focus();\n }\n }\n }\n\n ngAfterViewChecked() {\n // Put back the focus on the active elements\n if (this.stepperService.setFocus) {\n const listStep: HTMLButtonElement[] = this.getSteps();\n listStep[this.stepperService.state.active].focus();\n this.stepperService.resetFocus();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n Directive,\n inject,\n input,\n numberAttribute,\n signal,\n TemplateRef\n} from '@angular/core';\nimport { DfStepperDirective, DfStepperStepDirective } from './stepper.directive';\nimport { DfStepperNormalizedState, DfStepperService } from './stepper.service';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({ selector: 'ng-template[dfStepperStepContent]' })\nexport class DfStepperStepContentDirective {\n readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n /**\n * The step index\n * -1 means that the input index is not set\n */\n readonly dfStepperStepContent = input(-1, { transform: (value: unknown) => numberAttribute(value, -1) });\n}\n\n/**\n * Stepper component is a component to provide a step by step navigation\n * You have two ways to navigate through the steps:\n * - Using the linear navigation, where you can only go to the next step\n * - Using the non-linear navigation, where you can go to any step\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[dfStepper]',\n templateUrl: './stepper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DfStepperStepDirective, NgTemplateOutlet, AsyncPipe],\n hostDirectives: [DfStepperDirective],\n host: {\n role: 'tablist',\n class: 'df-stepper mb-2',\n '[class.df-vertical-stepper]': 'state()?.isVertical',\n '[attr.aria-label]': 'stepperService.stepperAriaLabel',\n '[attr.aria-orientation]': 'state()?.isVertical ? \"vertical\": null'\n }\n})\nexport class DfStepperComponent implements AfterContentInit {\n readonly stepperService = inject(DfStepperService);\n mapStepToContent: Map<number, TemplateRef<any>> = new Map<number, TemplateRef<any>>();\n\n readonly tplStepsContent = contentChildren(DfStepperStepContentDirective);\n readonly state = signal<DfStepperNormalizedState | undefined>(undefined);\n\n constructor() {\n this.stepperService.stepperState$.pipe(takeUntilDestroyed()).subscribe((state) => {\n this.state.set(state);\n });\n }\n\n ngAfterContentInit() {\n this.tplStepsContent().forEach((tplStepContent) => {\n if (tplStepContent.dfStepperStepContent() !== -1) {\n this.mapStepToContent.set(tplStepContent.dfStepperStepContent(), tplStepContent.templateRef);\n }\n });\n }\n}\n","<ng-template #myStepperLine>\n <div class=\"df-stepper-line-wrapper\">\n <div class=\"df-stepper-line\">\n <div class=\"df-stepper-horizontal-line\"></div>\n </div>\n <div class=\"df-stepper-line d-none d-sm-flex\">\n <div class=\"flex-grow-1\"></div>\n </div>\n </div>\n</ng-template>\n@if (state(); as state) {\n @for (step of state.steps; track step; let i = $index) {\n <button\n #stepbasic\n class=\"btn btn-link df-stepper-step\"\n dfStepperStep\n [class.active]=\"i === state.active\"\n [class.flex-row]=\"state.isInline || state.isVertical\"\n [attr.tabIndex]=\"i === state.active ? 0 : -1\"\n [class.df-stepper-step-warning]=\"step.type === 'warning'\"\n [class.df-stepper-step-completed]=\"step.type === 'completed'\"\n [class.df-stepper-step-visited]=\"step.type === 'visited'\"\n [class.df-stepper-step-future]=\"step.type === 'future'\"\n [disabled]=\"\n state.isLinear &&\n (step.type === 'future' || step.type === 'completed' || (step.type === 'visited' && i !== state.active))\n \"\n role=\"tab\"\n [attr.aria-selected]=\"i === state.active ? 'true' : 'false'\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"state.steps.length\"\n [attr.aria-controls]=\"step.ariaControl\"\n (click)=\"stepperService.selectWithFocus(i)\"\n >\n <div\n [class.df-stepper-outline-number-visited]=\"step.type === 'visited'\"\n [class.df-stepper-outline-icon]=\"step.type === 'warning'\"\n [class.fa-exclamation-triangle]=\"step.type === 'warning'\"\n [class.df-stepper-icon]=\"step.type === 'completed'\"\n [class.fa-check]=\"step.type === 'completed'\"\n [class.df-stepper-outline-number-future]=\"step.type === 'future'\"\n >\n <span aria-hidden=\"true\">{{ stepperService.getStepNumberLabel(i) }}</span>\n </div>\n <div\n class=\"flex-column\"\n [class.mt-1]=\"!state.isInline\"\n [class.d-none]=\"!state.isVertical\"\n [class.d-sm-flex]=\"!state.isVertical\"\n [class.d-flex]=\"state.isVertical\"\n >\n @if (step.type === 'warning') {\n <span class=\"visually-hidden\">{{ stepperService.warningLabel }}</span>\n }\n <span class=\"df-stepper-label\">{{ step.label }}</span>\n @if (step.optionalLabel) {\n <span class=\"df-stepper-optional-label\">{{ step.optionalLabel }}</span>\n }\n @if (step.completed) {\n <span class=\"visually-hidden\">{{ stepperService.completedLabel }}</span>\n }\n </div>\n </button>\n @if (!state.isVertical && i < state.steps.length - 1) {\n <ng-container [ngTemplateOutlet]=\"myStepperLine\"></ng-container>\n }\n @if (state.isVertical && i < state.steps.length) {\n <div\n [class.d-none]=\"state.steps.length - 1 === i\"\n role=\"tabpanel\"\n [id]=\"step.ariaControl\"\n class=\"df-vertical-stepper-panel df-vertical-stepper-line\"\n >\n @if (mapStepToContent.has(i) && state.active === i) {\n <ng-template\n [ngTemplateOutlet]=\"mapStepToContent.get(i) || null\"\n [ngTemplateOutletContext]=\"{ state, index: i, service: stepperService }\"\n ></ng-template>\n }\n </div>\n }\n }\n}\n@if (stepperService.stepperState$ | async; as state) {\n <div\n class=\"text-primary mb-2\"\n [class.d-block]=\"!state.isVertical\"\n [class.d-sm-none]=\"!state.isVertical\"\n [class.d-none]=\"state.isVertical\"\n >\n <span class=\"df-stepper-label\">{{ state.steps[state.active].label }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { DfStepperDirective, DfStepperStepDirective} from './stepper.directive';\nimport { DfStepperComponent, DfStepperStepContentDirective} from './stepper.component';\n\n@NgModule({\n imports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective],\n exports: [DfStepperDirective, DfStepperStepDirective, DfStepperComponent, DfStepperStepContentDirective]\n})\nexport class DfStepperModule {}\n","import { Directive, DoCheck, ElementRef, inject, input, OnInit, Renderer2 } from '@angular/core';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { hasOverflow, hasOverflowX, hasOverflowY } from '../../utils/html-element-helper';\n\n/**\n * My dfTooltipTruncate directive\n */\n@Directive({\n exportAs: 'dfTooltipTruncate',\n selector: '[dfTooltipTruncate]'\n})\nexport class DfTooltipTruncateDirective implements OnInit, DoCheck {\n private readonly tooltip = inject(NgbTooltip);\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n /**\n * The direction considered when detecting overflow, can be 'x', 'y' or ''.\n * @defaultValue ''\n */\n readonly dfTooltipTruncate = input<'x' | 'y' | ''>('');\n\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');\n }\n\n ngDoCheck() {\n let disableToolTip = false;\n switch (this.dfTooltipTruncate()) {\n case 'x':\n disableToolTip = !hasOverflowX(this.elementRef.nativeElement);\n break;\n case 'y':\n disableToolTip = !hasOverflowY(this.elementRef.nativeElement);\n break;\n case '':\n disableToolTip = !hasOverflow(this.elementRef.nativeElement);\n break;\n }\n this.tooltip.disableTooltip = disableToolTip;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'tabIndex', disableToolTip ? '-1' : '0');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';\n\nexport { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';\n\n@NgModule({\n imports: [DfTooltipTruncateDirective],\n exports: [DfTooltipTruncateDirective, NgbTooltipModule]\n})\nexport class DfTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nimport { DfManageSideNavDirective } from './manage-sidenav.directive';\nimport { DfMediaModule } from '../mediaqueries/media.module';\nimport { DfSideNavCollapseModule } from './dfSideNavCollapse.module';\nimport { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';\n\nexport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nexport { DfManageSideNavDirective } from './manage-sidenav.directive';\nexport { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';\n\n@NgModule({\n imports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfExcludeTrapDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n ],\n exports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfExcludeTrapDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective,\n DfSideNavCollapseModule,\n DfMediaModule\n ]\n})\nexport class DfSideNavModule {}\n","import { Directive, ElementRef, AfterViewInit, Renderer2, input, effect, inject } from '@angular/core';\n\n@Directive({\n selector: '[dfManageCardSelected]',\n host: {\n '(click)': 'click($event)'\n }\n})\nexport class DfManageCardSelectionDirective implements AfterViewInit {\n private input!: HTMLInputElement;\n\n readonly dfManageCardSelected = input.required<boolean>();\n private readonly element = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const selectedClass = 'df-card-selected';\n if (this.dfManageCardSelected() === true) {\n this.renderer.addClass(this.element.nativeElement, selectedClass);\n } else {\n this.renderer.removeClass(this.element.nativeElement, selectedClass);\n }\n });\n }\n\n ngAfterViewInit() {\n this.input = this.element.nativeElement.querySelector('.form-check-input');\n this.renderer.setAttribute(this.input, 'tabIndex', '-1');\n }\n\n click(event: any) {\n const target: HTMLElement = event.target;\n // If the input or the label is clicked then the selection is already made\n // The card must have only one input\n if (!(target.classList.contains('form-check-input') || target.classList.contains('form-check-label'))) {\n this.input.click();\n } else {\n this.element.nativeElement.focus();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfManageCardSelectionDirective } from './manage-card-selection.directive';\n\nexport { DfManageCardSelectionDirective } from './manage-card-selection.directive';\n\n@NgModule({\n imports: [DfManageCardSelectionDirective],\n exports: [DfManageCardSelectionDirective]\n})\nexport class DfAdvancedCardModule {}\n","import { NgModule } from '@angular/core';\nimport { DfAlertModule } from './alert/alert.module';\nimport { DfDatePickerModule } from './datepicker/datepicker.module';\nimport { DfSelectModule } from './selects/select.module';\nimport { DfPopoverModule } from './popover/popover.module';\nimport { DfProgressbarModule } from './progressbar/progressbar.module';\nimport { DfAdvancedInputModule } from './inputs/input-advanced.module';\nimport { DfAccessibilityModule } from './accessibility/accessibility.module';\nimport { DfIconModule } from './icon/icon.module';\nimport { DfSliderModule } from './slider/slider.module';\nimport { DfTooltipModule } from './tooltip/tooltip.module';\nimport { DfSideNavModule } from './sidenav/sidenav.module';\nimport { DfSideNavCollapseModule } from './sidenav/dfSideNavCollapse.module';\nimport { DfAdvancedCardModule } from './card/card-advanced.module';\nimport { DfProgressIndicatorModule } from './progressindicator/progressindicator.module';\nimport { DfFooterModule } from './footer/footer.module';\nimport { DfToastModule } from './toast/toast.module';\nimport { DfStepperModule } from './stepper/stepper.module';\n\nconst DF_MODULES = [\n DfAlertModule,\n DfDatePickerModule,\n DfSelectModule,\n DfProgressbarModule,\n DfProgressIndicatorModule,\n DfAdvancedInputModule,\n DfAccessibilityModule,\n DfSliderModule,\n DfPopoverModule,\n DfIconModule,\n DfTooltipModule,\n DfSideNavModule,\n DfSideNavCollapseModule,\n DfAdvancedCardModule,\n DfFooterModule,\n DfToastModule,\n DfStepperModule\n];\n\n/**\n * @deprecated Import only the needed modules or use standalone components instead of DfModule\n */\n@NgModule({\n imports: DF_MODULES,\n exports: DF_MODULES\n})\nexport class DfModule {}","import { Directive, ElementRef, PLATFORM_ID, effect, inject, input } from '@angular/core';\nimport { HttpClient, type HttpErrorResponse } from '@angular/common/http';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[dfWavesOfProgress]',\n exportAs: 'dfWavesOfProgress',\n host: {\n class: 'df-waves-of-progress-bg'\n }\n})\nexport class DfWavesOfProgressDirective {\n /**\n * The type of waves to display. In order to display the waves, the app using the directive must include the assets of Design Factory.\n * It is possible to do so by adding the following snippet to the `angular.json` file in the `assets` configuration:\n * @example\n * \"assets\": [\n * {\n * \"glob\": \"** / *\", //remove the spaces between the asterisks and the slash\n * \"input\": \"node-modules/@design-factory/design-factory/assets/\",\n * \"output\": \"assets/\"\n * },\n * ...]\n */\n readonly dfWavesOfProgress = input.required<'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp'>();\n\n private readonly http = inject(HttpClient, { optional: true });\n public elementRef = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private baseSvg = '';\n\n /**\n * Prepares the SVG string by replacing color variables and encoding it.\n * @param bgColor - The background color.\n * @param lineColor - The line color.\n * @returns The prepared SVG string.\n */\n prepareSvg(bgColor: string, lineColor: string): string {\n let baseSvg = this.baseSvg.replace(/var\\(\\-\\-df\\-waves\\-of\\-progress\\-bg\\-color\\)/g, bgColor);\n baseSvg = baseSvg.replace(/var\\(\\-\\-df\\-waves\\-of\\-progress\\-line\\-color\\)/g, lineColor);\n baseSvg = baseSvg.replace(/#/g, '%23');\n return `'data:image/svg+xml;utf8,${baseSvg}'`;\n }\n\n /**\n * Updates the SVG background image based on the current element's styles.\n */\n public updateSvg(): void {\n if (isPlatformBrowser(this.platformId)) {\n const computedStyle = window.getComputedStyle(this.elementRef.nativeElement);\n const bgColor = computedStyle.getPropertyValue('--df-waves-of-progress-bg-color');\n const lineColor = computedStyle.getPropertyValue('--df-waves-of-progress-line-color');\n if (!bgColor || !lineColor) {\n this.elementRef.nativeElement.style.backgroundImage = null;\n } else {\n this.elementRef.nativeElement.style.backgroundImage = `url(${this.prepareSvg(bgColor, lineColor)})`;\n }\n }\n }\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n effect(() => {\n this.getSvg(this.dfWavesOfProgress());\n });\n }\n }\n\n private getSvg(wavesType: 'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp') {\n if (!this.http) {\n throw Error(\n 'Could not find HttpClient provider for use with DF Waves of progress. ' +\n 'Please include the HttpClientModule from @angular/common/http in your ' +\n 'app imports.'\n );\n }\n const url = `assets/waves_of_progress/${wavesType}.svg`;\n this.http.get(url, { responseType: 'text' }).subscribe({\n next: (svgString) => {\n this.baseSvg = svgString.replace(/\\n|\\r/g, '');\n this.updateSvg();\n },\n error: (error: HttpErrorResponse) => {\n throw Error('[Design Factory] (Waves of progress): ' + error.message);\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DfWavesOfProgressDirective } from './waves.directive';\n\n@NgModule({\n imports: [DfWavesOfProgressDirective],\n exports: [DfWavesOfProgressDirective]\n})\nexport class DfWavesOfProgressModule {}\n","// Accessibility\nexport { DfAccessibilityModule } from './angular/accessibility/accessibility.module';\nexport { SkipLinkDirective } from './angular/accessibility/directives/skip-link.directive';\nexport { SkipLinksContainerComponent } from './angular/accessibility/components/skip-links-container/skip-links-container.component';\n\n// Toast\nexport { DfToastModule } from './angular/toast/toast.module';\n\n// Alert\nexport { DfAlertModule } from './angular/alert/alert.module';\n\n// Datepicker\nexport { DfDatePickerModule } from './angular/datepicker/datepicker.module';\nexport { DfDatepickerRangeDirective } from './angular/datepicker/datepicker-range.directive';\nexport { DfDatepickerRangeService } from './angular/datepicker/datepicker-range.service';\n\n// Footer\nexport { DfFooterModule } from './angular/footer/footer.module';\n\n// Icon\nexport { DfIconModule } from './angular/icon/icon.module';\nexport { DfInsertIconModule } from './angular/icon/insert/insert-icon.module';\nexport { DfAmadeusIconComponent } from './angular/icon/amadeus-icon';\nexport { DfInsertIconDirective } from './angular/icon/insert/insert-icon.directive';\n\n// Inputs\nexport { DfTriggerClickDirective } from './angular/inputs/click/trigger-click.directive';\nexport { DfInputIconDirective, DfDirection } from './angular/inputs/icon/inputicon.directive';\nexport { DfAdvancedInputModule } from './angular/inputs/input-advanced.module';\n\n// Modal\nexport { DfModalService } from './angular/modal/modal.service';\n\n// Popover\nexport { DfPopoverModule } from './angular/popover/popover.module';\nexport { DfPopoverConfig } from './angular/popover/config/popover.config';\n\n// Progressbar\nexport { DfProgressbarModule } from './angular/progressbar/progressbar.module';\nexport { DfProgressbarComponent } from './angular/progressbar/progressbar.component';\n\n// Progress indicator\nexport { DfProgressIndicatorModule } from './angular/progressindicator/progressindicator.module';\nexport {\n DfProgressIndicatorService,\n DfProgressIndicatorContent\n} from './angular/progressindicator/progressindicator.service';\nexport { DfProgressIndicatorDirective } from './angular/progressindicator/progressindicator.directive';\nexport {\n DfProgressIndicatorOptions,\n DfProgressIndicatorContentType,\n DfProgressIndicatorContentSpinner,\n DfProgressIndicatorContentProgressBar,\n DfProgressIndicatorContentPosition\n} from './angular/progressindicator/progressindicator-config';\nexport { DfProgressIndicatorRef } from './angular/progressindicator/progressindicator-ref';\nexport { DfProgressIndicatorContainerComponent } from './angular/progressindicator/progressindicator-container.component';\nexport { DfProgressIndicatorBackdropComponent } from './angular/progressindicator/progressindicator-backdrop.component';\nexport { DfDefaultSpinnerComponent } from './angular/progressindicator/default/default-spinner.component';\n\n// RTL\nexport {\n DfDirectionDetectionService,\n RightToLeftDirectionEnum\n} from './angular/right-to-left/directionDetection.service';\n\n// Slider\nexport { DfSliderModule } from './angular/slider/slider.module';\nexport { DfSliderDirectionDirective } from './angular/slider/direction/sliderdirection.directive';\nexport {\n DfSideNavHeaderDirective,\n DfSideNavItemDirective,\n DfSideNavIconDirective\n} from './angular/sidenav/sidenav.component';\nexport { DfManageSideNavDirective } from './angular/sidenav/manage-sidenav.directive';\nexport { DfExcludeTrapDirective } from './angular/sidenav/excludeTrap.directive';\nexport { ChangeContext } from './angular/slider/lib/change-context';\nexport { PointerType } from './angular/slider/lib/pointer-type';\nexport * from './angular/slider/lib/options';\nexport { SliderComponent } from './angular/slider/lib/slider.component';\n\n// Selects\nexport { DfManageNavSelectDirective } from './angular/selects/nav/manage-nav-select.directive';\nexport { DfOptionHighlightDirective } from './angular/selects/option-highlight.directive';\nexport { DfManageBadgeEventsDirective } from './angular/selects/events/manage-badge-events.directive';\nexport { DfSelectModule } from './angular/selects/select.module';\n\n// Stepper\nexport { DfStepperDirective } from './angular/stepper/stepper.directive';\nexport { DfStepperStepContentDirective, DfStepperComponent } from './angular/stepper/stepper.component';\nexport { DfStepperStepDirective } from './angular/stepper/stepper.directive';\nexport type {\n DfStepperStep,\n DfStepperState,\n DfStepperNormalizedState,\n DfStepperNormalizedStep\n} from './angular/stepper/stepper.service';\nexport { DfStepperModule } from './angular/stepper/stepper.module';\nexport { DfStepperService, DfStepType } from './angular/stepper/stepper.service';\n\n// Tooltip\nexport { DfTooltipTruncateDirective } from './angular/tooltip/truncate/tooltipTruncate.directive';\nexport { DfTooltipModule } from './angular/tooltip/tooltip.module';\n\n// Sidenav\nexport { DfSideNavItem } from './angular/sidenav/sidenav.service';\nexport { DfSideNavService } from './angular/sidenav/sidenav.service';\nexport { DfIfMediaDirective } from './angular/mediaqueries/ifMedia.directive';\nexport { DfSideNavModule } from './angular/sidenav/sidenav.module';\nexport { DfSideNavComponent } from './angular/sidenav/sidenav.component';\nexport { DfSideNavConfig } from './angular/sidenav/sidenav-config';\nexport { DfNavItemType } from './angular/sidenav/sidenav.service';\n\n// SideNavCollapse\nexport { DfSideNavCollapseModule } from './angular/sidenav/dfSideNavCollapse.module';\nexport { DfSideNavCollapseDirective } from './angular/sidenav/dfSideNavCollapse';\nexport { DfSideNavCollapseService } from './angular/sidenav/dfSideNavCollapse.service';\n\n// Media Utils\nexport {\n BREAKPOINTS_VARS,\n DF_BREAKPOINTS_VAR_DEFAULT,\n DfBreakpoints,\n DfMediaQuery,\n DfMediaObserver\n} from './angular/mediaqueries/mediaUtils.service';\n\n// Media service\nexport { DfMedia } from './angular/mediaqueries/media.service';\nexport { DfMediaModule } from './angular/mediaqueries/media.module';\n\n// Card\nexport { DfManageCardSelectionDirective } from './angular/card/manage-card-selection.directive';\nexport { DfAdvancedCardModule } from './angular/card/card-advanced.module';\n\n// Global\nexport { DfModule } from './angular/df.module';\n\n// Title truncate\nexport { DfTitleTruncateDirective } from './angular/utils/titleTruncate.directive';\n\n// Waves of progress\n\nexport { DfWavesOfProgressModule } from './angular/waves-of-progress/waves.module';\nexport { DfWavesOfProgressDirective } from './angular/waves-of-progress/waves.directive';\n","/**\n * Public API Surface of design-factory\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DfMediaObserver","i1.DfBreakpoints","noop","i1.ScrollBar","i1.DfSideNavConfig","i1.DfSideNavCollapseConfig","i3.DfIfMediaDirective","i1","i2.DfDirectionDetectionService","i1.DfStepperDirective"],"mappings":"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"}