@design-factory/design-factory 20.0.0-next.2 → 20.0.0-next.3

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.
Files changed (41) hide show
  1. package/README.md +17 -16
  2. package/design-factory-initial-branding.css +1 -1
  3. package/design-factory.css +2 -2
  4. package/design-factory.scss +0 -2
  5. package/fesm2022/design-factory.mjs +197 -63
  6. package/fesm2022/design-factory.mjs.map +1 -1
  7. package/index.d.ts +12 -22
  8. package/package.json +2 -2
  9. package/schematics/migrations/20_0_0/colors-new-branding/index.d.ts +4 -0
  10. package/schematics/migrations/20_0_0/colors-new-branding/index.js +70 -27
  11. package/schematics/migrations/20_0_0/modal-removal/index.d.ts +7 -0
  12. package/schematics/migrations/20_0_0/modal-removal/index.js +53 -0
  13. package/schematics/migrations/20_0_0/style-import/index.d.ts +7 -0
  14. package/schematics/migrations/20_0_0/style-import/index.js +39 -0
  15. package/schematics/migrations/20_0_0/waves-of-progress/index.d.ts +7 -0
  16. package/schematics/migrations/20_0_0/waves-of-progress/index.js +69 -0
  17. package/schematics/migrations/migration.json +15 -0
  18. package/styles/scss/components/badge/_badge.scss +1 -4
  19. package/styles/scss/components/button/_button.scss +55 -54
  20. package/styles/scss/components/card/_card.scss +1 -1
  21. package/styles/scss/components/collapse/_collapse.scss +6 -1
  22. package/styles/scss/components/datepicker/_datepicker.scss +9 -11
  23. package/styles/scss/components/dropdown/_dropdown.scss +6 -0
  24. package/styles/scss/components/fonts/_icon-font.scss +2 -1
  25. package/styles/scss/components/footer/_footer.scss +1 -1
  26. package/styles/scss/components/link/_link.scss +5 -1
  27. package/styles/scss/components/link/_link.variables.scss +5 -2
  28. package/styles/scss/components/modal/_modal.scss +44 -39
  29. package/styles/scss/components/pagination/_pagination.scss +1 -0
  30. package/styles/scss/components/radio/_radio.scss +1 -1
  31. package/styles/scss/components/scrollspy/_scrollspy.scss +5 -2
  32. package/styles/scss/components/toast/_toast.scss +17 -3
  33. package/styles/scss/themes/brand2023/_variables.scss +18 -3
  34. package/styles/scss/themes/brand2023/tokens/_root.gen.scss +1 -0
  35. package/styles/scss/themes/brand2023/tokens/_sass-vars.gen.scss +1 -0
  36. package/assets/waves_of_progress/arrowRight.svg +0 -34
  37. package/assets/waves_of_progress/arrowUp.svg +0 -35
  38. package/assets/waves_of_progress/circleDiagonal.svg +0 -29
  39. package/assets/waves_of_progress/circleUp.svg +0 -24
  40. package/styles/scss/components/waves/_waves.scss +0 -15
  41. package/styles/scss/components/waves/_waves.variables.scss +0 -86
@@ -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/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/overflow.service.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/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/utils/html-element-helper.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/angular/amadeus-logo/amadeus-logo.component.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, DOCUMENT } from '@angular/core';\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","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 // eslint-disable-next-line @angular-eslint/prefer-inject\n private readonly el: ElementRef,\n // eslint-disable-next-line @angular-eslint/prefer-inject\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@NgModule({\n imports: [DfInsertIconDirective],\n exports: [DfInsertIconDirective]\n})\nexport class DfInsertIconModule {}\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","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","import { Directive, HostListener, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[dfTriggerClick]'\n})\nexport class DfTriggerClickDirective {\n private readonly elementRef = inject(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 AfterViewInit,\n inject,\n PLATFORM_ID,\n AfterViewChecked\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, AfterViewChecked, 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 ngAfterViewChecked() {\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 { inject, 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 private readonly calendar = inject(NgbCalendar);\n private readonly formatter = inject(NgbDateParserFormatter);\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 | null, 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.parseInput(this.fromDate, typed);\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n\n updateTo(typed: string) {\n this.toDate = this.parseInput(this.toDate, typed);\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 { Injectable, InjectionToken, OnDestroy, PLATFORM_ID, inject } 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<Record<string, string> | null>(null);\n\n private readonly _breakPointsVar = inject<Record<string, string>>(BREAKPOINTS_VARS);\n private readonly platformID = inject(PLATFORM_ID);\n\n constructor() {\n this.initBreakpoints();\n }\n\n get breakPoints$(): Observable<Record<string, string> | 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[][]): Record<string, string> {\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 = isPlatformBrowser(inject(PLATFORM_ID));\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 private readonly _mediaQuery = inject(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 { inject, 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 private readonly mediaObserver = inject(DfMediaObserver);\n private readonly _breakPointsService = inject(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","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 const;\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-3\">{{ 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","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 { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } 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, DOCUMENT } from '@angular/core';\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 private readonly _document = inject(DOCUMENT);\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 as any)[paddingRight] = `${actualPadding + scrollbarWidth}px`;\n return () => ((body.style as any)[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 Injectable,\n RendererFactory2,\n ApplicationRef,\n EmbeddedViewRef,\n ComponentRef,\n Type,\n TemplateRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector\n} from '@angular/core';\n\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 = inject(RendererFactory2).createRenderer(null, null);\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 private readonly document = inject(DOCUMENT);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly scrollbar = inject(ScrollBar);\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 // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\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(DfProgressIndicatorBackdropComponent, undefined, containerElt)\n : undefined;\n\n const contentRef = this.getContent(content, containerElt);\n const containerCmpRef: ComponentRef<DfProgressIndicatorContainerComponent> = this.createComponent(\n DfProgressIndicatorContainerComponent,\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 container: HTMLElement\n ): ComponentRef<any> | EmbeddedViewRef<any> {\n if (!content) {\n return this.createComponent(DfDefaultSpinnerComponent);\n } else if (content instanceof DfProgressIndicatorContentSpinner) {\n const cmpRef = this.createComponent(DfDefaultSpinnerComponent);\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);\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);\n }\n }\n\n private createComponent<T>(\n cmpType: Type<T>,\n childrenProjectables?: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n container?: HTMLElement\n ): ComponentRef<T> {\n let cmpRef: ComponentRef<T>;\n if (childrenProjectables) {\n if (childrenProjectables instanceof ComponentRef) {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector,\n projectableNodes: [[childrenProjectables.location.nativeElement]]\n });\n } else {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector,\n projectableNodes: [childrenProjectables.rootNodes]\n });\n }\n } else {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector\n });\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}\n","/** Pointer type */\nexport enum PointerType {\n /** Low pointer */\n Min,\n /** High pointer */\n Max\n}\n","import { PointerType } from './pointer-type';\n\nexport class ChangeContext {\n value?: number;\n highValue?: number;\n pointerType?: PointerType;\n}\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 =>\n Math.abs(modelValue - step.value)\n );\n\n let minDifferenceIndex: number = 0;\n for (let index: number = 0; index < stepsArray.length; index++) {\n if (\n differences[index] !== differences[minDifferenceIndex] &&\n differences[index] < differences[minDifferenceIndex]\n ) {\n minDifferenceIndex = index;\n }\n }\n\n return minDifferenceIndex;\n }\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\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\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}\n","import { Subject, Subscription } from 'rxjs';\n\nexport class EventListener {\n eventName?: string;\n events?: Subject<Event>;\n eventsSubscription?: Subscription;\n teardownCallback?: () => void;\n}\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\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nconst w: Window | any = typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\n\nlet passiveOptionAccessed = false;\nconst options = {\n get passive() {\n return (passiveOptionAccessed = true);\n }\n};\nconst noop = () => {};\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\nw.addEventListener && w.addEventListener('p', noop, options);\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\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 public attachPassiveEventListener(\n nativeElement: any,\n eventName: string,\n callback: (event: any) => void,\n throttleInterval?: number\n ): 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(\n !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(\n nativeElement: any,\n eventName: string,\n callback: (event: any) => void,\n throttleInterval?: number\n ): 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(\n !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","/* eslint-disable @angular-eslint/prefer-inject */\nimport { 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 // eslint-disable-next-line @angular-eslint/prefer-inject\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 // eslint-disable-next-line @angular-eslint/prefer-inject\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-inject */\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(): 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 { inject, 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 class?: string;\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 config = inject(DfSideNavConfig);\n private readonly _sideNavItems$ = new BehaviorSubject<DfSideNavItem[]>([]);\n private readonly _isMinmized$ = new BehaviorSubject<boolean>(this.config.isMinmized);\n private readonly _isCollapsed$ = new BehaviorSubject<boolean>(this.config.isCollapsed);\n private readonly _isPresent$ = new BehaviorSubject<boolean>(this.config.isPresent);\n private readonly _activeItem$ = new BehaviorSubject<DfSideNavItem | null>(null);\n private readonly _isInMenuOverlay$ = new BehaviorSubject<boolean>(this.config.isInMenuOverlay);\n private readonly _isAppOverlay$ = new BehaviorSubject<boolean>(this.config.isAppOverlay);\n private _isAppOverlayMode = this.config.isAppOverlayMode;\n private _items: DfSideNavItem[] = [];\n private readonly subscription: Subscription = new Subscription();\n\n constructor() {\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 { inject, 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 private readonly _ngbConfig = inject(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 { inject, 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$ = new BehaviorSubject<boolean>(inject(DfSideNavCollapseConfig).animation);\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, inject, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[dfManageSideNav]'\n})\nexport class DfManageSideNavDirective implements AfterViewChecked {\n private readonly element = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\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","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfOverflowService {\n /**\n * @param element the HTML element\n * @returns whether the element is overflowing\n */\n hasOverflow(element: HTMLElement): boolean {\n return this.hasOverflowX(element) || this.hasOverflowY(element);\n }\n\n /**\n * @param element the HTML element\n * @returns whether the element is overflowing horizontally\n */\n 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 */\n hasOverflowY(element: HTMLElement): boolean {\n return element.offsetHeight < element.scrollHeight;\n }\n}\n","import { Directive, DoCheck, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\nimport { DfOverflowService } from './overflow.service';\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 private readonly overflowService = inject(DfOverflowService);\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 (this.overflowService.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, 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 [class]=\"item.class\" 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 { DfSideNavItem, 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 public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n}\n\n@Directive({ selector: 'ng-template[dfSideNavIcon]' })\nexport class DfSideNavIconDirective {\n public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n}\n\n@Directive({ selector: 'ng-template[dfSideNavItem]' })\nexport class DfSideNavItemDirective {\n public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\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<DfSideNavItem[], DfSideNavItem[]>(this.sideNavService.sideNavItems$, {\n initialValue: [],\n equal: () => false\n });\n\n constructor() {\n this.sideNavService.isInMenuOverlay$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.overlayClass.set(value);\n });\n 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","export const DF_SELECT_CLASS = 'df-ym';\n","import { Directive, ElementRef, HostListener, OnInit, Renderer2, inject } 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 private readonly select = inject(NgSelectComponent, { host: true });\n private readonly element = inject(ElementRef);\n private readonly rtlDirectionService = inject(DfDirectionDetectionService);\n private readonly renderer = inject(Renderer2);\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() {\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 { Directive, ElementRef, Renderer2, AfterViewInit, input, inject } 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","/**\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, 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';\n\nexport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nexport { DfManageSideNavDirective } from './manage-sidenav.directive';\n\n@NgModule({\n imports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n ],\n exports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective,\n DfSideNavCollapseModule,\n DfMediaModule\n ]\n})\nexport class DfSideNavModule {}\n","import { AfterViewInit, Directive, ElementRef, Renderer2, effect, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[dfManageCardSelected]',\n host: {\n '(click)': 'click($event)',\n '(keydown)': 'keydown($event)',\n '[attr.tabindex]': '0'\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: Event) {\n const target = event.target as HTMLElement;\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 keydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n this.click(event);\n event.preventDefault();\n break;\n default:\n return;\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 {}\n","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","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'df-amadeus-logo',\n template: `\n <svg [class]=\"svgClass()\" viewBox=\"0 0 113 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M107.272 6.62415C105.258 5.92656 104.367 5.46175 104.367 4.4161C104.367 3.75718 104.793 2.75021 106.807 2.75021C108.705 2.75021 110.72 3.60249 110.72 3.60249V0.696849C109.868 0.348052 108.357 0 106.652 0C103.746 0 100.958 1.54913 100.958 4.61021C100.958 7.67128 103.747 8.52282 105.646 9.14307C107.428 9.7239 108.629 10.3055 108.629 11.4671C108.629 12.4749 107.931 13.249 105.646 13.249C103.708 13.249 101.384 12.4749 101.384 12.4749V15.3798C101.384 15.3798 103.63 16 105.801 16C108.667 16 112.038 14.9923 112.038 11.2344C112.038 8.67751 109.946 7.55378 107.273 6.62415H107.272Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M34.2475 15.8059V0H29.8701L25.57 11.7773L21.2692 0H16.8917V15.8059H19.8747V3.87394L24.2135 15.8052H26.7316L31.2645 3.87394V15.8052H34.2475V15.8059Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M44.7062 0H38.9343V3.06033C41.6853 2.94432 42.4595 2.90564 43.6605 2.90564C45.5585 2.90564 46.6822 3.60249 46.6822 5.46249V6.66357H43.6605C38.5855 6.66357 37.0364 8.71693 37.0364 11.3898C37.0364 14.8376 39.5932 16 42.1501 16C44.7069 16 46.2568 14.7989 46.7603 14.4501V15.8059H50.0921V4.99693C50.0921 1.35502 48.1168 0 44.7069 0H44.7062ZM46.6822 12.4354C45.8299 12.7456 44.28 13.2877 42.8082 13.2877C41.4138 13.2877 40.2901 12.6682 40.2901 11.157C40.2901 9.8005 41.1424 9.10365 43.0016 9.02631L46.6822 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M73.8005 2.71154H81.7804V0H70.3906V15.8059H81.7804V13.0944H73.8005V9.25834H80.5793V6.58548H73.8005V2.71154Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M98.2073 15.8059V0H94.7209V12.048C93.8686 12.4354 92.6675 13.0557 90.9243 13.0557C88.7549 13.0557 88.0967 11.8546 88.0967 9.29776V0H84.6095V9.7239C84.6095 13.7919 85.9266 16 90.072 16C92.3968 16 93.5592 15.1477 94.7982 14.4501V15.8059H98.2073Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M59.8152 0H53.5398V15.8059H59.8152C65.123 15.8059 67.7958 13.3651 67.7958 7.74863C67.7958 2.8283 64.8902 0.000743702 59.8152 0.000743702V0ZM59.6597 13.0549H57.0255V2.75021H59.6597C62.2947 2.75021 64.2313 4.02863 64.2313 7.74789C64.2313 11.4671 62.9528 13.0549 59.6597 13.0549Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.67054 0H1.89867V3.06033C4.64888 2.94432 5.42382 2.90564 6.6249 2.90564C8.52282 2.90564 9.64656 3.60249 9.64656 5.46249V6.66357H6.6249C1.54987 6.66357 0 8.71693 0 11.3898C0 14.8376 2.55685 16 5.11369 16C7.67054 16 9.22041 14.7989 9.7239 14.4501V15.8059H13.0557V4.99693C13.0557 1.35577 11.0797 0 7.67054 0ZM9.64656 12.4354C8.79427 12.7456 7.2444 13.2877 5.77261 13.2877C4.37817 13.2877 3.25444 12.6682 3.25444 11.157C3.25444 9.8005 4.10672 9.10365 5.96598 9.02631L9.64656 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n </svg>\n <span class=\"visually-hidden\">Amadeus</span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DfAmadeusLogoComponent {\n /**\n * Class to apply to the SVG element. For example, you can use `df-logo-dim` to set proper dimensions inside footer and navbar.\n */\n readonly svgClass = input('');\n}\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// 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 { 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// Amadeus Logo\nexport { DfAmadeusLogoComponent } from './angular/amadeus-logo/amadeus-logo.component';\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":["noop","i1","i3.DfIfMediaDirective","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/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/overflow.service.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/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/utils/html-element-helper.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.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/angular/amadeus-logo/amadeus-logo.component.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, DOCUMENT } from '@angular/core';\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","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 // eslint-disable-next-line @angular-eslint/prefer-inject\n private readonly el: ElementRef,\n // eslint-disable-next-line @angular-eslint/prefer-inject\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@NgModule({\n imports: [DfInsertIconDirective],\n exports: [DfInsertIconDirective]\n})\nexport class DfInsertIconModule {}\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","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","import { Directive, HostListener, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[dfTriggerClick]'\n})\nexport class DfTriggerClickDirective {\n private readonly elementRef = inject(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 AfterViewInit,\n inject,\n PLATFORM_ID,\n AfterViewChecked\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, AfterViewChecked, 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 ngAfterViewChecked() {\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 { inject, 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 private readonly calendar = inject(NgbCalendar);\n private readonly formatter = inject(NgbDateParserFormatter);\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 | null, 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.parseInput(this.fromDate, typed);\n this.fromDateAsStr = this.formatter.format(this.fromDate);\n }\n\n updateTo(typed: string) {\n this.toDate = this.parseInput(this.toDate, typed);\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 { Injectable, InjectionToken, OnDestroy, PLATFORM_ID, inject } 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<Record<string, string> | null>(null);\n\n private readonly _breakPointsVar = inject<Record<string, string>>(BREAKPOINTS_VARS);\n private readonly platformID = inject(PLATFORM_ID);\n\n constructor() {\n this.initBreakpoints();\n }\n\n get breakPoints$(): Observable<Record<string, string> | 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[][]): Record<string, string> {\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 = isPlatformBrowser(inject(PLATFORM_ID));\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 private readonly _mediaQuery = inject(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 { inject, 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 private readonly mediaObserver = inject(DfMediaObserver);\n private readonly _breakPointsService = inject(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","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 const;\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-3\">{{ 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","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 { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } 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, DOCUMENT } from '@angular/core';\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 private readonly _document = inject(DOCUMENT);\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 as any)[paddingRight] = `${actualPadding + scrollbarWidth}px`;\n return () => ((body.style as any)[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 Injectable,\n RendererFactory2,\n ApplicationRef,\n EmbeddedViewRef,\n ComponentRef,\n Type,\n TemplateRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector\n} from '@angular/core';\n\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 = inject(RendererFactory2).createRenderer(null, null);\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 private readonly document = inject(DOCUMENT);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly scrollbar = inject(ScrollBar);\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 // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\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(DfProgressIndicatorBackdropComponent, undefined, containerElt)\n : undefined;\n\n const contentRef = this.getContent(content, containerElt);\n const containerCmpRef: ComponentRef<DfProgressIndicatorContainerComponent> = this.createComponent(\n DfProgressIndicatorContainerComponent,\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 container: HTMLElement\n ): ComponentRef<any> | EmbeddedViewRef<any> {\n if (!content) {\n return this.createComponent(DfDefaultSpinnerComponent);\n } else if (content instanceof DfProgressIndicatorContentSpinner) {\n const cmpRef = this.createComponent(DfDefaultSpinnerComponent);\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);\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);\n }\n }\n\n private createComponent<T>(\n cmpType: Type<T>,\n childrenProjectables?: ComponentRef<unknown> | EmbeddedViewRef<unknown>,\n container?: HTMLElement\n ): ComponentRef<T> {\n let cmpRef: ComponentRef<T>;\n if (childrenProjectables) {\n if (childrenProjectables instanceof ComponentRef) {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector,\n projectableNodes: [[childrenProjectables.location.nativeElement]]\n });\n } else {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector,\n projectableNodes: [childrenProjectables.rootNodes]\n });\n }\n } else {\n cmpRef = createComponent(cmpType, {\n environmentInjector: this.environmentInjector\n });\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}\n","/** Pointer type */\nexport enum PointerType {\n /** Low pointer */\n Min,\n /** High pointer */\n Max\n}\n","import { PointerType } from './pointer-type';\n\nexport class ChangeContext {\n value?: number;\n highValue?: number;\n pointerType?: PointerType;\n}\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 =>\n Math.abs(modelValue - step.value)\n );\n\n let minDifferenceIndex: number = 0;\n for (let index: number = 0; index < stepsArray.length; index++) {\n if (\n differences[index] !== differences[minDifferenceIndex] &&\n differences[index] < differences[minDifferenceIndex]\n ) {\n minDifferenceIndex = index;\n }\n }\n\n return minDifferenceIndex;\n }\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\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\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}\n","import { Subject, Subscription } from 'rxjs';\n\nexport class EventListener {\n eventName?: string;\n events?: Subject<Event>;\n eventsSubscription?: Subscription;\n teardownCallback?: () => void;\n}\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\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nconst w: Window | any = typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\n\nlet passiveOptionAccessed = false;\nconst options = {\n get passive() {\n return (passiveOptionAccessed = true);\n }\n};\nconst noop = () => {};\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\nw.addEventListener && w.addEventListener('p', noop, options);\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\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 public attachPassiveEventListener(\n nativeElement: any,\n eventName: string,\n callback: (event: any) => void,\n throttleInterval?: number\n ): 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(\n !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(\n nativeElement: any,\n eventName: string,\n callback: (event: any) => void,\n throttleInterval?: number\n ): 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(\n !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","/* eslint-disable @angular-eslint/prefer-inject */\nimport { 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 // eslint-disable-next-line @angular-eslint/prefer-inject\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 // eslint-disable-next-line @angular-eslint/prefer-inject\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-inject */\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(): 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 { inject, 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 class?: string;\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 config = inject(DfSideNavConfig);\n private readonly _sideNavItems$ = new BehaviorSubject<DfSideNavItem[]>([]);\n private readonly _isMinmized$ = new BehaviorSubject<boolean>(this.config.isMinmized);\n private readonly _isCollapsed$ = new BehaviorSubject<boolean>(this.config.isCollapsed);\n private readonly _isPresent$ = new BehaviorSubject<boolean>(this.config.isPresent);\n private readonly _activeItem$ = new BehaviorSubject<DfSideNavItem | null>(null);\n private readonly _isInMenuOverlay$ = new BehaviorSubject<boolean>(this.config.isInMenuOverlay);\n private readonly _isAppOverlay$ = new BehaviorSubject<boolean>(this.config.isAppOverlay);\n private _isAppOverlayMode = this.config.isAppOverlayMode;\n private _items: DfSideNavItem[] = [];\n private readonly subscription: Subscription = new Subscription();\n\n constructor() {\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 { inject, 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 private readonly _ngbConfig = inject(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 { inject, 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$ = new BehaviorSubject<boolean>(inject(DfSideNavCollapseConfig).animation);\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, inject, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[dfManageSideNav]'\n})\nexport class DfManageSideNavDirective implements AfterViewChecked {\n private readonly element = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\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","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DfOverflowService {\n /**\n * @param element the HTML element\n * @returns whether the element is overflowing\n */\n hasOverflow(element: HTMLElement): boolean {\n return this.hasOverflowX(element) || this.hasOverflowY(element);\n }\n\n /**\n * @param element the HTML element\n * @returns whether the element is overflowing horizontally\n */\n 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 */\n hasOverflowY(element: HTMLElement): boolean {\n return element.offsetHeight < element.scrollHeight;\n }\n}\n","import { Directive, DoCheck, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\nimport { DfOverflowService } from './overflow.service';\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 private readonly overflowService = inject(DfOverflowService);\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 (this.overflowService.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, 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 [class]=\"item.class\" 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 { DfSideNavItem, 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 public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n}\n\n@Directive({ selector: 'ng-template[dfSideNavIcon]' })\nexport class DfSideNavIconDirective {\n public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\n}\n\n@Directive({ selector: 'ng-template[dfSideNavItem]' })\nexport class DfSideNavItemDirective {\n public readonly templateRef: TemplateRef<any> = inject(TemplateRef);\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<DfSideNavItem[], DfSideNavItem[]>(this.sideNavService.sideNavItems$, {\n initialValue: [],\n equal: () => false\n });\n\n constructor() {\n this.sideNavService.isInMenuOverlay$.pipe(takeUntilDestroyed()).subscribe((value) => {\n this.overlayClass.set(value);\n });\n 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","export const DF_SELECT_CLASS = 'df-ym';\n","import { Directive, ElementRef, HostListener, OnInit, Renderer2, inject } 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 private readonly select = inject(NgSelectComponent, { host: true });\n private readonly element = inject(ElementRef);\n private readonly rtlDirectionService = inject(DfDirectionDetectionService);\n private readonly renderer = inject(Renderer2);\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() {\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 { Directive, ElementRef, Renderer2, AfterViewInit, input, inject } 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","/**\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, 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';\n\nexport {\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n} from './sidenav.component';\nexport { DfManageSideNavDirective } from './manage-sidenav.directive';\n\n@NgModule({\n imports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective\n ],\n exports: [\n DfManageSideNavDirective,\n DfSideNavComponent,\n DfSideNavHeaderDirective,\n DfSideNavIconDirective,\n DfSideNavItemDirective,\n DfSideNavCollapseModule,\n DfMediaModule\n ]\n})\nexport class DfSideNavModule {}\n","import { AfterViewInit, Directive, ElementRef, Renderer2, effect, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[dfManageCardSelected]',\n host: {\n '(click)': 'click($event)',\n '(keydown)': 'keydown($event)',\n '[attr.tabindex]': '0'\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: Event) {\n const target = event.target as HTMLElement;\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 keydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n this.click(event);\n event.preventDefault();\n break;\n default:\n return;\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 {}\n","export const arrowRight = `<svg width=\"1440\" height=\"810\" viewBox=\"0 0 1440 810\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"var(--df-waves-of-progress-bg-color)\" />\n <mask id=\"mask0_3040_1578\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1440\"\n height=\"810\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_3040_1578)\">\n <g opacity=\"0.5\">\n <path\n d=\"M-194.045 87.9764C-178.381 87.9764 -163.118 90.9614 -148.685 96.8527C-133.733 102.95 -120.342 111.909 -108.875 123.478L108.614 342.909C120.014 354.41 128.842 367.798 134.845 382.693C140.647 397.085 143.59 412.288 143.59 427.876C143.59 443.465 140.65 458.668 134.845 473.06C128.842 487.955 120.014 501.343 108.614 512.844L-108.875 732.275C-120.342 743.844 -133.733 752.803 -148.685 758.9C-163.118 764.788 -178.381 767.776 -194.045 767.776C-209.708 767.776 -224.971 764.791 -239.405 758.9C-254.356 752.803 -267.747 743.844 -279.215 732.275L-496.703 512.844C-508.103 501.343 -516.931 487.955 -522.935 473.06C-528.736 458.668 -531.68 443.465 -531.68 427.876C-531.68 412.288 -528.74 397.085 -522.935 382.693C-516.931 367.798 -508.103 354.41 -496.703 342.909L-279.215 123.474C-267.747 111.905 -254.356 102.946 -239.405 96.8489C-224.971 90.9614 -209.708 87.9727 -194.045 87.9727M-194.045 86.4727C-225.286 86.4727 -256.527 98.4539 -280.28 122.416L-497.768 341.848C-544.981 389.48 -544.981 466.261 -497.768 513.898L-280.28 733.329C-256.527 757.291 -225.286 769.273 -194.045 769.273C-162.803 769.273 -131.562 757.291 -107.81 733.329L109.679 513.898C156.892 466.265 156.892 389.484 109.679 341.848L-107.81 122.42C-131.562 98.4577 -162.803 86.4764 -194.045 86.4764V86.4727Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-189.938 -270.881C-167.412 -270.881 -145.463 -266.587 -124.703 -258.116C-103.204 -249.345 -83.9406 -236.463 -67.4518 -219.825L453.104 305.382C469.541 321.964 482.264 341.262 490.919 362.734C499.282 383.483 503.523 405.402 503.523 427.872C503.523 450.342 499.282 472.26 490.919 493.009C482.264 514.485 469.541 533.779 453.104 550.362L-67.4518 1075.58C-83.9406 1092.21 -103.204 1105.1 -124.703 1113.87C-145.463 1122.33 -167.412 1126.63 -189.938 1126.63C-212.464 1126.63 -234.413 1122.34 -255.173 1113.87C-276.672 1105.1 -295.936 1092.21 -312.424 1075.58L-832.981 550.365C-849.417 533.783 -862.141 514.485 -870.796 493.013C-879.158 472.264 -883.399 450.345 -883.399 427.875C-883.399 405.405 -879.158 383.487 -870.796 362.738C-862.141 341.262 -849.417 321.968 -832.981 305.385L-312.424 -219.825C-295.936 -236.463 -276.672 -249.345 -255.173 -258.116C-234.413 -266.583 -212.464 -270.881 -189.938 -270.881ZM-189.938 -272.381C-234.698 -272.381 -279.462 -255.213 -313.489 -220.882L-834.046 304.328C-901.849 372.739 -901.849 483.012 -834.046 551.423L-313.489 1076.63C-279.462 1110.96 -234.698 1128.13 -189.938 1128.13C-145.178 1128.13 -100.414 1110.96 -66.3868 1076.63L454.169 551.423C521.973 483.012 521.973 372.739 454.169 304.328L-66.3868 -220.882C-100.414 -255.213 -145.178 -272.381 -189.938 -272.381Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-185.831 -629.736C-171.352 -629.736 -156.817 -628.334 -142.623 -625.574C-128.294 -622.784 -114.198 -618.584 -100.721 -613.086C-72.6708 -601.641 -47.5382 -584.834 -26.0245 -563.129L797.595 267.86C819.068 289.524 835.688 314.731 846.994 342.785C852.432 356.274 856.587 370.374 859.343 384.695C862.073 398.881 863.46 413.409 863.46 427.876C863.46 442.344 862.077 456.871 859.343 471.057C856.587 485.379 852.432 499.479 846.994 512.967C835.688 541.021 819.068 566.229 797.595 587.892L-26.0283 1418.88C-47.542 1440.58 -72.6744 1457.39 -100.724 1468.83C-114.202 1474.33 -128.298 1478.54 -142.627 1481.32C-156.817 1484.09 -171.356 1485.48 -185.834 1485.48C-200.313 1485.48 -214.848 1484.09 -229.042 1481.32C-243.371 1478.53 -257.467 1474.33 -270.944 1468.83C-298.994 1457.39 -324.127 1440.58 -345.641 1418.88L-1169.26 587.892C-1190.73 566.229 -1207.35 541.021 -1218.66 512.967C-1224.09 499.479 -1228.25 485.379 -1231 471.057C-1233.73 456.871 -1235.12 442.344 -1235.12 427.876C-1235.12 413.409 -1233.74 398.881 -1231 384.695C-1228.25 370.374 -1224.09 356.274 -1218.66 342.785C-1207.35 314.731 -1190.73 289.524 -1169.26 267.86L-345.633 -563.125C-324.12 -584.83 -298.991 -601.638 -270.937 -613.083C-257.459 -618.58 -243.363 -622.784 -229.034 -625.57C-214.844 -628.334 -200.306 -629.733 -185.827 -629.733M-185.827 -631.233C-244.109 -631.233 -302.388 -608.883 -346.694 -564.179L-1170.32 266.802C-1258.72 355.992 -1258.72 499.76 -1170.32 588.946L-346.698 1419.94C-302.392 1464.64 -244.109 1486.99 -185.831 1486.99C-127.552 1486.99 -69.2695 1464.64 -24.9633 1419.94L798.66 588.95C887.059 499.76 887.059 355.992 798.66 266.806L-24.9633 -564.183C-69.2695 -608.886 -127.552 -631.236 -185.831 -631.236L-185.827 -631.233Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-181.725 -988.59C-163.868 -988.59 -145.935 -986.861 -128.43 -983.456C-110.757 -980.014 -93.3679 -974.831 -76.7441 -968.051C-42.1429 -953.936 -11.1416 -933.202 15.3934 -906.427L1142.08 230.336C1168.59 257.078 1189.11 288.199 1203.07 322.83C1209.78 339.484 1214.91 356.888 1218.31 374.569C1221.68 392.081 1223.39 410.017 1223.39 427.879C1223.39 445.74 1221.68 463.676 1218.31 481.189C1214.91 498.866 1209.78 516.274 1203.07 532.927C1189.11 567.559 1168.59 598.68 1142.08 625.421L15.3934 1762.18C-11.1453 1788.95 -42.1429 1809.69 -76.7441 1823.8C-93.3679 1830.58 -110.757 1835.77 -128.43 1839.21C-145.935 1842.61 -163.864 1844.34 -181.725 1844.34C-199.587 1844.34 -217.515 1842.61 -235.02 1839.21C-252.694 1835.77 -270.083 1830.58 -286.707 1823.8C-321.308 1809.69 -352.305 1788.95 -378.844 1762.18L-1505.54 625.414C-1532.04 598.672 -1552.56 567.551 -1566.52 532.92C-1573.23 516.266 -1578.36 498.862 -1581.76 481.181C-1585.13 463.669 -1586.84 445.733 -1586.84 427.871C-1586.84 410.01 -1585.13 392.074 -1581.76 374.561C-1578.36 356.884 -1573.23 339.476 -1566.52 322.823C-1552.56 288.191 -1532.04 257.07 -1505.54 230.329L-378.844 -906.427C-352.309 -933.202 -321.308 -953.936 -286.707 -968.051C-270.083 -974.831 -252.694 -980.018 -235.02 -983.456C-217.515 -986.865 -199.587 -988.59 -181.725 -988.59ZM-181.725 -990.09C-253.527 -990.09 -325.328 -962.554 -379.909 -907.481L-1506.6 229.279C-1615.59 339.244 -1615.59 516.506 -1506.6 626.471L-379.909 1763.23C-325.324 1818.31 -253.527 1845.84 -181.725 1845.84C-109.924 1845.84 -38.1229 1818.31 16.4584 1763.23L1143.15 626.471C1252.14 516.506 1252.14 339.244 1143.15 229.279L16.4584 -907.485C-38.1266 -962.557 -109.928 -990.094 -181.725 -990.094V-990.09Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-177.619 -1347.45C-156.379 -1347.45 -135.053 -1345.39 -114.236 -1341.34C-93.2177 -1337.25 -72.5364 -1331.08 -52.7627 -1323.01C-32.6213 -1314.8 -13.2264 -1304.52 4.88977 -1292.48C23.4823 -1280.11 40.9536 -1265.73 56.8162 -1249.72L1486.57 192.811C1502.43 208.804 1516.67 226.377 1528.9 245.044C1540.83 263.24 1551.01 282.698 1559.14 302.877C1567.13 322.692 1573.23 343.407 1577.28 364.444C1581.3 385.283 1583.33 406.625 1583.33 427.88C1583.33 449.135 1581.3 470.476 1577.28 491.315C1573.23 512.352 1567.13 533.063 1559.14 552.882C1551.01 573.061 1540.84 592.516 1528.9 610.715C1516.67 629.382 1502.43 646.955 1486.57 662.948L56.8198 2105.48C40.9573 2121.48 23.4861 2135.87 4.89355 2148.23C-13.2227 2160.28 -32.6177 2170.55 -52.759 2178.77C-72.5289 2186.84 -93.2103 2193 -114.233 2197.09C-135.053 2201.15 -156.375 2203.2 -177.615 2203.2C-198.855 2203.2 -220.181 2201.15 -240.998 2197.09C-262.016 2193 -282.698 2186.84 -302.471 2178.77C-322.613 2170.55 -342.008 2160.28 -360.124 2148.23C-378.717 2135.87 -396.188 2121.48 -412.05 2105.48L-1841.81 662.941C-1857.66 646.947 -1871.9 629.375 -1884.14 610.707C-1896.07 592.512 -1906.24 573.053 -1914.38 552.875C-1922.36 533.059 -1928.47 512.345 -1932.52 491.307C-1936.53 470.468 -1938.57 449.127 -1938.57 427.872C-1938.57 406.617 -1936.53 385.276 -1932.52 364.437C-1928.47 343.399 -1922.36 322.688 -1914.38 302.87C-1906.24 282.691 -1896.07 263.236 -1884.14 245.037C-1871.9 226.37 -1857.66 208.797 -1841.81 192.803L-412.054 -1249.73C-396.192 -1265.73 -378.72 -1280.12 -360.128 -1292.48C-342.011 -1304.53 -322.617 -1314.8 -302.475 -1323.02C-282.705 -1331.08 -262.024 -1337.25 -241.001 -1341.34C-220.182 -1345.39 -198.859 -1347.45 -177.619 -1347.45M-177.619 -1348.95C-262.939 -1348.95 -348.259 -1316.23 -413.119 -1250.79L-1842.88 191.757C-1972.46 322.501 -1972.46 533.255 -1842.88 663.998L-413.119 2106.54C-348.259 2171.98 -262.939 2204.7 -177.619 2204.7C-92.299 2204.7 -6.979 2171.98 57.8811 2106.54L1487.64 663.995C1617.22 533.251 1617.22 322.497 1487.64 191.753L57.8848 -1250.78C-6.97534 -1316.22 -92.2953 -1348.95 -177.615 -1348.95L-177.619 -1348.95Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n </g>\n</svg>`;\n\nexport const arrowUp = `<svg width=\"1440\" height=\"810\" viewBox=\"0 0 1440 810\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n class=\"waves-of-progress\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"var(--df-waves-of-progress-bg-color)\" />\n <mask id=\"mask0_3040_1593\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1440\"\n height=\"810\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_3040_1593)\">\n <g opacity=\"0.5\">\n <path\n d=\"M719.999 657.957C734.969 657.957 749.039 663.785 759.626 674.371L894.078 808.823C904.661 819.41 910.492 833.48 910.492 848.45C910.492 863.42 904.664 877.49 894.078 888.076L759.626 1022.53C749.043 1033.11 734.969 1038.94 719.999 1038.94C705.029 1038.94 690.959 1033.11 680.373 1022.53L545.921 888.076C535.338 877.493 529.507 863.42 529.507 848.45C529.507 833.48 535.334 819.41 545.921 808.823L680.373 674.371C690.956 663.788 705.029 657.957 719.999 657.957ZM719.999 656.457C705.273 656.457 690.547 662.075 679.312 673.31L544.859 807.762C522.389 830.232 522.389 866.663 544.859 889.133L679.312 1023.59C690.547 1034.82 705.273 1040.44 719.999 1040.44C734.725 1040.44 749.452 1034.82 760.687 1023.59L895.139 889.133C917.609 866.663 917.609 830.232 895.139 807.762L760.687 673.31C749.452 662.075 734.725 656.457 719.999 656.457Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M720 373.762C732.367 373.762 744.423 376.109 755.831 380.733C767.643 385.522 778.241 392.56 787.331 401.65L1166.8 781.117C1175.89 790.207 1182.93 800.804 1187.71 812.617C1192.34 824.024 1194.69 836.08 1194.69 848.448C1194.69 860.815 1192.34 872.872 1187.71 884.279C1182.93 896.092 1175.89 906.689 1166.8 915.779L787.331 1295.25C778.241 1304.34 767.643 1311.37 755.831 1316.16C744.423 1320.79 732.367 1323.13 720 1323.13C707.632 1323.13 695.576 1320.79 684.168 1316.16C672.356 1311.37 661.758 1304.34 652.668 1295.25L273.202 915.779C264.112 906.689 257.073 896.092 252.285 884.279C247.657 872.872 245.313 860.815 245.313 848.448C245.313 836.08 247.661 824.024 252.285 812.617C257.073 800.804 264.112 790.207 273.202 781.117L652.668 401.65C661.758 392.56 672.356 385.522 684.168 380.733C695.576 376.105 707.632 373.762 720 373.762ZM720 372.262C695.246 372.262 670.492 381.704 651.607 400.589L272.141 780.055C234.367 817.829 234.367 879.07 272.141 916.84L651.607 1296.31C670.492 1315.19 695.246 1324.63 720 1324.63C744.753 1324.63 769.507 1315.19 788.392 1296.31L1167.86 916.84C1205.63 879.067 1205.63 817.825 1167.86 780.055L788.392 400.589C769.507 381.704 744.753 372.262 720 372.262Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M720 89.5645C737.456 89.5645 754.474 92.8757 770.576 99.4044C787.249 106.166 802.207 116.099 815.036 128.928L1439.52 753.408C1452.35 766.241 1462.28 781.199 1469.04 797.868C1475.57 813.971 1478.88 830.988 1478.88 848.444C1478.88 865.901 1475.57 882.918 1469.04 899.021C1462.28 915.693 1452.34 930.652 1439.52 943.481L815.036 1567.96C802.207 1580.79 787.245 1590.72 770.576 1597.48C754.474 1604.01 737.456 1607.32 720 1607.32C702.544 1607.32 685.526 1604.01 669.424 1597.48C652.751 1590.72 637.792 1580.79 624.964 1567.96L0.483578 943.481C-12.3489 930.648 -22.2789 915.689 -29.0402 899.021C-35.5689 882.918 -38.8802 865.901 -38.8802 848.444C-38.8802 830.988 -35.5689 813.971 -29.0402 797.868C-22.2789 781.196 -12.3452 766.237 0.483578 753.408L624.964 128.928C637.796 116.096 652.755 106.166 669.424 99.4044C685.526 92.8757 702.544 89.5645 720 89.5645ZM720 88.0645C685.219 88.0645 650.437 101.332 623.898 127.871L-0.581409 752.351C-53.6552 805.424 -53.6552 891.476 -0.581409 944.549L623.898 1569.03C650.437 1595.57 685.219 1608.84 720 1608.84C754.781 1608.84 789.562 1595.57 816.101 1569.03L1440.58 944.549C1493.65 891.476 1493.65 805.424 1440.58 752.351L816.101 127.871C789.562 101.332 754.781 88.0645 720 88.0645Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M719.999 -194.633C742.544 -194.633 764.523 -190.358 785.32 -181.92C806.853 -173.19 826.173 -160.358 842.744 -143.787L1712.24 725.707C1728.81 742.278 1741.64 761.598 1750.37 783.131C1758.81 803.928 1763.08 825.907 1763.08 848.452C1763.08 870.997 1758.81 892.976 1750.37 913.773C1741.64 935.306 1728.81 954.626 1712.24 971.197L842.744 1840.69C826.173 1857.26 806.853 1870.09 785.32 1878.82C764.523 1887.26 742.544 1891.53 719.999 1891.53C697.454 1891.53 675.475 1887.26 654.678 1878.82C633.145 1870.09 613.825 1857.26 597.254 1840.69L-272.24 971.197C-288.811 954.626 -301.64 935.306 -310.373 913.773C-318.807 892.976 -323.086 870.997 -323.086 848.452C-323.086 825.907 -318.811 803.928 -310.373 783.131C-301.643 761.598 -288.811 742.278 -272.24 725.707L597.254 -143.79C613.825 -160.362 633.145 -173.19 654.678 -181.924C675.475 -190.358 697.454 -194.637 719.999 -194.637M719.999 -196.137C675.19 -196.137 630.382 -179.044 596.193 -144.855L-273.301 724.642C-341.678 793.02 -341.678 903.877 -273.301 972.255L596.193 1841.75C630.382 1875.94 675.19 1893.03 719.999 1893.03C764.808 1893.03 809.617 1875.94 843.805 1841.75L1713.3 972.255C1781.68 903.877 1781.68 793.02 1713.3 724.642L843.809 -144.852C809.62 -179.04 764.812 -196.133 720.003 -196.133L719.999 -196.137Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M720 -478.83C733.616 -478.83 747.288 -477.521 760.638 -474.934C774.116 -472.324 787.38 -468.394 800.066 -463.249C826.458 -452.546 850.14 -436.819 870.45 -416.509L1984.96 697.999C2005.27 718.309 2020.99 741.99 2031.7 768.382C2036.84 781.069 2040.77 794.332 2043.38 807.81C2045.97 821.16 2047.28 834.832 2047.28 848.449C2047.28 862.065 2045.97 875.737 2043.38 889.087C2040.77 902.565 2036.84 915.829 2031.7 928.515C2020.99 954.907 2005.27 978.589 1984.96 998.902L870.45 2113.41C850.14 2133.72 826.458 2149.45 800.066 2160.15C787.38 2165.29 774.116 2169.22 760.638 2171.83C747.288 2174.42 733.616 2175.73 720 2175.73C706.383 2175.73 692.711 2174.42 679.361 2171.83C665.883 2169.22 652.62 2165.29 639.933 2160.15C613.541 2149.45 589.859 2133.72 569.546 2113.41L-544.962 998.902C-565.272 978.592 -580.999 954.911 -591.702 928.515C-596.847 915.829 -600.777 902.565 -603.387 889.087C-605.97 875.737 -607.283 862.065 -607.283 848.449C-607.283 834.832 -605.974 821.16 -603.387 807.81C-600.777 794.332 -596.847 781.069 -591.702 768.382C-580.999 741.99 -565.272 718.309 -544.962 697.999L569.55 -416.509C589.86 -436.819 613.541 -452.546 639.937 -463.249C652.623 -468.394 665.887 -472.324 679.365 -474.934C692.715 -477.518 706.387 -478.83 720.003 -478.83M720.003 -480.33C665.167 -480.33 610.331 -459.409 568.488 -417.57L-546.019 696.937C-629.697 780.615 -629.697 916.286 -546.019 999.964L568.488 2114.47C610.327 2156.31 665.163 2177.23 720.003 2177.23C774.843 2177.23 829.676 2156.31 871.518 2114.47L1986.03 999.964C2069.7 916.286 2069.7 780.615 1986.03 696.937L871.515 -417.57C829.676 -459.409 774.84 -480.33 720 -480.33H720.003Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n </g>\n</svg>`;\n\nexport const circleDiagonal = `<svg width=\"1440\" height=\"810\" viewBox=\"0 0 1440 810\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"var(--df-waves-of-progress-bg-color)\" />\n <mask id=\"mask0_3174_5204\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1440\"\n height=\"810\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_3174_5204)\">\n <g opacity=\"0.5\">\n <path\n d=\"M-11.2496 -175.631C11.4491 -175.631 33.4691 -171.187 54.1954 -162.42C74.2166 -153.952 92.1979 -141.828 107.64 -126.386C123.083 -110.943 135.207 -92.9621 143.674 -72.9408C152.442 -52.2146 156.885 -30.1946 156.885 -7.49585C156.885 15.2029 152.442 37.2229 143.674 57.9491C135.207 77.9704 123.083 95.9517 107.64 111.394C92.1979 126.837 74.2166 138.96 54.1954 147.428C33.4691 156.195 11.4491 160.639 -11.2496 160.639C-33.9484 160.639 -55.9684 156.195 -76.6946 147.428C-96.7159 138.96 -114.697 126.837 -130.14 111.394C-145.582 95.9517 -157.706 77.9704 -166.173 57.9491C-174.941 37.2229 -179.385 15.2029 -179.385 -7.49585C-179.385 -30.1946 -174.941 -52.2146 -166.173 -72.9408C-157.706 -92.9621 -145.582 -110.943 -130.14 -126.386C-114.697 -141.828 -96.7159 -153.952 -76.6946 -162.42C-55.9684 -171.187 -33.9484 -175.631 -11.2496 -175.631ZM-11.2496 -177.131C-104.936 -177.131 -180.881 -101.182 -180.881 -7.4996C-180.881 86.1829 -104.936 162.132 -11.2496 162.132C82.4366 162.132 158.382 86.1866 158.382 -7.4996C158.382 -101.186 82.4366 -177.131 -11.2496 -177.131Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-33.7277 -324.273C3.13483 -324.273 39.9748 -321.236 75.7648 -315.243C110.644 -309.405 144.952 -300.69 177.735 -289.342C209.921 -278.205 240.96 -264.416 269.996 -248.366C298.751 -232.47 325.789 -214.218 350.359 -194.111C374.925 -174.011 397.226 -151.893 416.644 -128.377C436.241 -104.64 453.075 -79.2672 466.672 -52.9609C480.517 -26.1747 491.152 1.85281 498.277 30.3491C505.59 59.584 509.295 89.6703 509.295 119.779C509.295 149.888 505.586 179.974 498.277 209.209C491.152 237.702 480.517 265.733 466.672 292.519C453.075 318.825 436.241 344.198 416.644 367.935C397.226 391.452 374.925 413.569 350.359 433.669C325.789 453.773 298.747 472.028 269.996 487.924C240.96 503.974 209.921 517.759 177.735 528.9C144.952 540.248 110.644 548.959 75.7648 554.802C39.9711 560.794 3.13483 563.832 -33.7277 563.832C-70.5902 563.832 -107.43 560.794 -143.22 554.802C-178.099 548.963 -212.408 540.248 -245.19 528.9C-277.376 517.763 -308.415 503.978 -337.451 487.924C-366.206 472.028 -393.244 453.777 -417.814 433.669C-442.38 413.569 -464.681 391.452 -484.099 367.935C-503.696 344.198 -520.53 318.825 -534.128 292.519C-547.973 265.733 -558.608 237.705 -565.733 209.209C-573.045 179.974 -576.75 149.888 -576.75 119.779C-576.75 89.6703 -573.041 59.584 -565.733 30.3491C-558.608 1.85654 -547.973 -26.1747 -534.128 -52.9609C-520.53 -79.2672 -503.696 -104.64 -484.099 -128.377C-464.681 -151.893 -442.38 -174.011 -417.814 -194.111C-393.244 -214.215 -366.203 -232.47 -337.451 -248.366C-308.415 -264.416 -277.376 -278.201 -245.19 -289.342C-212.408 -300.69 -178.099 -309.401 -143.22 -315.243C-107.426 -321.236 -70.5902 -324.273 -33.7277 -324.273ZM-33.7277 -325.773C-334.463 -325.773 -578.254 -126.292 -578.254 119.779C-578.254 365.85 -334.463 565.328 -33.7277 565.328C267.007 565.328 510.799 365.847 510.799 119.775C510.799 -126.296 267.004 -325.773 -33.7277 -325.773Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-56.2076 -472.916C6.09485 -472.916 68.3561 -467.992 128.851 -458.276C187.805 -448.811 245.791 -434.685 301.201 -416.295C355.602 -398.239 408.069 -375.892 457.149 -349.875C505.756 -324.109 551.461 -294.517 592.996 -261.922C634.524 -229.335 672.226 -193.477 705.053 -155.347C738.188 -116.861 766.647 -75.716 789.639 -33.0635C813.05 10.3727 831.031 55.8227 843.08 102.03C855.443 149.438 861.71 198.229 861.71 247.054C861.71 295.879 855.44 344.67 843.08 392.078C831.031 438.285 813.05 483.735 789.639 527.171C766.647 569.828 738.188 610.969 705.053 649.455C672.226 687.585 634.524 723.443 592.996 756.03C551.461 788.625 505.752 818.216 457.149 843.983C408.069 870 355.602 892.347 301.201 910.403C245.791 928.793 187.805 942.919 128.851 952.384C68.3561 962.096 6.09485 967.024 -56.2076 967.024C-118.51 967.024 -180.771 962.1 -241.266 952.384C-300.22 942.919 -358.206 928.793 -413.616 910.403C-468.018 892.347 -520.484 870 -569.564 843.983C-618.171 818.216 -663.876 788.625 -705.411 756.03C-746.939 723.443 -784.641 687.585 -817.469 649.455C-850.604 610.969 -879.063 569.824 -902.054 527.171C-925.465 483.735 -943.446 438.285 -955.495 392.078C-967.859 344.67 -974.125 295.879 -974.125 247.054C-974.125 198.229 -967.855 149.438 -955.495 102.03C-943.446 55.8227 -925.465 10.3727 -902.054 -33.0635C-879.063 -75.7198 -850.604 -116.861 -817.469 -155.347C-784.641 -193.477 -746.939 -229.335 -705.411 -261.922C-663.876 -294.514 -618.168 -324.109 -569.564 -349.875C-520.484 -375.892 -468.018 -398.239 -413.616 -416.295C-358.206 -434.685 -300.22 -448.811 -241.266 -458.276C-180.771 -467.989 -118.51 -472.916 -56.2076 -472.916ZM-56.2076 -474.416C-563.991 -474.416 -975.629 -151.402 -975.629 247.054C-975.629 645.51 -563.991 968.52 -56.2076 968.52C451.576 968.52 863.214 645.506 863.214 247.05C863.214 -151.406 451.576 -474.416 -56.2076 -474.416Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M-78.6857 -621.559C9.0531 -621.559 96.7394 -614.749 181.932 -601.312C264.957 -588.221 346.621 -568.687 424.658 -543.251C501.274 -518.28 575.168 -487.372 644.288 -451.387C712.748 -415.747 777.121 -374.82 835.621 -329.741C894.113 -284.666 947.217 -235.069 993.454 -182.329C1040.13 -129.09 1080.21 -72.1799 1112.6 -13.1736C1145.58 46.9127 1170.91 109.789 1187.88 173.708C1196.51 206.201 1203.1 239.456 1207.46 272.55C1211.88 306.131 1214.13 340.376 1214.13 374.333C1214.13 408.289 1211.89 442.534 1207.46 476.115C1203.1 509.209 1196.51 542.464 1187.88 574.958C1170.91 638.876 1145.58 701.756 1112.6 761.839C1080.22 820.841 1040.13 877.755 993.454 930.994C947.217 983.734 894.113 1033.33 835.621 1078.41C777.121 1123.49 712.748 1164.41 644.288 1200.05C575.168 1236.04 501.274 1266.95 424.658 1291.92C346.621 1317.35 264.957 1336.89 181.932 1349.98C96.7394 1363.41 9.05676 1370.22 -78.6857 1370.22C-166.428 1370.22 -254.111 1363.41 -339.303 1349.98C-422.328 1336.89 -503.992 1317.35 -582.029 1291.92C-658.646 1266.95 -732.539 1236.04 -801.659 1200.05C-870.119 1164.41 -934.492 1123.49 -992.992 1078.41C-1051.48 1033.33 -1104.59 983.734 -1150.83 930.994C-1197.5 877.755 -1237.59 820.845 -1269.97 761.839C-1302.96 701.753 -1328.28 638.876 -1345.26 574.958C-1353.88 542.464 -1360.47 509.209 -1364.83 476.115C-1369.26 442.534 -1371.5 408.289 -1371.5 374.333C-1371.5 340.376 -1369.26 306.131 -1364.83 272.55C-1360.47 239.456 -1353.88 206.201 -1345.26 173.708C-1328.28 109.789 -1302.95 46.9089 -1269.97 -13.1736C-1237.59 -72.1761 -1197.5 -129.09 -1150.83 -182.329C-1104.59 -235.069 -1051.48 -284.666 -992.992 -329.741C-934.492 -374.82 -870.119 -415.747 -801.659 -451.387C-732.539 -487.372 -658.646 -518.28 -582.029 -543.251C-503.992 -568.687 -422.328 -588.221 -339.303 -601.312C-254.111 -614.745 -166.428 -621.559 -78.6857 -621.559ZM-78.6857 -623.059C-793.518 -623.059 -1373 -176.512 -1373 374.329C-1373 925.17 -793.518 1371.72 -78.6857 1371.72C636.147 1371.72 1215.63 925.17 1215.63 374.329C1215.63 -176.512 636.143 -623.059 -78.6857 -623.059Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n </g>\n</svg>`;\n\nexport const circleUp = `<svg width=\"1440\" height=\"810\" viewBox=\"0 0 1440 810\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"var(--df-waves-of-progress-bg-color)\" />\n <mask id=\"mask0_3174_6806\" style=\"mask-type:luminance\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1440\"\n height=\"810\">\n <path d=\"M1440 0H0V810H1440V0Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_3174_6806)\">\n <g opacity=\"0.5\">\n <path\n d=\"M420.319 594.342C446.929 594.342 473.524 597.154 499.362 602.697C524.543 608.101 549.311 616.163 572.981 626.663C596.224 636.972 618.638 649.733 639.608 664.591C660.379 679.309 679.913 696.211 697.665 714.826C715.418 733.444 731.535 753.931 745.571 775.718C759.743 797.716 771.912 821.232 781.744 845.611C791.76 870.443 799.452 896.431 804.608 922.853C809.899 949.962 812.58 977.866 812.58 1005.79C812.58 1033.71 809.899 1061.61 804.608 1088.72C799.452 1115.14 791.76 1141.13 781.744 1165.97C771.912 1190.35 759.739 1213.86 745.571 1235.86C731.535 1257.65 715.418 1278.13 697.665 1296.75C679.913 1315.37 660.379 1332.27 639.608 1346.99C618.638 1361.84 596.224 1374.6 572.981 1384.91C549.311 1395.41 524.543 1403.48 499.362 1408.88C473.524 1414.43 446.929 1417.23 420.319 1417.23C393.709 1417.23 367.114 1414.42 341.277 1408.88C316.095 1403.48 291.327 1395.41 267.657 1384.91C244.414 1374.6 222 1361.84 201.03 1346.99C180.259 1332.27 160.725 1315.37 142.973 1296.75C125.22 1278.13 109.103 1257.65 95.0665 1235.86C80.8953 1213.86 68.7265 1190.34 58.894 1165.97C48.8778 1141.13 41.1865 1115.15 36.0303 1088.72C30.739 1061.61 28.0578 1033.71 28.0578 1005.79C28.0578 977.866 30.739 949.962 36.0303 922.853C41.1865 896.434 48.8778 870.447 58.894 845.611C68.7265 821.228 80.899 797.712 95.0665 775.718C109.103 753.931 125.22 733.444 142.973 714.826C160.725 696.207 180.259 679.306 201.03 664.591C222 649.733 244.414 636.972 267.657 626.663C291.327 616.163 316.095 608.101 341.277 602.697C367.114 597.151 393.709 594.342 420.319 594.342ZM420.319 592.842C202.853 592.842 26.5615 777.724 26.5615 1005.79C26.5615 1233.85 202.853 1418.73 420.319 1418.73C637.785 1418.73 814.077 1233.85 814.077 1005.79C814.077 777.724 637.785 592.842 420.319 592.842Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M541.351 240.172C587.813 240.172 634.246 245.617 679.358 256.353C723.327 266.816 766.576 282.431 807.908 302.759C848.491 322.724 887.637 347.433 924.256 376.203C960.53 404.703 994.643 437.437 1025.64 473.493C1056.65 509.553 1084.8 549.232 1109.31 591.427C1134.06 634.031 1155.32 679.578 1172.5 726.802C1189.99 774.903 1203.43 825.239 1212.43 876.416C1221.67 928.927 1226.36 982.976 1226.36 1037.06C1226.36 1091.14 1221.67 1145.19 1212.43 1197.7C1203.43 1248.88 1189.99 1299.21 1172.5 1347.31C1155.32 1394.54 1134.06 1440.09 1109.31 1482.69C1084.8 1524.88 1056.65 1564.56 1025.64 1600.62C994.643 1636.68 960.53 1669.41 924.256 1697.91C887.637 1726.68 848.495 1751.4 807.908 1771.36C766.58 1791.69 723.327 1807.3 679.358 1817.76C634.246 1828.5 587.813 1833.94 541.351 1833.94C494.888 1833.94 448.456 1828.5 403.343 1817.76C359.375 1807.3 316.126 1791.69 274.793 1771.36C234.207 1751.39 195.065 1726.68 158.446 1697.91C122.172 1669.41 88.0583 1636.68 57.0571 1600.62C26.0521 1564.56 -2.09915 1524.88 -26.6129 1482.69C-51.3629 1440.09 -72.6216 1394.54 -89.7966 1347.31C-107.29 1299.21 -120.727 1248.88 -129.73 1197.7C-138.97 1145.19 -143.654 1091.14 -143.654 1037.06C-143.654 982.976 -138.97 928.927 -129.73 876.416C-120.727 825.239 -107.29 774.903 -89.7966 726.802C-72.6216 679.578 -51.3629 634.031 -26.6129 591.427C-2.09915 549.232 26.0483 509.553 57.0571 473.493C88.0583 437.437 122.172 404.707 158.446 376.203C195.065 347.433 234.207 322.721 274.793 302.759C316.122 282.431 359.375 266.816 403.343 256.353C448.456 245.617 494.888 240.172 541.351 240.172ZM541.351 238.672C162.207 238.672 -145.15 596.122 -145.15 1037.06C-145.15 1477.99 162.207 1835.44 541.351 1835.44C920.495 1835.44 1227.85 1477.99 1227.85 1037.06C1227.85 596.122 920.495 238.672 541.351 238.672Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n <g opacity=\"0.5\">\n <path\n d=\"M662.386 -113.996C728.704 -113.996 794.982 -105.919 859.377 -89.9886C922.137 -74.4636 983.873 -51.2961 1042.87 -21.1311C1100.8 8.49016 1156.67 45.1539 1208.94 87.8439C1260.72 130.133 1309.41 178.699 1353.66 232.193C1397.91 285.694 1438.1 344.565 1473.08 407.171C1508.4 470.381 1538.75 537.96 1563.26 608.025C1588.23 679.388 1607.4 754.069 1620.26 829.995C1633.44 907.901 1640.13 988.088 1640.13 1068.33C1640.13 1148.57 1633.44 1228.75 1620.26 1306.66C1607.4 1382.58 1588.23 1457.27 1563.26 1528.63C1538.75 1598.69 1508.4 1666.27 1473.08 1729.48C1438.09 1792.09 1397.91 1850.96 1353.66 1904.46C1309.41 1957.96 1260.72 2006.52 1208.94 2048.81C1156.67 2091.5 1100.8 2128.16 1042.87 2157.78C983.873 2187.95 922.137 2211.12 859.377 2226.64C794.982 2242.57 728.704 2250.65 662.386 2250.65C596.067 2250.65 529.789 2242.57 465.394 2226.64C402.634 2211.12 340.898 2187.95 281.903 2157.78C223.973 2128.16 168.098 2091.5 115.831 2048.81C64.0544 2006.52 15.3644 1957.95 -28.8894 1904.46C-73.1431 1850.96 -113.324 1792.09 -148.312 1729.48C-183.637 1666.27 -213.978 1598.69 -238.492 1528.63C-263.459 1457.27 -282.637 1382.58 -295.488 1306.66C-308.677 1228.75 -315.363 1148.57 -315.363 1068.33C-315.363 988.088 -308.677 907.901 -295.488 829.995C-282.637 754.069 -263.459 679.388 -238.492 608.025C-213.978 537.96 -183.637 470.381 -148.312 407.171C-113.324 344.565 -73.1469 285.694 -28.8894 232.193C15.3606 178.695 64.0506 130.129 115.831 87.8439C168.098 45.1539 223.973 8.49016 281.903 -21.1311C340.898 -51.2961 402.634 -74.4636 465.394 -89.9886C529.789 -105.919 596.067 -113.996 662.386 -113.996ZM662.386 -115.496C121.564 -115.496 -316.859 414.521 -316.859 1068.33C-316.859 1722.13 121.564 2252.15 662.386 2252.15C1203.21 2252.15 1641.63 1722.13 1641.63 1068.33C1641.63 414.521 1203.21 -115.496 662.386 -115.496Z\"\n fill=\"var(--df-waves-of-progress-line-color)\" />\n </g>\n </g>\n</svg>`;\n","import { computed, Directive, input } from '@angular/core';\nimport { arrowRight, arrowUp, circleDiagonal, circleUp } from './waves';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst colors = ['sky', 'crimson', 'pumpkin', 'forest', 'canary', 'fuchsia', 'violet'] as const;\ntype Color = (typeof colors)[number];\ntype Tonality = 'dark' | 'vivid' | 'light';\nexport type AcceptedColor = `${Tonality}-${Color}`;\n\nexport const colorsMap: Record<AcceptedColor, [string, string]> = {\n 'dark-sky': ['#000835', '#3A8BFF'],\n 'dark-crimson': ['#560900FF', '#FF514DFF'],\n 'dark-pumpkin': ['#5B2500FF', '#FF7920FF'],\n 'dark-forest': ['#023A00FF', '#92FF73FF'],\n 'dark-canary': ['#564A00FF', '#FCE649FF'],\n 'dark-fuchsia': ['#4F0230FF', '#FF58ACFF'],\n 'dark-violet': ['#26005AFF', '#B650FFFF'],\n 'vivid-sky': ['#3A8BFF', '#000835'],\n 'vivid-crimson': ['#FF514DFF', '#560900FF'],\n 'vivid-pumpkin': ['#FF7920FF', '#5B2500FF'],\n 'vivid-forest': ['#92FF73FF', '#023A00FF'],\n 'vivid-canary': ['#FCE649FF', '#564A00FF'],\n 'vivid-fuchsia': ['#FF58ACFF', '#4F0230FF'],\n 'vivid-violet': ['#B650FFFF', '#26005AFF'],\n 'light-sky': ['#C5D5F9FF', '#000835'],\n 'light-crimson': ['#FFD7D7FF', '#560900FF'],\n 'light-pumpkin': ['#FFD9C4FF', '#5B2500FF'],\n 'light-forest': ['#C8FFC0FF', '#023A00FF'],\n 'light-canary': ['#FFFEB0FF', '#564A00FF'],\n 'light-fuchsia': ['#FCC5F9FF', '#4F0230FF'],\n 'light-violet': ['#E4C7FFFF', '#26005AFF']\n};\n\n@Directive({\n selector: '[dfWavesOfProgress]',\n exportAs: 'dfWavesOfProgress',\n host: {\n style: `\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center center;\n `,\n '[style.background-image]': 'backgroundImage()'\n }\n})\nexport class DfWavesOfProgressDirective {\n /**\n * The type of waves to display\n */\n readonly dfWavesOfProgress = input.required<'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp'>();\n /**\n * The color of the waves. It can be one of the predefined brand colors or a custom color.\n * @example\n * 'dark-sky', 'vivid-crimson', 'light-forest', ['#000835', '#3A8BFF']\n */\n readonly color = input<AcceptedColor | [string, string]>('dark-sky');\n\n readonly backgroundImage = computed(() => {\n const baseSvg = this.getWavesAsString(this.dfWavesOfProgress());\n let bgColor: string, lineColor: string;\n if (Array.isArray(this.color())) {\n [bgColor, lineColor] = this.color();\n } else {\n [bgColor, lineColor] = colorsMap[this.color() as AcceptedColor];\n }\n return `url(${this.prepareSvg(baseSvg, bgColor, lineColor)})`;\n });\n\n /**\n * Prepares the SVG string by replacing color variables and encoding it.\n * @param svgAsString - The SVG string to prepare.\n * @param bgColor - The background color.\n * @param lineColor - The line color.\n * @returns The prepared SVG string.\n */\n private prepareSvg(svgAsString: string, bgColor: string, lineColor: string): string {\n // console.debug(`prepareSvg: ${svgAsString}`);\n const baseSvg = encodeURIComponent(\n svgAsString\n .replace(/var\\(--df-waves-of-progress-bg-color\\)/g, bgColor)\n .replace(/var\\(--df-waves-of-progress-line-color\\)/g, lineColor)\n );\n return `'data:image/svg+xml;utf8,${baseSvg}'`;\n }\n\n private getWavesAsString(waves: 'circleDiagonal' | 'circleUp' | 'arrowRight' | 'arrowUp'): string {\n switch (waves) {\n case 'circleDiagonal':\n return circleDiagonal;\n case 'circleUp':\n return circleUp;\n case 'arrowRight':\n return arrowRight;\n case 'arrowUp':\n return arrowUp;\n default:\n return arrowRight;\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","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'df-amadeus-logo',\n template: `\n <svg [class]=\"svgClass()\" viewBox=\"0 0 113 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M107.272 6.62415C105.258 5.92656 104.367 5.46175 104.367 4.4161C104.367 3.75718 104.793 2.75021 106.807 2.75021C108.705 2.75021 110.72 3.60249 110.72 3.60249V0.696849C109.868 0.348052 108.357 0 106.652 0C103.746 0 100.958 1.54913 100.958 4.61021C100.958 7.67128 103.747 8.52282 105.646 9.14307C107.428 9.7239 108.629 10.3055 108.629 11.4671C108.629 12.4749 107.931 13.249 105.646 13.249C103.708 13.249 101.384 12.4749 101.384 12.4749V15.3798C101.384 15.3798 103.63 16 105.801 16C108.667 16 112.038 14.9923 112.038 11.2344C112.038 8.67751 109.946 7.55378 107.273 6.62415H107.272Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M34.2475 15.8059V0H29.8701L25.57 11.7773L21.2692 0H16.8917V15.8059H19.8747V3.87394L24.2135 15.8052H26.7316L31.2645 3.87394V15.8052H34.2475V15.8059Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M44.7062 0H38.9343V3.06033C41.6853 2.94432 42.4595 2.90564 43.6605 2.90564C45.5585 2.90564 46.6822 3.60249 46.6822 5.46249V6.66357H43.6605C38.5855 6.66357 37.0364 8.71693 37.0364 11.3898C37.0364 14.8376 39.5932 16 42.1501 16C44.7069 16 46.2568 14.7989 46.7603 14.4501V15.8059H50.0921V4.99693C50.0921 1.35502 48.1168 0 44.7069 0H44.7062ZM46.6822 12.4354C45.8299 12.7456 44.28 13.2877 42.8082 13.2877C41.4138 13.2877 40.2901 12.6682 40.2901 11.157C40.2901 9.8005 41.1424 9.10365 43.0016 9.02631L46.6822 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M73.8005 2.71154H81.7804V0H70.3906V15.8059H81.7804V13.0944H73.8005V9.25834H80.5793V6.58548H73.8005V2.71154Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M98.2073 15.8059V0H94.7209V12.048C93.8686 12.4354 92.6675 13.0557 90.9243 13.0557C88.7549 13.0557 88.0967 11.8546 88.0967 9.29776V0H84.6095V9.7239C84.6095 13.7919 85.9266 16 90.072 16C92.3968 16 93.5592 15.1477 94.7982 14.4501V15.8059H98.2073Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M59.8152 0H53.5398V15.8059H59.8152C65.123 15.8059 67.7958 13.3651 67.7958 7.74863C67.7958 2.8283 64.8902 0.000743702 59.8152 0.000743702V0ZM59.6597 13.0549H57.0255V2.75021H59.6597C62.2947 2.75021 64.2313 4.02863 64.2313 7.74789C64.2313 11.4671 62.9528 13.0549 59.6597 13.0549Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.67054 0H1.89867V3.06033C4.64888 2.94432 5.42382 2.90564 6.6249 2.90564C8.52282 2.90564 9.64656 3.60249 9.64656 5.46249V6.66357H6.6249C1.54987 6.66357 0 8.71693 0 11.3898C0 14.8376 2.55685 16 5.11369 16C7.67054 16 9.22041 14.7989 9.7239 14.4501V15.8059H13.0557V4.99693C13.0557 1.35577 11.0797 0 7.67054 0ZM9.64656 12.4354C8.79427 12.7456 7.2444 13.2877 5.77261 13.2877C4.37817 13.2877 3.25444 12.6682 3.25444 11.157C3.25444 9.8005 4.10672 9.10365 5.96598 9.02631L9.64656 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n </svg>\n <span class=\"visually-hidden\">Amadeus</span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DfAmadeusLogoComponent {\n /**\n * Class to apply to the SVG element. For example, you can use `df-logo-dim` to set proper dimensions inside footer and navbar.\n */\n readonly svgClass = input('');\n}\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// 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 { 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// Amadeus Logo\nexport { DfAmadeusLogoComponent } from './angular/amadeus-logo/amadeus-logo.component';\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":["noop","i1","i3.DfIfMediaDirective","i1.DfStepperDirective"],"mappings":"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"}