{"version":3,"sources":["node_modules/typescript-debounce-decorator/index.min.js","src/app/shared/components/filtering-search-component-base/filtering-search.component-base.ts","src/app/shared/components/filtering-search-component-base/filtering-search.component-base.html","node_modules/@ng-select/ng-select/fesm2022/ng-select-ng-select.mjs","node_modules/escape-string-regexp/index.js","node_modules/detect-it/dist/detect-it.esm.js","node_modules/@angular-slider/ngx-slider/fesm2022/angular-slider-ngx-slider.mjs"],"sourcesContent":["\"use strict\";\n\nfunction cancel(e) {\n e && e.options && clearTimeout(e.options.timer);\n}\nfunction getWrapper(o, n, i, e) {\n var a = {\n timer: void 0,\n lastArgs: []\n },\n t = function () {\n for (var e = this, t = [], r = 0; r < arguments.length; r++) t[r] = arguments[r];\n a.lastArgs = t, a.timer ? clearTimeout(a.timer) : n && i.apply(this, a.lastArgs), a.timer = setTimeout(function () {\n n || i.apply(e, a.lastArgs), a.timer = void 0;\n }, o);\n };\n return e && (t = t.bind(e)), t.options = a, t;\n}\nfunction defineProperty(t, r, e, o) {\n var n;\n Object.defineProperty(e, o, {\n configurable: !0,\n enumerable: !1,\n get: function () {\n return n;\n },\n set: function (e) {\n n = getWrapper(t, r, e, this);\n }\n });\n}\nfunction modifyDescriptor(e, t, r) {\n var o = r.value;\n return r.value = getWrapper(e, t, o), r;\n}\nfunction createDebounce(e, t) {\n for (var r = [], o = 2; o < arguments.length; o++) r[o - 2] = arguments[o];\n if (0 === r.length) throw new Error(\"function applied debounce decorator should be a method\");\n if (1 === r.length) throw new Error(\"method applied debounce decorator should have valid name\");\n var n = r[0],\n i = r[1],\n a = 3 === r.length && r[2] ? r[2] : Object.getOwnPropertyDescriptor(n, i);\n if (a) return modifyDescriptor(e, t, a);\n defineProperty(e, t, n, i);\n}\nfunction debounce() {\n for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];\n var r = 500,\n o = !1;\n if (e.length && (\"number\" == typeof e[0] || \"object\" == typeof e[0] && void 0 !== e[0].leading)) {\n \"number\" == typeof e[0] && (r = e[0]);\n var n = void 0;\n return \"object\" == typeof e[0] && void 0 !== e[0].leading && (n = e[0]), 1 < e.length && \"object\" == typeof e[1] && void 0 !== e[1].leading && (n = e[1]), n && (o = n.leading), function () {\n for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];\n return createDebounce.apply(void 0, [r, o].concat(e));\n };\n }\n return createDebounce.apply(void 0, [r, o].concat(e));\n}\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n}), exports.cancel = cancel, exports.debounce = debounce;","import { Component, Input, Output, EventEmitter, ViewChild, OnInit, AfterViewInit, ElementRef, OnDestroy, ChangeDetectionStrategy, inject } from '@angular/core'\nimport { DatePipe, AsyncPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common'\nimport { IconNamesEnum, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'\nimport { BackEndService } from '../../../services/backend.service'\nimport * as SearchTypes from './filtering-search-types'\nimport { SavedSearchService } from 'src/app/services/saved-search.service'\nimport { debounce } from 'typescript-debounce-decorator'\nimport { map, Observable, Subscription, take } from 'rxjs'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { Store } from '@ngrx/store'\nimport { openClose, optionGroupTrigger } from '../../animations/open-close-animations'\nimport { selectSearchState } from 'src/app/state'\nimport { selectUserState } from 'src/app/state/user.selectors'\nimport { NgSelectModule } from '@ng-select/ng-select'\nimport { DateRangeComponent } from '../date-range/date-range.component'\nimport { FormsModule } from '@angular/forms'\nimport escapeStringRegexp from 'escape-string-regexp'\nimport dayjs from 'dayjs'\nimport { Dictionary } from '@ngrx/entity'\nimport { NgxSliderModule } from '@angular-slider/ngx-slider'\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap'\n\nexport * from './filtering-search-types'\n\n@Component({\n selector: 'base-filtering-search',\n templateUrl: './filtering-search.component-base.html',\n styleUrls: ['./filtering-search.component-base.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [\n openClose,\n optionGroupTrigger\n ],\n imports: [\n NgxBootstrapIconsModule,\n FormsModule,\n DateRangeComponent,\n NgSelectModule,\n NgxSliderModule,\n AsyncPipe,\n DecimalPipe,\n DatePipe,\n NgTemplateOutlet,\n FormsModule,\n ]\n})\n\nexport class FilteringSearchComponentBase implements OnInit, AfterViewInit, OnDestroy {\n protected store = inject>(Store)\n protected backendService = inject(BackEndService)\n protected savedSearchService = inject(SavedSearchService)\n protected router = inject(Router)\n protected route = inject(ActivatedRoute)\n private datePipe = inject(DatePipe)\n private modalService = inject(NgbModal)\n private searchService = inject(BackEndService)\n\n @Input('options') set setSearchOptions(search: SearchTypes.SearchOptionGroup[]) {\n this.providedTopLevelSearchOptionGroups = search\n this.topLevelSearchOptionGroups = SearchTypes.initSearchOptionGroup(search)\n for (let groupOptions of this.topLevelSearchOptionGroups) {\n for (let option of groupOptions.options) {\n if (option.selected) {\n this.selectedOptions.push(option)\n }\n\n if (option.lookupOnPaste) {\n this.lookupOnPasteOption = option\n }\n }\n }\n }\n private initialLeftPosition = 12\n\n @Input('area') set setType(area: string) {\n this.area = area\n }\n\n @Input('search') set setSearchParameters(search: SearchTypes.NamedSearchParameters) {\n this.search = search\n }\n @Input('selectedoptions') set setSelectedOption(parameters: any) {\n this.loadSearch({ parameters }, true)\n }\n\n @Input() public requiredFilters: Dictionary = {}\n @Input('saveSearches') allowSearchesToBeSaved = true\n @Input('saveSearchesText') saveSearchesText = 'Save Filters'\n @Input('showFilter') showFilter = true\n @Output('currentSearch') searchOutput = new EventEmitter()\n\n @ViewChild('autocompleteoptions') autocompleteoptions: ElementRef = {} as ElementRef\n @ViewChild('input') input: ElementRef = {} as ElementRef\n @ViewChild('companyChooser') pasteChooser: any\n\n static DefaultFilterPlaceHolder = 'Type here to filter....'\n public iconNames = IconNamesEnum\n\n public area: string = ''\n\n public today = new Date()\n\n public providedTopLevelSearchOptionGroups: SearchTypes.SearchOptionGroup[] = []\n\n public topLevelSearchOptionGroups: SearchTypes.SearchOptionGroup[] = []\n\n public filterPlaceholder = FilteringSearchComponentBase.DefaultFilterPlaceHolder\n public selectedOptions: SearchTypes.SearchOption[] = []\n private lookupOnPasteOption : SearchTypes.SearchOption | undefined\n public selectedOptionActive = -1\n public autocompleteText = ''\n public searchRequest: any = null\n public leftPosition = this.initialLeftPosition\n public searchTimer: ReturnType | null = null\n\n public search: SearchTypes.NamedSearchParameters = {\n }\n\n public searchSummary: {\n total: number\n selected: number\n } = {\n total: 0,\n selected: 0\n }\n public searchResults = []\n\n // used to inject enumeration values into template\n public searchOptionType = SearchTypes.SearchOptionType\n\n public userQueryType: string = ''\n public searchNameToDelete: string = ''\n\n public pasteChooserLoading = true\n public pastedChooserHeader = ''\n public pastedChoices$: Observable = new Observable\n public pastedChoices: any[] = []\n\n public searchTypes = SearchTypes\n\n public paramsSubscription$: Subscription = new Subscription\n public routerState: any\n public userState$\n\n private lastAutocompleteText = ''\n\n constructor() {\n const currentNavigation = this.router.getCurrentNavigation()\n const previousNavigation = this.router.lastSuccessfulNavigation\n delete previousNavigation?.extras.state?.['articlesLoaded']\n this.routerState = currentNavigation?.extras.state ?? previousNavigation?.extras.state\n this.userState$ = this.store.select(selectUserState)\n }\n\n ngOnInit(): void {\n\n // the subscription is across all routes so this fires when we move from /xxxx/&q to /xxxxx/1&q\n this.paramsSubscription$ = this.route.queryParams.subscribe(params => {\n let parameters\n let articlesAlreadyLoaded = false\n if (this.routerState?.['articlesLoaded']) {\n // we are here becase we have come back from an article in mobile mode which means we have articles in the store\n this.store.select(selectSearchState).pipe(take(1)).subscribe(\n s => parameters = s.parameters\n )\n articlesAlreadyLoaded = true\n this.routerState = null\n } else if (this.routerState?.['parameters']) {\n parameters = this.routerState['parameters']\n this.routerState = null\n } else {\n parameters = Object.fromEntries(Object.entries(params).map(([key, value]) => {\n if (value.includes(':')) {\n let [id, title] = value.split(':')\n if (id === '0') {\n title = `contains \"${title}\"`\n }\n return [key, {\n type: 'multiautocomplete',\n value: [{\n id,\n title\n }]\n }]\n } else if (key === 'name' || key == 'content') {\n return [key, {\n type: 'stringinput',\n value\n }]\n } else if (key == 'docketid') {\n return [key, {\n type: 'searchnumbers',\n value\n }]\n } else if (key == 'docid') {\n return ['docketid', {\n type: 'searchnumbers',\n value\n }]\n } else {\n return [key, {\n type: 'checkboxes',\n value: value.split(',')\n }]\n }\n }))\n }\n if (Object.keys(parameters).length > 0) {\n this.loadSearch({ parameters }, true)\n } else {\n this.loadSearch(this.search)\n }\n if (!articlesAlreadyLoaded) {\n this.makeSearchRequest()\n }\n })\n }\n\n ngAfterViewInit() {\n const threshold = 0.2 // how much % of the element is in view\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.rootBounds !== null && (entry.boundingClientRect.left + entry.boundingClientRect.width) > entry.rootBounds.width) {\n this.leftPosition = this.initialLeftPosition - (entry.rootBounds.width - entry.boundingClientRect.left)\n } else {\n this.leftPosition = this.initialLeftPosition\n }\n }\n })\n },\n { threshold }\n )\n if (this.autocompleteoptions.nativeElement) {\n observer.observe(this.autocompleteoptions.nativeElement)\n }\n }\n\n ngOnDestroy() {\n this.paramsSubscription$.unsubscribe()\n this.resetSearch()\n }\n\n checkForVisibleIfPresent(option: SearchTypes.SearchOption): boolean {\n return ((option?.tableColumn?.visibleIfPresent ?? false) && this.searchResults.length > 0 && this.searchResults[0][option.id])\n }\n\n checkForVisibleIfOptionGroupFilterEngaged(option: SearchTypes.SearchOption, optionGroup: SearchTypes.SearchOptionGroup): boolean {\n return ((option?.tableColumn?.visibleIfOptionGroupFilterEngaged || false) && this.searchResults.length > 0 && optionGroup.options.some(o => o.selected))\n }\n\n makeSearchRequest(startAt: number = 1) {\n this.search = {\n ... this.search,\n area: this.area,\n window: {\n start: startAt,\n size: this.search?.window?.size ?? 20\n },\n parameters: {\n ...this.getSearchParameters(),\n ...this.requiredFilters\n }\n }\n this.searchOutput.emit(this.search)\n }\n\n loadContent($event: Event | KeyboardEvent | undefined = undefined) {\n if ($event && $event instanceof KeyboardEvent && $event.key.length > 1) {\n return\n }\n if (this.searchTimer) {\n clearTimeout(this.searchTimer)\n }\n this.searchTimer = setTimeout(() => {\n this.makeSearchRequest()\n }, 500)\n }\n\n createAutoCompleteOptions(autocompleteText: string, searchServiceParameter: SearchTypes.Dictionary): SearchTypes.Dictionary {\n let params = structuredClone(searchServiceParameter)\n for (let parameter of Object.values(params!['parameters'])) {\n (parameter as any).value = autocompleteText\n }\n return params\n }\n\n handlePaste(event: ClipboardEvent) {\n if (this.lookupOnPasteOption) {\n const paste = event.clipboardData?.getData(\"text/plain\") ?? ''\n const lines = paste.split('\\n').map(string => string.trim()).filter(str => str.length > 0)\n if (lines.length > 1) {\n event.preventDefault()\n this.input.nativeElement.blur()\n this.pasteChooserLoading = true\n this.pastedChooserHeader = \"Matching \" + this.lookupOnPasteOption.name\n this.pastedChoices = []\n\n const self = this\n this.modalService.open(this.pasteChooser, {\n backdropClass: 'diffuse-backdrop',\n keyboard: false,\n backdrop: 'static',\n scrollable: true,\n size: 'lg',\n centered: true,\n }).result.then(\n (result) => {\n let chosenOption: any\n this.topLevelSearchOptionGroups.forEach(optionGroup => {\n optionGroup.options.forEach(option => {\n if (option.id === 'creditorName') {\n chosenOption = option\n }\n })\n })\n if (chosenOption) {\n chosenOption.required = chosenOption.required ?? []\n for (const choice of this.pastedChoices) {\n if (choice.checked) {\n if (choice.match === 'contains') {\n chosenOption.required.push({\n id: choice.id,\n title: `Contains '${choice.id}'`\n })\n } else {\n chosenOption.required.push({\n id: -1,\n title: choice.id\n })\n }\n }\n }\n if (! self.selectedOptions.find( option => option.id === chosenOption.id)) {\n chosenOption.active = true\n chosenOption.selected = true\n chosenOption.tableColumn.visible = true\n self.selectedOptions.push(chosenOption)\n }\n self.makeSearchRequest()\n }\n },\n )\n\n this.pastedChoices$ = this.searchService.search({\n area: 'data/creditors2/autocomplete',\n parameters: {\n creditorNames: {\n name: \"creditorNames\",\n type: \"stringinput\",\n format: \"autocomplete\",\n returndata: \"brief\",\n value: lines\n }\n }\n }, false).pipe(map((result: any) => {\n this.pasteChooserLoading = false\n this.pastedChoices = []\n for (const choice of result.articles) {\n let match = 'contains'\n if (choice.matches.length === 2) {\n match = 'exact'\n }\n this.pastedChoices.push({\n match,\n checked: true,\n id: choice.id\n })\n }\n return result.articles\n }))\n }\n }\n }\n\n setupToShowAutoCompleteOptions(autocompleteText: string) {\n if (this.lastAutocompleteText === autocompleteText) {\n return\n }\n this.lastAutocompleteText = autocompleteText\n this.leftPosition = this.initialLeftPosition\n if (this.selectedOptionActive >= 0) {\n this.selectedOptions[this.selectedOptionActive].active = false\n this.selectedOptionActive = -1\n }\n this.topLevelSearchOptionGroups.forEach(optionGroup => {\n optionGroup.visible = optionGroup.options.reduce((acc, option) => {\n if (option.lastResort && !option.selected) {\n option.visible = true\n if (SearchTypes.isSearchStringOption(option)) {\n option.searchString = autocompleteText\n } else if (SearchTypes.isSearchNumbersOption(option)) {\n option.numberRange = autocompleteText\n } else if (SearchTypes.isSearchMultiAutoCompleteOption(option)) {\n option.items = []\n\n if (option.searchTimer) {\n clearTimeout(option.searchTimer)\n }\n option.searchTimer = setTimeout(() => {\n if (this.autocompleteText.length > 2) {\n if (option.searchServiceParameter !== undefined) {\n option.searching = true\n\n this.backendService.search(this.createAutoCompleteOptions(autocompleteText, option.searchServiceParameter)).subscribe((resp) => {\n if (resp.articles) {\n option.items = resp.articles.map((item: any) => {\n Object.defineProperties(item, {\n filterby: {\n value: '',\n writable: true,\n enumerable: true\n }\n })\n return item\n })\n option.searching = false\n }\n })\n }\n }\n }, 300)\n }\n } else {\n const regex = RegExp(escapeStringRegexp(autocompleteText), 'i')\n option.visible = regex.test(option.name)\n if (!option.visible && SearchTypes.isSearchCheckboxOption(option)) {\n option.visible = option.checkboxes.some(checkbox => regex.test(checkbox.value + ' ' + checkbox.name))\n }\n }\n return acc || option.visible\n }, false) as boolean\n })\n }\n\n dependenciesMet(depends: SearchTypes.Dictionary, overlap: boolean = true): boolean {\n let result = true\n if (depends) {\n for (const [key, requiredValues] of Object.entries(depends)) {\n const visibleOption = this.selectedOptions.find(element => element.id === key)\n if (visibleOption) {\n if (requiredValues.length > 0) {\n if (SearchTypes.isSearchCheckboxOption(visibleOption)) {\n const selectedValues = visibleOption.checkboxes.filter(c => c.checked).map(c => c.value)\n\n const intersection = requiredValues.filter(value => selectedValues.includes(value))\n if (overlap) {\n result = intersection.length > 0\n } else {\n result = intersection.length === selectedValues.length\n }\n }\n }\n } else {\n result = false\n }\n }\n }\n return result\n }\n\n checkboxDependenciesMet(option: SearchTypes.CheckboxOption, matchingString = ''): boolean {\n let result = this.dependenciesMet(option.depends!)\n if (!result) {\n option.checked = option.checkedDefault\n }\n if (result && matchingString !== '') {\n // escape regex\n result = RegExp(matchingString.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i').test(option.name)\n }\n return result\n }\n\n allDependenciesMet(option: SearchTypes.SearchOption | SearchTypes.SearchOptionGroup): boolean {\n let anyDependenciesMet = true\n if (option.depends) {\n anyDependenciesMet = this.dependenciesMet(option.depends!)\n }\n if (anyDependenciesMet && option.dependsMust!) {\n anyDependenciesMet = anyDependenciesMet && this.dependenciesMet(option.dependsMust!, false)\n }\n return anyDependenciesMet\n }\n allDependenciesMetForSearchOptionGroup(optionGroup: SearchTypes.SearchOptionGroup): boolean {\n const anyDependenciesMet = this.allDependenciesMet(optionGroup)\n if (!anyDependenciesMet) {\n // remove any visible options from this optionGroup\n let remainingOptions: SearchTypes.SearchOption[] = []\n this.selectedOptions.forEach(option => {\n if (optionGroup.options.find((opt) => opt.id === option.id)) {\n this.resetOption(option)\n } else {\n remainingOptions.push(option)\n }\n })\n this.selectedOptions = remainingOptions\n }\n return anyDependenciesMet\n }\n\n optionGroupHasSomeVisibleElements(optionGroup: SearchTypes.SearchOptionGroup): boolean {\n return optionGroup.options.some(option => !option.selected && this.allDependenciesMet(option))\n }\n\n updateSelectedOptionDependencies() {\n let remainingOptions: SearchTypes.SearchOption[] = []\n this.selectedOptions.forEach(option => {\n if (this.allDependenciesMet(option)) {\n remainingOptions.push(option)\n } else {\n this.resetOption(option)\n }\n })\n this.selectedOptions = remainingOptions\n }\n\n updateTopLevelDependencies() {\n\n }\n\n topLevelSearchOptionSelect(option: SearchTypes.SearchOption, checkbox: SearchTypes.CheckboxOption | null = null, autoCompleteOption: any = null, forceRefreshAllowed = true): void {\n option.selected = true\n option.visible = false\n option.active = true\n\n let forceRefresh = false\n\n if (this.selectedOptionActive >= 0) {\n this.selectedOptions[this.selectedOptionActive].active = false\n }\n\n this.selectedOptionActive = this.selectedOptions.push(option) - 1\n\n if (SearchTypes.isSearchStringOption(option)) {\n forceRefresh = option.searchString.trim().length > 0\n } else if (SearchTypes.isSearchNumbersOption(option)) {\n forceRefresh = option.numberRange.trim().length > 0\n } else if (SearchTypes.isSearchCheckboxOption(option)) {\n option.checkboxes?.forEach(box => {\n if (box.checkedDefault) {\n box.checked = checkbox === null\n } else {\n box.checked = false\n }\n })\n if (checkbox !== null) {\n checkbox.checked = true\n option.active = false\n }\n option.numberChecked = option.checkboxes.filter(c => c.checked).length\n forceRefresh = forceRefresh || (option.checkboxes.length > 1 && option.numberChecked === 1)\n } else if (SearchTypes.isSearchMultiAutoCompleteOption(option)) {\n if (autoCompleteOption !== null) {\n autoCompleteOption.filterby = ''\n option.required = [autoCompleteOption]\n forceRefresh = true\n }\n } else if (SearchTypes.isSearchShowSearchOptionGroup(option)) {\n option.active = false\n this.selectedOptionActive = -1\n this.input.nativeElement.focus()\n } else if (SearchTypes.isSwitchSearchOptionGroup(option)) {\n option.active = false\n this.selectedOptionActive = -1\n forceRefresh = true\n }\n\n option.tableColumn!.visible = true\n\n this.autocompleteText = ''\n\n if (forceRefresh && forceRefreshAllowed) {\n this.makeSearchRequest()\n }\n }\n\n toggleActiveOption(optionToToggle: number) {\n let option = this.selectedOptions[optionToToggle]\n if (option.type !== SearchTypes.SearchOptionType.switchoptiongroup) {\n option.active = !option.active\n if (option.active) {\n this.selectedOptionActive = optionToToggle\n } else {\n this.selectedOptionActive = -1\n }\n }\n }\n\n acceptText() {\n const nativeElement: any = this.input.nativeElement\n nativeElement.blur()\n let visibleOptions: SearchTypes.SearchOption[] = []\n this.topLevelSearchOptionGroups.forEach(optionGroup => {\n optionGroup.options.forEach(option => {\n if (option.visible) {\n visibleOptions.push(option)\n }\n })\n })\n if (visibleOptions.length == 1) {\n this.topLevelSearchOptionSelect(visibleOptions[0])\n }\n }\n resetOption(option: SearchTypes.SearchOption) {\n option.selected = false\n option.visible = true\n option.active = false\n if (SearchTypes.isSearchNumberRangeOption(option)) {\n option.minValue = option.options?.floor ?? 1\n option.maxValue = option.options.ceil ?? 100\n option.checkboxes?.forEach((checkbox => checkbox.checked = true))\n if (option.orPercent) {\n option.orPercentOptions = {\n minValue: 0,\n maxValue: 100,\n showPercent: false,\n }\n }\n } else if (SearchTypes.isSearchCheckboxOption(option)) {\n option.checkboxes?.forEach((checkbox => checkbox.checked = checkbox.checkedDefault))\n } else if (SearchTypes.isSearchDateRangeOption(option)) {\n option.minDate = new Date()\n option.maxDate = new Date()\n option.relativeRange = ''\n } else if (SearchTypes.isSearchStringOption(option)) {\n option.searchString = ''\n } else if (SearchTypes.isSearchMultiAutoCompleteOption(option)) {\n option.required = []\n // option.filterby = null\n option.items = []\n }\n }\n\n topLevelSearchOptionDeSelect(optionToUnselect: number): void {\n let option = this.selectedOptions[optionToUnselect]\n this.resetOption(option)\n this.selectedOptions.splice(optionToUnselect, 1)\n this.selectedOptionActive = -1\n\n if (this.selectedOptions.length === 0) {\n this.filterPlaceholder = FilteringSearchComponentBase.DefaultFilterPlaceHolder\n }\n this.updateSelectedOptionDependencies()\n this.loadContent()\n }\n\n getSearchParameters(): SearchTypes.Dictionary {\n let searchParameters: SearchTypes.Dictionary = {}\n this.topLevelSearchOptionGroups.forEach(optionGroup => {\n optionGroup.options.forEach(option => {\n if (option.selected) {\n switch (option.type) {\n case SearchTypes.SearchOptionType.checkboxes:\n if (SearchTypes.isSearchCheckboxOption(option)) {\n let checkedBoxes: string[] = option.checkboxes.reduce((acc, checkbox) => {\n if (checkbox.checked) {\n acc.push(checkbox.value!)\n if (checkbox.conditionalOptions) {\n searchParameters[checkbox.conditionalOptions.id] = {\n name: checkbox.conditionalOptions.name,\n type: 'checkboxes',\n value: checkbox.conditionalOptions.checkboxes.reduce((acc, checkbox) => {\n if (checkbox.checked) {\n acc.push(checkbox.value!)\n }\n return acc\n }, [] as string[])\n }\n }\n }\n return acc\n }, [] as string[])\n\n if (option.alwaysSend || (checkedBoxes.length !== option.checkboxes.length) || (checkedBoxes.length === 1 && option.checkboxes.length === 1)) {\n searchParameters[option.id] = {\n name: option.name,\n type: 'checkboxes',\n value: checkedBoxes\n }\n }\n\n option.tableColumn!.visible = checkedBoxes.length > 1\n }\n break\n case SearchTypes.SearchOptionType.daterange:\n if (SearchTypes.isSearchDateRangeOption(option)) {\n searchParameters[option.id] = {\n name: option.name,\n type: 'daterange',\n value: [\n dayjs(option.minDate).format('YYYY-MM-DD'),\n dayjs(option.maxDate).format('YYYY-MM-DD'),\n option.relativeRange\n ]\n }\n }\n break\n case SearchTypes.SearchOptionType.numberrange:\n if (SearchTypes.isSearchNumberRangeOption(option)) {\n let result: any = {\n name: option.name,\n type: 'numberrange',\n unit: option.prefix,\n value: [option.minValue, option.maxValue]\n }\n if (option.orPercent && option.orPercentOptions!.showPercent) {\n result.value = [option.orPercentOptions!.minValue, option.orPercentOptions!.maxValue] as any[]\n result.unit = '%'\n }\n if (option.checkboxes && option.checkboxes?.length > 0) {\n result.value = option.checkboxes.reduce((acc, checkbox) => {\n if (checkbox.checked) {\n acc.push(checkbox.value)\n }\n return acc\n }, result.value) as any[]\n }\n searchParameters[option.id] = result\n }\n break\n case SearchTypes.SearchOptionType.multiautocomplete:\n if (SearchTypes.isSearchMultiAutoCompleteOption(option)) {\n searchParameters[option.id] = {\n name: option.name,\n type: 'multiautocomplete',\n value: option.required?.map((value: any) => ({\n ...value,\n filterby: option.itemfilters?.[value.id] ?? '',\n })),\n filterby: option.filterby,\n }\n }\n break\n case SearchTypes.SearchOptionType.stringinput:\n const searchString = (option as SearchTypes.SearchStringOption).searchString\n if (searchString.length > 0) {\n searchParameters[option.id] = {\n name: option.name,\n type: 'stringinput',\n value: (option as SearchTypes.SearchStringOption).searchString,\n match: (option as SearchTypes.SearchStringOption).matchingOption,\n filter: (option as SearchTypes.SearchStringOption).checkboxes?.reduce((acc, checkbox) => {\n if (checkbox.checked) {\n acc.push(checkbox.value!)\n }\n return acc\n }, [] as string[]),\n }\n }\n break\n case SearchTypes.SearchOptionType.switchoptiongroup:\n searchParameters[option.id] = {\n name: option.name,\n type: 'switch',\n value: (option as SearchTypes.SwitchSearchOptionGroup).value,\n }\n break\n case SearchTypes.SearchOptionType.select:\n searchParameters[option.id] = {\n name: option.name,\n type: 'select',\n value: (option as SearchTypes.SearchSelectOption).selectedValue,\n }\n break\n case SearchTypes.SearchOptionType.searchnumbers:\n const numberRange = (option as SearchTypes.SearchNumbersOption).numberRange\n if (numberRange.length > 0) {\n searchParameters[option.id] = {\n name: option.name,\n type: 'searchnumbers',\n value: (option as SearchTypes.SearchNumbersOption).numberRange,\n }\n }\n break\n }\n }\n })\n })\n return searchParameters\n }\n\n resetSearch() {\n for (let i = 0; i < this.selectedOptions.length; i++) {\n let option = this.selectedOptions[i]\n this.resetOption(option)\n }\n this.selectedOptions = []\n this.selectedOptionActive = -1\n this.filterPlaceholder = FilteringSearchComponentBase.DefaultFilterPlaceHolder\n }\n\n clearSearch() {\n this.router.navigate([this.area], {\n onSameUrlNavigation: 'reload'\n })\n this.resetSearch()\n this.makeSearchRequest()\n }\n\n numberOfColumns(length: number | undefined): number {\n let result = 1\n if (length) {\n result = Math.ceil(length / 20)\n }\n return result\n }\n\n\n getFirstChecked(checkboxes: SearchTypes.CheckboxOption[]): string {\n return checkboxes.find(c => c.checked)?.name ?? ''\n }\n\n toggleCheckBox(checkbox: SearchTypes.CheckboxOption, option: SearchTypes.SearchCheckboxOption | SearchTypes.SearchNumberRangeOption | SearchTypes.SearchStringOption) {\n checkbox.checked = !checkbox.checked\n option.numberChecked = option.checkboxes!.filter(c => c.checked).length\n\n this.updateTopLevelDependencies()\n\n this.updateSelectedOptionDependencies()\n this.loadContent()\n }\n\n changeCheckboxes(checkbox: SearchTypes.CheckboxOption, option: SearchTypes.SearchCheckboxOption | SearchTypes.SearchStringOption) {\n if (checkbox.checked && option.numberChecked === 1) {\n option.checkboxes!.forEach(c => {\n c.checked = true\n })\n } else {\n option.checkboxes!.forEach(c => {\n c.checked = false\n })\n checkbox.checked = true\n }\n option.numberChecked = option.checkboxes!.filter(c => c.checked).length\n this.updateSelectedOptionDependencies()\n this.loadContent()\n }\n\n updateCheckboxeOnlyAll(checkbox: SearchTypes.CheckboxOption, option: SearchTypes.SearchCheckboxOption) {\n checkbox.onlyAll = 'Only'\n if (checkbox.checked && option.numberChecked === 1) {\n checkbox.onlyAll = 'All'\n }\n }\n\n setDateRange(option: SearchTypes.SearchDateRangeOption, dateRange: string) {\n option.relativeRange = dateRange\n option.maxDate = new Date()\n let date = new Date()\n switch (dateRange) {\n case '1d':\n date.setDate(date.getDate() - 1)\n option.minDate = date\n break\n case 'yd':\n date.setDate(date.getDate() - 1)\n option.minDate = date\n option.maxDate = date\n break\n case 'wd':\n let day\n do {\n date.setDate(date.getDate() - 1)\n day = date.getDay()\n } while (day === 0 || day === 6)\n option.minDate = date\n option.maxDate = date\n break\n case '1w':\n date.setDate(date.getDate() - 7)\n option.minDate = date\n break\n case '1m':\n date.setMonth(date.getMonth() - 1)\n option.minDate = date\n break\n case '1y':\n date.setFullYear(date.getFullYear() - 1)\n option.minDate = date\n break\n case 'ytd':\n date.setMonth(0)\n date.setDate(1)\n option.minDate = date\n break\n }\n this.loadContent()\n }\n\n friendlyRange(minDate: Date | string, maxDate: Date | string): string {\n if (typeof minDate === 'string') {\n minDate = new Date(minDate)\n maxDate = new Date(maxDate)\n }\n const daysDiff = Math.round(((maxDate as Date).getTime() - (minDate as Date).getTime()) / (3600 * 24 * 1000))\n if (daysDiff > 360) {\n return Math.round(daysDiff / 365) + 'y'\n } else if (daysDiff > 28) {\n return Math.round(daysDiff / 28) + 'm'\n } else if (daysDiff > 6) {\n return Math.round(daysDiff / 7) + 'w'\n } else {\n return daysDiff + 'd'\n }\n }\n\n loadContentAfterDateChange(d: Date, option: SearchTypes.SearchDateRangeOption, dateField: Date) {\n option.relativeRange = ''\n // dateField = d\n this.loadContent()\n }\n\n multiAutocompleteChange(event: Event, option: SearchTypes.SearchMultiAutoCompleteOption) {\n option.items = []\n this.loadContent()\n }\n\n @debounce(750)\n multiAutocompleteSearch(event: any, option: SearchTypes.SearchMultiAutoCompleteOption) {\n if (event && event.term) {\n const search = event.term\n if (search.length >= 2) {\n option.searching = true\n this.backendService.search(this.createAutoCompleteOptions(search, option.searchServiceParameter!)).subscribe((resp) => {\n if (resp.articles) {\n option.items = resp.articles.map((item: any) => {\n item.filterby = ''\n return item\n })\n }\n option.searching = false\n })\n } else {\n option.items = []\n }\n }\n }\n\n multiAutocompleteNgSelectSearchFn(term: string, item: any): boolean {\n return true\n }\n\n multiAutocompleteRemove(event: Event, option: SearchTypes.SearchMultiAutoCompleteOption) {\n this.loadContent()\n }\n\n multiAutocompleteClear(option: SearchTypes.SearchMultiAutoCompleteOption) {\n this.loadContent()\n }\n\n clickInContent(event: Event) {\n const element: HTMLElement = event.target as HTMLElement\n if (element.closest('.column-chooser') !== null) {\n event.stopPropagation()\n }\n\n if (element.classList.contains('column-sorter')) {\n const columnName = element.dataset!['sortid'] as string\n if (columnName === this.search!.order!.column) {\n if (this.search!.order!.direction === 'asc') {\n this.search!.order!.direction = 'desc'\n } else {\n this.search!.order!.direction = 'asc'\n }\n } else {\n this.search!.order!.column = columnName\n this.search!.order!.direction = 'asc'\n }\n this.search.window!.start = 1\n this.makeSearchRequest()\n }\n }\n\n loadSearch(search: SearchTypes.NamedSearchParameters, withReset = false) {\n\n if (withReset) {\n this.resetSearch()\n this.search.parameters = {}\n }\n\n\n for (let groupOptions of this.topLevelSearchOptionGroups) {\n for (let option of groupOptions.options) {\n let parameter = search.parameters?.[option.id]\n if (parameter !== undefined) {\n this.search = {\n ...this.search,\n parameters: {\n ...this.search.parameters,\n [option.id]: search.parameters![option.id]\n }\n }\n if (!option.selected) {\n this.topLevelSearchOptionSelect(option, null, null, false)\n option.active = false\n option.tableColumn!.visible = true\n switch (option.type) {\n case SearchTypes.SearchOptionType.checkboxes:\n if (SearchTypes.isSearchCheckboxOption(option)) {\n option.checkboxes.forEach((checkbox) => {\n checkbox.checked = parameter.value.indexOf(checkbox.value) >= 0\n\n if (checkbox.conditionalOptions && search.parameters?.[checkbox.conditionalOptions.id]) {\n checkbox.conditionalOptions.checkboxes.forEach((subcheckbox) => {\n subcheckbox.checked = search.parameters?.[checkbox.conditionalOptions!.id].value.indexOf(subcheckbox.value) >= 0\n return subcheckbox\n })\n checkbox.conditionalOptions.numberChecked = checkbox.conditionalOptions.checkboxes.filter(c => c.checked).length\n }\n\n return checkbox\n })\n option.numberChecked = option.checkboxes.filter(c => c.checked).length\n\n }\n break\n case SearchTypes.SearchOptionType.daterange:\n if (SearchTypes.isSearchDateRangeOption(option)) {\n const [minDate, maxDate] = parameter.value\n option.minDate = new Date(minDate)\n option.maxDate = new Date(maxDate)\n }\n break\n case SearchTypes.SearchOptionType.numberrange:\n if (SearchTypes.isSearchNumberRangeOption(option)) {\n [option.minValue, option.maxValue] = parameter.value\n }\n break\n case SearchTypes.SearchOptionType.searchnumbers:\n if (SearchTypes.isSearchNumbersOption(option)) {\n option.numberRange = parameter.value\n }\n break\n case SearchTypes.SearchOptionType.stringinput:\n if (SearchTypes.isSearchStringOption(option)) {\n option.searchString = parameter.value\n if (option.checkboxes && option.checkboxes.length > 0) {\n option.checkboxes.forEach((checkbox) => {\n // not sure about this\n // checkbox.checked = parameter.value.indexOf(checkbox.value) >= 0\n checkbox.checked = true\n return checkbox\n })\n option.numberChecked = option.checkboxes.filter(c => c.checked).length\n }\n }\n break\n case SearchTypes.SearchOptionType.select:\n if (SearchTypes.isSearchSelectOption(option)) {\n option.selectedValue = parameter.value\n }\n break\n case SearchTypes.SearchOptionType.multiautocomplete:\n if (SearchTypes.isSearchMultiAutoCompleteOption(option)) {\n option.required = parameter.value\n }\n break\n }\n }\n }\n }\n }\n this.selectedOptionActive = -1\n if (search.columns) {\n this.topLevelSearchOptionGroups.forEach(optionGroup => {\n optionGroup.options.forEach(option => {\n option.tableColumn = {\n ...option.tableColumn,\n visible: (search.columns!.indexOf(option.id) !== -1)\n }\n })\n })\n }\n\n if (search.order) {\n this.search.order = { ...search.order }\n }\n }\n\n protected createSearchName(): string {\n let searchNameParts: string[] = []\n for (const option of Object.values(this.search.parameters as any) as any[]) {\n let clause = option.name\n if (option.type == 'checkboxes') {\n const checkboxes = (this.selectedOptions.find(o => o.name === option.name) as SearchTypes.SearchCheckboxOption)?.checkboxes ?? []\n const valueNames = option.value.map((value: string) => checkboxes.find(c => c.value == value)?.name)\n clause = clause + ': ' + valueNames.join(',')\n } else if (option.type == 'numberrange') {\n clause = clause + ': ' + option.value[0] + ' - ' + option.value[1]\n } else if (option.type == 'daterange') {\n if (option.value[2] === '') {\n clause = clause + ': (' + this.friendlyRange(option.value[0], option.value[1]) + ') ' + this.datePipe.transform(option.value[0]) + ' - ' + this.datePipe.transform(option.value[1])\n } else {\n switch (option.value[2]) {\n case '1d':\n clause = clause + ': last day'\n break\n case '1w':\n clause = clause + ': last week'\n break\n case '1m':\n clause = clause + ': last month'\n break\n case '1y':\n clause = clause + ': last year'\n break\n }\n }\n } else if (option.type == 'stringinput') {\n clause = clause + ': ' + option.value\n }\n searchNameParts.push(clause)\n }\n return searchNameParts.join(', ') ?? ''\n }\n\n saveSearch() {\n let parameters: any\n this.store.select(selectSearchState).pipe(take(1)).subscribe(\n s => parameters = s\n )\n this.savedSearchService.saveSearch({\n area: this.area.split('/')[0],\n parameters: {\n ...this.search,\n ...parameters,\n },\n type: 'search',\n name: this.createSearchName(),\n })\n }\n\n optionHasCheckboxes(option: SearchTypes.SearchOption) {\n return SearchTypes.isSearchCheckboxOption(option) || (SearchTypes.isSearchStringOption(option) && option.checkboxes && option.checkboxes!.length > 0)\n }\n\n}","@if(showFilter) {\n
\n
\n
\n @for (option of selectedOptions; track option; let i = $index) {\n\n @if (! searchTypes.isSearchShowSearchOptionGroup(option) && option.selected) {\n
\n
\n @if ((option.type !== searchOptionType.switchoptiongroup && option.type !== searchOptionType.select && option.type !== searchOptionType.stringinput && option.type !== searchOptionType.searchnumbers) ||\n (searchTypes.isSearchStringOption(option) && option.matchingOption)) {\n \n \n \n }\n @if (option.type == searchOptionType.switchoptiongroup || option.type == searchOptionType.searchnumbers || option.type === searchOptionType.select) {\n \n \n \n }\n {{option.name}} \n @if (searchTypes.isSearchCheckboxOption(option)) {\n \n @if (option.numberChecked! > 1) {\n\n ({{option.numberChecked}} of {{option.checkboxes.length}})\n\n }\n @if (option.numberChecked === 1) {\n\n \n\n }\n \n }\n @if (searchTypes.isSearchNumberRangeOption(option)) {\n \n @if (option.orPercent && option.orPercentOptions!.showPercent) {\n\n {{option.orPercentOptions!.minValue | number}} — {{option.orPercentOptions!.maxValue | number }}%\n\n } @else {\n\n {{option.prefix}}{{option.minValue | number}}{{option.suffix}} — {{option.prefix}}{{option.maxValue | number }}{{option.suffix}}\n\n }\n @if (option.checkboxes?.length && option.numberChecked! > 0) {\n\n + …\n\n }\n \n }\n @if (searchTypes.isSearchDateRangeOption(option)) {\n \n {{friendlyRange(option.minDate, option.maxDate)}} \n @if (option.relativeRange === '') {\n\n {{option.minDate| date: 'mediumDate' }} - {{option.maxDate| date: 'mediumDate' }}\n\n } @else {\n\n \n @switch (option.relativeRange) {\n @case ('1d') {\n Last day\n }\n @case ('1w') {\n Last week\n }\n @case ('1m') {\n Last month\n }\n @case ('1y') {\n Last year\n }\n\n @case ('ytd') {\n Year To Date\n }\n }\n \n\n }\n \n }\n @if (searchTypes.isSearchStringOption(option)) {\n \n \n \n }\n @if (searchTypes.isSearchNumbersOption(option)) {\n \n \n \n }\n @if (searchTypes.isSearchSelectOption(option)) {\n \n \n \n }\n @if (searchTypes.isSearchMultiAutoCompleteOption(option)) {\n \n @if (option.required.length > 1) {\n\n {{option.required.length}} parties\n\n }\n @if (option.required.length === 1) {\n\n \n @if (option.required[0].filterby) {\n\n ({{option.required[0].filterby}})\n\n }\n\n }\n \n }\n \n
\n @if (option.active && option.type !== searchOptionType.searchnumbers && option.type !== searchOptionType.select) {\n
\n
\n @if (searchTypes.isSearchCheckboxOption(option) || searchTypes.isSearchStringOption(option)) {\n \n }\n @if (option.type == searchOptionType.stringinput && searchTypes.isSearchStringOption(option) && option.matchingOptionTypes) {\n
    \n @if (option.matchingOptionTypes.exactPhrase) {\n
  • \n \n \n
  • \n }\n @if (option.matchingOptionTypes.allWords) {\n
  • \n \n \n
  • \n }\n @if (option.matchingOptionTypes.someWords) {\n
  • \n \n \n
  • \n }\n @if (option.matchingOptionTypes.booleanMode) {\n
  • \n \n \n
  • \n }\n
\n }\n @if (searchTypes.isSearchDateRangeOption(option)) {\n
\n
    \n
  • \n \n 1d Past Day\n \n
  • \n
  • \n \n wd Last Week Day\n \n
  • \n
  • \n \n 1w Past Week\n \n
  • \n
  • \n \n 1m Past Month\n \n
  • \n
  • \n \n 1y Past Year\n \n
  • \n
  • \n \n ytd Year To Date\n \n
  • \n
\n
\n
\n \n
\n
\n
\n }\n @if (searchTypes.isSearchMultiAutoCompleteOption(option)) {\n
\n \n \n \n\n \n @if (option.filter) {\n \n }\n ×\n \n \n \n \n \n
\n }\n @if (searchTypes.isSearchNumberRangeOption(option)) {\n
\n @if (option.orPercent) {\n
\n
\n {{option.prefix}} \n
\n
\n
\n \n
\n
\n
\n  %\n
\n
\n }\n @if (option.orPercent && option.orPercentOptions!.showPercent) {\n\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n\n } @else {\n\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n\n }\n @if (option.checkboxes?.length) {\n
\n
\n @for (checkbox of option.checkboxes; track checkbox; let i = $index) {\n
\n \n \n
\n }\n
\n
\n }\n
\n }\n
\n
\n }\n
\n }\n\n }\n
\n \n
\n @for (optionGroup of topLevelSearchOptionGroups; track optionGroup) {\n\n @if (optionGroup.visible && allDependenciesMetForSearchOptionGroup(optionGroup) && optionGroupHasSomeVisibleElements(optionGroup)) {\n
\n
\n Filter by {{optionGroup.groupName}}\n
\n
    \n @for (option of optionGroup.options; track option) {\n\n @if (option.visible && !option.selected && allDependenciesMet(option)) {\n
  • \n \n {{option.name}}\n @if (searchTypes.isSearchStringOption(option) && option.searchString) {\n  contains {{option.searchString}}\n }\n @if (searchTypes.isSearchNumbersOption(option) && option.numberRange) {\n  {{option.numberRange}}\n }\n @if (searchTypes.isSearchMultiAutoCompleteOption(option)) {\n
    \n @if (option.searching) {\n
    \n }\n @if (option.items.length) {\n
      \n @for (item of option.items; track item) {\n\n
    • \n
      \n \n
      \n
    • \n\n }\n
    \n }\n
    \n }\n @if (searchTypes.isSearchCheckboxOption(option) && autocompleteText.length) {\n
      \n @for (checkbox of option.checkboxes; track checkbox) {\n\n @if (checkboxDependenciesMet(checkbox, autocompleteText)) {\n
    • \n
      \n {{checkbox.name}}\n
      \n
    • \n }\n\n }\n
    \n }\n
  • \n }\n\n }\n
\n
\n }\n\n }\n
\n
\n
\n
\n @if ((userState$ | async)?.user?.ipuser === false) {\n
\n @if (allowSearchesToBeSaved && selectedOptions.length > 0) {\n
\n
\n \n {{saveSearchesText}}\n \n
\n
\n }\n
\n }\n @if (selectedOptions.length > 0) {\n \n }\n
\n
\n}\n\n\n @if (option.checkboxes?.length) {\n
    \n @for (checkbox of option.checkboxes; track checkbox) {\n\n @if (checkboxDependenciesMet(checkbox)) {\n
  • \n \n
    \n \n {{checkbox.name}}\n Toggle\n \n \n @if (checkbox.checked && option.numberChecked === 1) {\n\n All\n\n } @else {\n Only\n }\n \n Toggle\n
    \n
  • \n @if (checkbox.checked && checkbox.conditionalOptions) {\n
  • \n \n
  • \n }\n }\n\n }\n
\n }\n\n
\n\n\n
\n

{{pastedChooserHeader}}

\n \n
\n
\n @if (pasteChooserLoading) {\n
\n
\n
\n
\n }\n @if (pastedChoices$ | async; as choices) {\n @for (choice of choices; track choice.id; ; let i = $index) {\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n }\n }\n\n
\n
\n \n
\n
","import * as i0 from '@angular/core';\nimport { Directive, Input, Injectable, EventEmitter, booleanAttribute, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Output, ViewChild, InjectionToken, numberAttribute, forwardRef, TemplateRef, Attribute, HostBinding, ContentChild, ContentChildren, HostListener, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';\nimport { takeUntil, auditTime, startWith, tap, debounceTime, filter, map } from 'rxjs/operators';\nimport { DOCUMENT, NgTemplateOutlet, NgClass } from '@angular/common';\nconst _c0 = [\"content\"];\nconst _c1 = [\"scroll\"];\nconst _c2 = [\"padding\"];\nconst _c3 = [\"*\"];\nconst _c4 = a0 => ({\n searchTerm: a0\n});\nfunction NgDropdownPanelComponent_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵelementContainer(1, 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r0.filterValue));\n }\n}\nfunction NgDropdownPanelComponent_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵelementContainer(1, 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.footerTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r0.filterValue));\n }\n}\nconst _c5 = [\"searchInput\"];\nconst _c6 = [\"clearButton\"];\nconst _c7 = (a0, a1, a2) => ({\n item: a0,\n clear: a1,\n label: a2\n});\nconst _c8 = (a0, a1) => ({\n items: a0,\n clear: a1\n});\nconst _c9 = (a0, a1, a2, a3) => ({\n item: a0,\n item$: a1,\n index: a2,\n searchTerm: a3\n});\nfunction NgSelectComponent_Conditional_2_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 19);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.placeholder);\n }\n}\nfunction NgSelectComponent_Conditional_2_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_2_ng_template_0_Template, 2, 1, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_2_ng_template_2_Template, 0, 0, \"ng-template\", 18);\n }\n if (rf & 2) {\n const defaultPlaceholderTemplate_r3 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.placeholderTemplate || defaultPlaceholderTemplate_r3);\n }\n}\nfunction NgSelectComponent_Conditional_3_For_1_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 22);\n i0.ɵɵlistener(\"click\", function NgSelectComponent_Conditional_3_For_1_ng_template_1_Template_span_click_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const item_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.unselect(item_r5));\n });\n i0.ɵɵtext(1, \"\\xD7\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(2, \"span\", 23);\n }\n if (rf & 2) {\n const item_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngItemLabel\", item_r5.label)(\"escape\", ctx_r1.escapeHTML);\n }\n}\nfunction NgSelectComponent_Conditional_3_For_1_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_3_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 21);\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_3_For_1_ng_template_1_Template, 3, 2, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_3_For_1_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r5 = ctx.$implicit;\n const defaultLabelTemplate_r6 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-value-disabled\", item_r5.disabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.labelTemplate || defaultLabelTemplate_r6)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(4, _c7, item_r5.value, ctx_r1.clearItem, item_r5.label));\n }\n}\nfunction NgSelectComponent_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgSelectComponent_Conditional_3_For_1_Template, 4, 8, \"div\", 20, i0.ɵɵcomponentInstance().trackByOption, true);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵrepeater(ctx_r1.selectedItems);\n }\n}\nfunction NgSelectComponent_Conditional_4_ng_template_0_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_4_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.multiLabelTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c8, ctx_r1.selectedValues, ctx_r1.clearItem));\n }\n}\nfunction NgSelectComponent_Conditional_8_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 24);\n }\n}\nfunction NgSelectComponent_Conditional_8_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_8_ng_template_0_Template, 1, 0, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_8_ng_template_2_Template, 0, 0, \"ng-template\", 18);\n }\n if (rf & 2) {\n const defaultLoadingSpinnerTemplate_r8 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.loadingSpinnerTemplate || defaultLoadingSpinnerTemplate_r8);\n }\n}\nfunction NgSelectComponent_Conditional_9_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 18);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.clearButtonTemplate);\n }\n}\nfunction NgSelectComponent_Conditional_9_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 25, 4)(2, \"span\", 26);\n i0.ɵɵtext(3, \"\\xD7\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵpropertyInterpolate(\"title\", ctx_r1.clearAllText);\n }\n}\nfunction NgSelectComponent_Conditional_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_9_Conditional_0_Template, 1, 1, \"ng-container\", 18)(1, NgSelectComponent_Conditional_9_Conditional_1_Template, 4, 1, \"span\", 25);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵconditional(ctx_r1.clearButtonTemplate ? 0 : 1);\n }\n}\nfunction NgSelectComponent_Conditional_12_For_3_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 31);\n }\n if (rf & 2) {\n const item_r11 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngItemLabel\", item_r11.label)(\"escape\", ctx_r1.escapeHTML);\n }\n}\nfunction NgSelectComponent_Conditional_12_For_3_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 30);\n i0.ɵɵlistener(\"click\", function NgSelectComponent_Conditional_12_For_3_Template_div_click_0_listener() {\n const item_r11 = i0.ɵɵrestoreView(_r10).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.toggleItem(item_r11));\n })(\"mouseover\", function NgSelectComponent_Conditional_12_For_3_Template_div_mouseover_0_listener() {\n const item_r11 = i0.ɵɵrestoreView(_r10).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onItemHover(item_r11));\n });\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_12_For_3_ng_template_1_Template, 1, 2, \"ng-template\", null, 5, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_12_For_3_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r11 = ctx.$implicit;\n const defaultOptionTemplate_r12 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-option-disabled\", item_r11.disabled)(\"ng-option-selected\", item_r11.selected)(\"ng-optgroup\", item_r11.children)(\"ng-option\", !item_r11.children)(\"ng-option-child\", !!item_r11.parent)(\"ng-option-marked\", item_r11 === ctx_r1.itemsList.markedItem);\n i0.ɵɵattribute(\"role\", item_r11.children ? \"group\" : \"option\")(\"aria-selected\", item_r11.selected)(\"id\", item_r11 == null ? null : item_r11.htmlId);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", item_r11.children ? ctx_r1.optgroupTemplate || defaultOptionTemplate_r12 : ctx_r1.optionTemplate || defaultOptionTemplate_r12)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction4(17, _c9, item_r11.value, item_r11, item_r11.index, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_4_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\")(1, \"span\", 33);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r1.addTagText);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"\\\"\", ctx_r1.searchTerm, \"\\\"\");\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_4_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 32);\n i0.ɵɵlistener(\"mouseover\", function NgSelectComponent_Conditional_12_Conditional_4_Template_div_mouseover_0_listener() {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.itemsList.unmarkItem());\n })(\"click\", function NgSelectComponent_Conditional_12_Conditional_4_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.selectTag());\n });\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_12_Conditional_4_ng_template_1_Template, 4, 2, \"ng-template\", null, 6, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_12_Conditional_4_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const defaultTagTemplate_r14 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-option-marked\", !ctx_r1.itemsList.markedItem);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.tagTemplate || defaultTagTemplate_r14)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(4, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_5_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.notFoundText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_5_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_5_ng_template_0_Template, 2, 1, \"ng-template\", null, 7, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_5_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const defaultNotFoundTemplate_r15 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.notFoundTemplate || defaultNotFoundTemplate_r15)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_6_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.typeToSearchText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_6_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_6_ng_template_0_Template, 2, 1, \"ng-template\", null, 8, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_6_ng_template_2_Template, 0, 0, \"ng-template\", 18);\n }\n if (rf & 2) {\n const defaultTypeToSearchTemplate_r16 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.typeToSearchTemplate || defaultTypeToSearchTemplate_r16);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_7_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.loadingText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_7_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_7_ng_template_0_Template, 2, 1, \"ng-template\", null, 9, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_7_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const defaultLoadingTextTemplate_r17 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.loadingTextTemplate || defaultLoadingTextTemplate_r17)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"ng-dropdown-panel\", 27);\n i0.ɵɵlistener(\"update\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_update_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.viewPortItems = $event);\n })(\"scroll\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_scroll_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.scroll.emit($event));\n })(\"scrollToEnd\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_scrollToEnd_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.scrollToEnd.emit($event));\n })(\"outsideClick\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_outsideClick_0_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.close());\n });\n i0.ɵɵelementContainerStart(1);\n i0.ɵɵrepeaterCreate(2, NgSelectComponent_Conditional_12_For_3_Template, 4, 22, \"div\", 28, i0.ɵɵcomponentInstance().trackByOption, true);\n i0.ɵɵtemplate(4, NgSelectComponent_Conditional_12_Conditional_4_Template, 4, 6, \"div\", 29);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(5, NgSelectComponent_Conditional_12_Conditional_5_Template, 3, 4)(6, NgSelectComponent_Conditional_12_Conditional_6_Template, 3, 1)(7, NgSelectComponent_Conditional_12_Conditional_7_Template, 3, 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"ng-select-multiple\", ctx_r1.multiple);\n i0.ɵɵproperty(\"virtualScroll\", ctx_r1.virtualScroll)(\"bufferAmount\", ctx_r1.bufferAmount)(\"appendTo\", ctx_r1.appendTo)(\"position\", ctx_r1.dropdownPosition)(\"headerTemplate\", ctx_r1.headerTemplate)(\"footerTemplate\", ctx_r1.footerTemplate)(\"filterValue\", ctx_r1.searchTerm)(\"items\", ctx_r1.itemsList.filteredItems)(\"markedItem\", ctx_r1.itemsList.markedItem)(\"ngClass\", ctx_r1.appendTo ? ctx_r1.ngClass ? ctx_r1.ngClass : ctx_r1.classes : null)(\"id\", ctx_r1.dropdownId);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabelDropdown);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx_r1.viewPortItems);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx_r1.showAddTag ? 4 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.showNoItemsFound() ? 5 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.showTypeToSearch() ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.loading && ctx_r1.itemsList.filteredItems.length === 0 ? 7 : -1);\n }\n}\nconst unescapedHTMLExp = /[&<>\"']/g;\nconst hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);\nconst htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nfunction escapeHTML(value) {\n return value && hasUnescapedHTMLExp.test(value) ? value.replace(unescapedHTMLExp, chr => htmlEscapes[chr]) : value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isObject(value) {\n return typeof value === 'object' && isDefined(value);\n}\nfunction isPromise(value) {\n return value instanceof Promise;\n}\nfunction isFunction(value) {\n return value instanceof Function;\n}\nlet NgItemLabelDirective = /*#__PURE__*/(() => {\n class NgItemLabelDirective {\n constructor(element) {\n this.element = element;\n this.escape = true;\n }\n ngOnChanges(changes) {\n this.element.nativeElement.innerHTML = this.escape ? escapeHTML(this.ngItemLabel) : this.ngItemLabel;\n }\n static {\n this.ɵfac = function NgItemLabelDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgItemLabelDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgItemLabelDirective,\n selectors: [[\"\", \"ngItemLabel\", \"\"]],\n inputs: {\n ngItemLabel: \"ngItemLabel\",\n escape: \"escape\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgItemLabelDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgOptionTemplateDirective = /*#__PURE__*/(() => {\n class NgOptionTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgOptionTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptionTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgOptionTemplateDirective,\n selectors: [[\"\", \"ng-option-tmp\", \"\"]]\n });\n }\n }\n return NgOptionTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgOptgroupTemplateDirective = /*#__PURE__*/(() => {\n class NgOptgroupTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgOptgroupTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptgroupTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgOptgroupTemplateDirective,\n selectors: [[\"\", \"ng-optgroup-tmp\", \"\"]]\n });\n }\n }\n return NgOptgroupTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgLabelTemplateDirective = /*#__PURE__*/(() => {\n class NgLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLabelTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLabelTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLabelTemplateDirective,\n selectors: [[\"\", \"ng-label-tmp\", \"\"]]\n });\n }\n }\n return NgLabelTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgMultiLabelTemplateDirective = /*#__PURE__*/(() => {\n class NgMultiLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgMultiLabelTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgMultiLabelTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgMultiLabelTemplateDirective,\n selectors: [[\"\", \"ng-multi-label-tmp\", \"\"]]\n });\n }\n }\n return NgMultiLabelTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgHeaderTemplateDirective = /*#__PURE__*/(() => {\n class NgHeaderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgHeaderTemplateDirective,\n selectors: [[\"\", \"ng-header-tmp\", \"\"]]\n });\n }\n }\n return NgHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgFooterTemplateDirective = /*#__PURE__*/(() => {\n class NgFooterTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgFooterTemplateDirective,\n selectors: [[\"\", \"ng-footer-tmp\", \"\"]]\n });\n }\n }\n return NgFooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgNotFoundTemplateDirective = /*#__PURE__*/(() => {\n class NgNotFoundTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgNotFoundTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgNotFoundTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgNotFoundTemplateDirective,\n selectors: [[\"\", \"ng-notfound-tmp\", \"\"]]\n });\n }\n }\n return NgNotFoundTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgPlaceholderTemplateDirective = /*#__PURE__*/(() => {\n class NgPlaceholderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgPlaceholderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgPlaceholderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgPlaceholderTemplateDirective,\n selectors: [[\"\", \"ng-placeholder-tmp\", \"\"]]\n });\n }\n }\n return NgPlaceholderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgTypeToSearchTemplateDirective = /*#__PURE__*/(() => {\n class NgTypeToSearchTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgTypeToSearchTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgTypeToSearchTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgTypeToSearchTemplateDirective,\n selectors: [[\"\", \"ng-typetosearch-tmp\", \"\"]]\n });\n }\n }\n return NgTypeToSearchTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgLoadingTextTemplateDirective = /*#__PURE__*/(() => {\n class NgLoadingTextTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLoadingTextTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLoadingTextTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLoadingTextTemplateDirective,\n selectors: [[\"\", \"ng-loadingtext-tmp\", \"\"]]\n });\n }\n }\n return NgLoadingTextTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgTagTemplateDirective = /*#__PURE__*/(() => {\n class NgTagTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgTagTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgTagTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgTagTemplateDirective,\n selectors: [[\"\", \"ng-tag-tmp\", \"\"]]\n });\n }\n }\n return NgTagTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgLoadingSpinnerTemplateDirective = /*#__PURE__*/(() => {\n class NgLoadingSpinnerTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLoadingSpinnerTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLoadingSpinnerTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLoadingSpinnerTemplateDirective,\n selectors: [[\"\", \"ng-loadingspinner-tmp\", \"\"]]\n });\n }\n }\n return NgLoadingSpinnerTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n// eslint-disable-next-line @angular-eslint/directive-selector\nlet NgClearButtonTemplateDirective = /*#__PURE__*/(() => {\n class NgClearButtonTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgClearButtonTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgClearButtonTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgClearButtonTemplateDirective,\n selectors: [[\"\", \"ng-clearbutton-tmp\", \"\"]]\n });\n }\n }\n return NgClearButtonTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction newId() {\n // First character is an 'a', it's good practice to tag id to begin with a letter\n return 'axxxxxxxxxxx'.replace(/[x]/g, () => {\n // eslint-disable-next-line no-bitwise\n const val = Math.random() * 16 | 0;\n return val.toString(16);\n });\n}\nconst diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\nfunction stripSpecialChars(text) {\n const match = a => diacritics[a] || a;\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\nclass ItemsList {\n constructor(_ngSelect, _selectionModel) {\n this._ngSelect = _ngSelect;\n this._selectionModel = _selectionModel;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n }\n get items() {\n return this._items;\n }\n get filteredItems() {\n return this._filteredItems;\n }\n get markedIndex() {\n return this._markedIndex;\n }\n get selectedItems() {\n return this._selectionModel.value;\n }\n get markedItem() {\n return this._filteredItems[this._markedIndex];\n }\n get noItemsToSelect() {\n return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;\n }\n get maxItemsSelected() {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;\n }\n get lastSelectedItem() {\n let i = this.selectedItems.length - 1;\n for (; i >= 0; i--) {\n const item = this.selectedItems[i];\n if (!item.disabled) {\n return item;\n }\n }\n return null;\n }\n setItems(items) {\n this._items = items.map((item, index) => this.mapItem(item, index));\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n } else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = [...this._items];\n }\n select(item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n const multiple = this._ngSelect.multiple;\n if (!multiple) {\n this.clearSelected();\n }\n this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);\n if (this._ngSelect.hideSelected) {\n this._hideSelected(item);\n }\n }\n unselect(item) {\n if (!item.selected) {\n return;\n }\n this._selectionModel.unselect(item, this._ngSelect.multiple);\n if (this._ngSelect.hideSelected && isDefined(item.index) && this._ngSelect.multiple) {\n this._showSelected(item);\n }\n }\n findItem(value) {\n let findBy;\n if (this._ngSelect.compareWith) {\n findBy = item => this._ngSelect.compareWith(item.value, value);\n } else if (this._ngSelect.bindValue) {\n findBy = item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;\n } else {\n findBy = item => item.value === value || !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel);\n }\n return this._items.find(item => findBy(item));\n }\n addItem(item) {\n const option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n }\n clearSelected(keepDisabled = false) {\n this._selectionModel.clear(keepDisabled);\n this._items.forEach(item => {\n item.selected = keepDisabled && item.selected && item.disabled;\n item.marked = false;\n });\n if (this._ngSelect.hideSelected) {\n this.resetFilteredItems();\n }\n }\n findByLabel(term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find(item => {\n const label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n });\n }\n filter(term) {\n if (!term) {\n this.resetFilteredItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n const match = this._ngSelect.searchFn || this._defaultSearchFn;\n const hideSelected = this._ngSelect.hideSelected;\n for (const key of Array.from(this._groups.keys())) {\n const matchedItems = [];\n for (const item of this._groups.get(key)) {\n if (hideSelected && (item.parent && item.parent.selected || item.selected)) {\n continue;\n }\n const searchItem = this._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n if (matchedItems.length > 0) {\n const [last] = matchedItems.slice(-1);\n if (last.parent) {\n const head = this._items.find(x => x === last.parent);\n this._filteredItems.push(head);\n }\n this._filteredItems.push(...matchedItems);\n }\n }\n }\n resetFilteredItems() {\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {\n this._filteredItems = this._items.filter(x => !x.selected);\n } else {\n this._filteredItems = this._items;\n }\n }\n unmarkItem() {\n this._markedIndex = -1;\n }\n markNextItem() {\n this._stepToItem(+1);\n }\n markPreviousItem() {\n this._stepToItem(-1);\n }\n markItem(item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n }\n markSelectedOrDefault(markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n const lastMarkedIndex = this._getLastMarkedIndex();\n if (lastMarkedIndex > -1) {\n this._markedIndex = lastMarkedIndex;\n } else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex(x => !x.disabled) : -1;\n }\n }\n resolveNested(option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n } else {\n const keys = key.split('.');\n let value = option;\n for (let i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n }\n mapItem(item, index) {\n const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);\n const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index,\n label: isDefined(label) ? label.toString() : '',\n value,\n disabled: item.disabled,\n htmlId: `${this._ngSelect.dropdownId}-${index}`\n };\n }\n mapSelectedItems() {\n const multiple = this._ngSelect.multiple;\n for (const selected of this.selectedItems) {\n const value = this._ngSelect.bindValue ? this.resolveNested(selected.value, this._ngSelect.bindValue) : selected.value;\n const item = isDefined(value) ? this.findItem(value) : null;\n this._selectionModel.unselect(selected, multiple);\n this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);\n }\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter(x => this.selectedItems.indexOf(x) === -1);\n }\n }\n _showSelected(item) {\n this._filteredItems.push(item);\n if (item.parent) {\n const parent = item.parent;\n const parentExists = this._filteredItems.find(x => x === parent);\n if (!parentExists) {\n this._filteredItems.push(parent);\n }\n } else if (item.children) {\n for (const child of item.children) {\n child.selected = false;\n this._filteredItems.push(child);\n }\n }\n this._filteredItems = [...this._filteredItems.sort((a, b) => a.index - b.index)];\n }\n _hideSelected(item) {\n this._filteredItems = this._filteredItems.filter(x => x !== item);\n if (item.parent) {\n const children = item.parent.children;\n if (children.every(x => x.selected)) {\n this._filteredItems = this._filteredItems.filter(x => x !== item.parent);\n }\n } else if (item.children) {\n this._filteredItems = this.filteredItems.filter(x => x.parent !== item);\n }\n }\n _defaultSearchFn(search, opt) {\n const label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n }\n _getNextItemIndex(steps) {\n if (steps > 0) {\n return this._markedIndex >= this._filteredItems.length - 1 ? 0 : this._markedIndex + 1;\n }\n return this._markedIndex <= 0 ? this._filteredItems.length - 1 : this._markedIndex - 1;\n }\n _stepToItem(steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every(x => x.disabled)) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n }\n _getLastMarkedIndex() {\n if (this._ngSelect.hideSelected) {\n return -1;\n }\n if (this._markedIndex > -1 && this.markedItem === undefined) {\n return -1;\n }\n const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && selectedIndex < 0) {\n return -1;\n }\n return Math.max(this.markedIndex, selectedIndex);\n }\n _groupBy(items, prop) {\n const groups = new Map();\n if (items.length === 0) {\n return groups;\n }\n // Check if items are already grouped by given key.\n if (Array.isArray(items[0].value[prop])) {\n for (const item of items) {\n const children = (item.value[prop] || []).map((x, index) => this.mapItem(x, index));\n groups.set(item, children);\n }\n return groups;\n }\n const isFnKey = isFunction(this._ngSelect.groupBy);\n const keyFn = item => {\n const key = isFnKey ? prop(item.value) : item.value[prop];\n return isDefined(key) ? key : undefined;\n };\n // Group items by key.\n for (const item of items) {\n const key = keyFn(item);\n const group = groups.get(key);\n if (group) {\n group.push(item);\n } else {\n groups.set(key, [item]);\n }\n }\n return groups;\n }\n _flatten(groups) {\n const isGroupByFn = isFunction(this._ngSelect.groupBy);\n const items = [];\n for (const key of Array.from(groups.keys())) {\n let i = items.length;\n if (key === undefined) {\n const withoutGroup = groups.get(undefined) || [];\n items.push(...withoutGroup.map(x => {\n x.index = i++;\n return x;\n }));\n continue;\n }\n const isObjectKey = isObject(key);\n const parent = {\n label: isObjectKey ? '' : String(key),\n children: undefined,\n parent: null,\n index: i++,\n disabled: !this._ngSelect.selectableGroup,\n htmlId: newId()\n };\n const groupKey = isGroupByFn ? this._ngSelect.bindLabel : this._ngSelect.groupBy;\n const groupValue = this._ngSelect.groupValue || (() => {\n if (isObjectKey) {\n return key.value;\n }\n return {\n [groupKey]: key\n };\n });\n const children = groups.get(key).map(x => {\n x.parent = parent;\n x.children = undefined;\n x.index = i++;\n return x;\n });\n parent.children = children;\n parent.value = groupValue(key, children.map(x => x.value));\n items.push(parent);\n items.push(...children);\n }\n return items;\n }\n}\nlet NgDropdownPanelService = /*#__PURE__*/(() => {\n class NgDropdownPanelService {\n constructor() {\n this._dimensions = {\n itemHeight: 0,\n panelHeight: 0,\n itemsPerViewport: 0\n };\n }\n get dimensions() {\n return this._dimensions;\n }\n calculateItems(scrollPos, itemsLength, buffer) {\n const d = this._dimensions;\n const scrollHeight = d.itemHeight * itemsLength;\n const scrollTop = Math.max(0, scrollPos);\n const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n const maxStartEnd = end;\n const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n let topPadding = d.itemHeight * Math.ceil(start) - d.itemHeight * Math.min(start, buffer);\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= buffer;\n start = Math.max(0, start);\n end += buffer;\n end = Math.min(itemsLength, end);\n return {\n topPadding,\n scrollHeight,\n start,\n end\n };\n }\n setDimensions(itemHeight, panelHeight) {\n const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n this._dimensions = {\n itemHeight,\n panelHeight,\n itemsPerViewport\n };\n }\n getScrollTo(itemTop, itemHeight, lastScroll) {\n const {\n panelHeight\n } = this.dimensions;\n const itemBottom = itemTop + itemHeight;\n const top = lastScroll;\n const bottom = top + panelHeight;\n if (panelHeight >= itemBottom && lastScroll === itemTop) {\n return null;\n }\n if (itemBottom > bottom) {\n return top + itemBottom - bottom;\n } else if (itemTop <= top) {\n return itemTop;\n }\n return null;\n }\n static {\n this.ɵfac = function NgDropdownPanelService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgDropdownPanelService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgDropdownPanelService,\n factory: NgDropdownPanelService.ɵfac\n });\n }\n }\n return NgDropdownPanelService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst CSS_POSITIONS = ['top', 'right', 'bottom', 'left'];\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nlet NgDropdownPanelComponent = /*#__PURE__*/(() => {\n class NgDropdownPanelComponent {\n constructor(_renderer, _zone, _panelService, _elementRef, _document) {\n this._renderer = _renderer;\n this._zone = _zone;\n this._panelService = _panelService;\n this._document = _document;\n this.items = [];\n this.position = 'auto';\n this.virtualScroll = false;\n this.filterValue = null;\n this.update = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._scrollToEndFired = false;\n this._updateScrollHeight = false;\n this._lastScrollPosition = 0;\n this._dropdown = _elementRef.nativeElement;\n }\n get currentPosition() {\n return this._currentPosition;\n }\n get itemsLength() {\n return this._itemsLength;\n }\n set itemsLength(value) {\n if (value !== this._itemsLength) {\n this._itemsLength = value;\n this._onItemsLengthChanged();\n }\n }\n get _startOffset() {\n if (this.markedItem) {\n const {\n itemHeight,\n panelHeight\n } = this._panelService.dimensions;\n const offset = this.markedItem.index * itemHeight;\n return panelHeight > offset ? 0 : offset;\n }\n return 0;\n }\n ngOnInit() {\n this._select = this._dropdown.parentElement;\n this._virtualPadding = this.paddingElementRef.nativeElement;\n this._scrollablePanel = this.scrollElementRef.nativeElement;\n this._contentPanel = this.contentElementRef.nativeElement;\n this._handleScroll();\n this._handleOutsideClick();\n this._appendDropdown();\n this._setupMousedownListener();\n }\n ngOnChanges(changes) {\n if (changes.items) {\n const change = changes.items;\n this._onItemsChange(change.currentValue, change.firstChange);\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._destroy$.unsubscribe();\n if (this.appendTo) {\n this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);\n }\n }\n scrollTo(option, startFromOption = false) {\n if (!option) {\n return;\n }\n const index = this.items.indexOf(option);\n if (index < 0 || index >= this.itemsLength) {\n return;\n }\n let scrollTo;\n if (this.virtualScroll) {\n const itemHeight = this._panelService.dimensions.itemHeight;\n scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n } else {\n const item = this._dropdown.querySelector(`#${option.htmlId}`);\n const lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n }\n if (isDefined(scrollTo)) {\n this._scrollablePanel.scrollTop = scrollTo;\n }\n }\n scrollToTag() {\n const panel = this._scrollablePanel;\n panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n }\n adjustPosition() {\n this._updateYPosition();\n }\n _handleDropdownPosition() {\n this._currentPosition = this._calculateCurrentPosition(this._dropdown);\n if (CSS_POSITIONS.includes(this._currentPosition)) {\n this._updateDropdownClass(this._currentPosition);\n } else {\n this._updateDropdownClass('bottom');\n }\n if (this.appendTo) {\n this._updateYPosition();\n }\n this._dropdown.style.opacity = '1';\n }\n _updateDropdownClass(currentPosition) {\n CSS_POSITIONS.forEach(position => {\n const REMOVE_CSS_CLASS = `ng-select-${position}`;\n this._renderer.removeClass(this._dropdown, REMOVE_CSS_CLASS);\n this._renderer.removeClass(this._select, REMOVE_CSS_CLASS);\n });\n const ADD_CSS_CLASS = `ng-select-${currentPosition}`;\n this._renderer.addClass(this._dropdown, ADD_CSS_CLASS);\n this._renderer.addClass(this._select, ADD_CSS_CLASS);\n }\n _handleScroll() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this.scrollElementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER)).subscribe(e => {\n const path = e.path || e.composedPath && e.composedPath();\n if (!path || path.length === 0 && !e.target) {\n return;\n }\n const scrollTop = !path || path.length === 0 ? e.target.scrollTop : path[0].scrollTop;\n this._onContentScrolled(scrollTop);\n });\n });\n }\n _handleOutsideClick() {\n if (!this._document) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n merge(fromEvent(this._document, 'touchstart', {\n capture: true\n }), fromEvent(this._document, 'click', {\n capture: true\n })).pipe(takeUntil(this._destroy$)).subscribe($event => this._checkToClose($event));\n });\n }\n _checkToClose($event) {\n if (this._select.contains($event.target) || this._dropdown.contains($event.target)) {\n return;\n }\n const path = $event.path || $event.composedPath && $event.composedPath();\n if ($event.target && $event.target.shadowRoot && path && path[0] && this._select.contains(path[0])) {\n return;\n }\n this._zone.run(() => this.outsideClick.emit());\n }\n _onItemsChange(items, firstChange) {\n this.items = items || [];\n this._scrollToEndFired = false;\n this.itemsLength = items.length;\n if (this.virtualScroll) {\n this._updateItemsRange(firstChange);\n } else {\n this._setVirtualHeight();\n this._updateItems(firstChange);\n }\n }\n _updateItems(firstChange) {\n this.update.emit(this.items);\n if (firstChange === false) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n Promise.resolve().then(() => {\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(0, panelHeight);\n this._handleDropdownPosition();\n this.scrollTo(this.markedItem, firstChange);\n });\n });\n }\n _updateItemsRange(firstChange) {\n this._zone.runOutsideAngular(() => {\n this._measureDimensions().then(() => {\n if (firstChange) {\n this._renderItemsRange(this._startOffset);\n this._handleDropdownPosition();\n } else {\n this._renderItemsRange();\n }\n });\n });\n }\n _onContentScrolled(scrollTop) {\n if (this.virtualScroll) {\n this._renderItemsRange(scrollTop);\n }\n this._lastScrollPosition = scrollTop;\n this._fireScrollToEnd(scrollTop);\n }\n _updateVirtualHeight(height) {\n if (this._updateScrollHeight) {\n this._virtualPadding.style.height = `${height}px`;\n this._updateScrollHeight = false;\n }\n }\n _setVirtualHeight() {\n if (!this._virtualPadding) {\n return;\n }\n this._virtualPadding.style.height = `0px`;\n }\n _onItemsLengthChanged() {\n this._updateScrollHeight = true;\n }\n _renderItemsRange(scrollTop = null) {\n if (scrollTop && this._lastScrollPosition === scrollTop) {\n return;\n }\n scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n this._updateVirtualHeight(range.scrollHeight);\n this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n this._zone.run(() => {\n this.update.emit(this.items.slice(range.start, range.end));\n this.scroll.emit({\n start: range.start,\n end: range.end\n });\n });\n if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n this._scrollablePanel.scrollTop = scrollTop;\n this._lastScrollPosition = scrollTop;\n }\n }\n _measureDimensions() {\n if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n return Promise.resolve(this._panelService.dimensions);\n }\n const [first] = this.items;\n this.update.emit([first]);\n return Promise.resolve().then(() => {\n const option = this._dropdown.querySelector(`#${first.htmlId}`);\n const optionHeight = option.clientHeight;\n this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(optionHeight, panelHeight);\n return this._panelService.dimensions;\n });\n }\n _fireScrollToEnd(scrollTop) {\n if (this._scrollToEndFired || scrollTop === 0) {\n return;\n }\n const padding = this.virtualScroll ? this._virtualPadding : this._contentPanel;\n if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight - 1) {\n this._zone.run(() => this.scrollToEnd.emit());\n this._scrollToEndFired = true;\n }\n }\n _calculateCurrentPosition(dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n const selectRect = this._select.getBoundingClientRect();\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n const offsetTop = selectRect.top + window.pageYOffset;\n const height = selectRect.height;\n const dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n } else {\n return 'bottom';\n }\n }\n _appendDropdown() {\n if (!this.appendTo) {\n return;\n }\n this._parent = document.querySelector(this.appendTo);\n if (!this._parent) {\n throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);\n }\n this._updateXPosition();\n this._parent.appendChild(this._dropdown);\n }\n _updateXPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const offsetLeft = select.left - parent.left;\n this._dropdown.style.left = offsetLeft + 'px';\n this._dropdown.style.width = select.width + 'px';\n this._dropdown.style.minWidth = select.width + 'px';\n }\n _updateYPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const delta = select.height;\n if (this._currentPosition === 'top') {\n const offsetBottom = parent.bottom - select.bottom;\n this._dropdown.style.bottom = offsetBottom + delta + 'px';\n this._dropdown.style.top = 'auto';\n } else if (this._currentPosition === 'bottom') {\n const offsetTop = select.top - parent.top;\n this._dropdown.style.top = offsetTop + delta + 'px';\n this._dropdown.style.bottom = 'auto';\n }\n }\n _setupMousedownListener() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this._dropdown, 'mousedown').pipe(takeUntil(this._destroy$)).subscribe(event => {\n const target = event.target;\n if (target.tagName === 'INPUT') {\n return;\n }\n event.preventDefault();\n });\n });\n }\n static {\n this.ɵfac = function NgDropdownPanelComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgDropdownPanelComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(NgDropdownPanelService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgDropdownPanelComponent,\n selectors: [[\"ng-dropdown-panel\"]],\n viewQuery: function NgDropdownPanelComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7, ElementRef);\n i0.ɵɵviewQuery(_c1, 7, ElementRef);\n i0.ɵɵviewQuery(_c2, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scrollElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.paddingElementRef = _t.first);\n }\n },\n inputs: {\n items: \"items\",\n markedItem: \"markedItem\",\n position: \"position\",\n appendTo: \"appendTo\",\n bufferAmount: \"bufferAmount\",\n virtualScroll: [2, \"virtualScroll\", \"virtualScroll\", booleanAttribute],\n headerTemplate: \"headerTemplate\",\n footerTemplate: \"footerTemplate\",\n filterValue: \"filterValue\"\n },\n outputs: {\n update: \"update\",\n scroll: \"scroll\",\n scrollToEnd: \"scrollToEnd\",\n outsideClick: \"outsideClick\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 6,\n consts: [[\"scroll\", \"\"], [\"padding\", \"\"], [\"content\", \"\"], [1, \"ng-dropdown-header\"], [\"role\", \"listbox\", 1, \"ng-dropdown-panel-items\", \"scroll-host\"], [1, \"ng-dropdown-footer\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgDropdownPanelComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NgDropdownPanelComponent_Conditional_0_Template, 2, 4, \"div\", 3);\n i0.ɵɵelementStart(1, \"div\", 4, 0);\n i0.ɵɵelement(3, \"div\", null, 1);\n i0.ɵɵelementStart(5, \"div\", null, 2);\n i0.ɵɵprojection(7);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(8, NgDropdownPanelComponent_Conditional_8_Template, 2, 4, \"div\", 5);\n }\n if (rf & 2) {\n i0.ɵɵconditional(ctx.headerTemplate ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵclassProp(\"total-padding\", ctx.virtualScroll);\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"scrollable-content\", ctx.virtualScroll && ctx.items.length);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(ctx.footerTemplate ? 8 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgDropdownPanelComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgOptionComponent = /*#__PURE__*/(() => {\n class NgOptionComponent {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.disabled = false;\n this.stateChange$ = new Subject();\n }\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n ngOnChanges(changes) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this.disabled\n });\n }\n }\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this.disabled,\n label: this.elementRef.nativeElement.innerHTML\n });\n }\n }\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n static {\n this.ɵfac = function NgOptionComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptionComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgOptionComponent,\n selectors: [[\"ng-option\"]],\n inputs: {\n value: \"value\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n template: function NgOptionComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgOptionComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar KeyCode = /*#__PURE__*/function (KeyCode) {\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\n KeyCode[KeyCode[\"ArrowUp\"] = 38] = \"ArrowUp\";\n KeyCode[KeyCode[\"ArrowDown\"] = 40] = \"ArrowDown\";\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\n return KeyCode;\n}(KeyCode || {});\nfunction DefaultSelectionModelFactory() {\n return new DefaultSelectionModel();\n}\nclass DefaultSelectionModel {\n constructor() {\n this._selected = [];\n }\n get value() {\n return this._selected;\n }\n select(item, multiple, groupAsModel) {\n item.selected = true;\n if (!item.children || !multiple && groupAsModel) {\n this._selected.push(item);\n }\n if (multiple) {\n if (item.parent) {\n const childrenCount = item.parent.children.length;\n const selectedCount = item.parent.children.filter(x => x.selected).length;\n item.parent.selected = childrenCount === selectedCount;\n } else if (item.children) {\n this._setChildrenSelectedState(item.children, true);\n this._removeChildren(item);\n if (groupAsModel && this._activeChildren(item)) {\n this._selected = [...this._selected.filter(x => x.parent !== item), item];\n } else {\n this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];\n }\n }\n }\n }\n unselect(item, multiple) {\n this._selected = this._selected.filter(x => x !== item);\n item.selected = false;\n if (multiple) {\n if (item.parent && item.parent.selected) {\n const children = item.parent.children;\n this._removeParent(item.parent);\n this._removeChildren(item.parent);\n this._selected.push(...children.filter(x => x !== item && !x.disabled));\n item.parent.selected = false;\n } else if (item.children) {\n this._setChildrenSelectedState(item.children, false);\n this._removeChildren(item);\n }\n }\n }\n clear(keepDisabled) {\n this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];\n }\n _setChildrenSelectedState(children, selected) {\n for (const child of children) {\n if (child.disabled) {\n continue;\n }\n child.selected = selected;\n }\n }\n _removeChildren(parent) {\n this._selected = [...this._selected.filter(x => x.parent !== parent), ...parent.children.filter(x => x.parent === parent && x.disabled && x.selected)];\n }\n _removeParent(parent) {\n this._selected = this._selected.filter(x => x !== parent);\n }\n _activeChildren(item) {\n return item.children.every(x => !x.disabled || x.selected);\n }\n}\nlet NgSelectConfig = /*#__PURE__*/(() => {\n class NgSelectConfig {\n constructor() {\n this.fixedPlaceholder = false;\n this.notFoundText = 'No items found';\n this.typeToSearchText = 'Type to search';\n this.addTagText = 'Add item';\n this.loadingText = 'Loading...';\n this.clearAllText = 'Clear all';\n this.disableVirtualScroll = true;\n this.openOnEnter = true;\n this.appearance = 'underline';\n }\n static {\n this.ɵfac = function NgSelectConfig_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgSelectConfig,\n factory: NgSelectConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgSelectConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ConsoleService = /*#__PURE__*/(() => {\n class ConsoleService {\n warn(message) {\n console.warn(message);\n }\n static {\n this.ɵfac = function ConsoleService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConsoleService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsoleService,\n factory: ConsoleService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ConsoleService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');\nlet NgSelectComponent = /*#__PURE__*/(() => {\n class NgSelectComponent {\n constructor(classes, autoFocus, config, newSelectionModel, _elementRef, _cd, _console) {\n this.classes = classes;\n this.autoFocus = autoFocus;\n this.config = config;\n this._cd = _cd;\n this._console = _console;\n this.ariaLabelDropdown = 'Options List';\n this.markFirst = true;\n this.fixedPlaceholder = false;\n this.preventToggleOnRightClick = false;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.selectableGroup = false;\n this.selectableGroupAsModel = true;\n this.searchFn = null;\n this.trackByFn = null;\n this.clearOnBackspace = true;\n this.labelForId = null;\n this.inputAttrs = {};\n this.readonly = false;\n this.searchWhileComposing = true;\n this.minTermLength = 0;\n this.editableSearchTerm = false;\n this.ngClass = null;\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.clearable = true;\n this.isOpen = false;\n // output events\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.useDefaultClass = true;\n this.viewPortItems = [];\n this.searchTerm = null;\n this.dropdownId = newId();\n this.escapeHTML = true;\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._isComposing = false;\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._items = [];\n this.keyDownFn = _ => true;\n this.clearItem = item => {\n const option = this.selectedItems.find(x => x.value === item);\n this.unselect(option);\n };\n this.trackByOption = (_, item) => {\n if (this.trackByFn) {\n return this.trackByFn(item.value);\n }\n return item;\n };\n this._onChange = _ => {};\n this._onTouched = () => {};\n this._mergeGlobalConfig(config);\n this.itemsList = new ItemsList(this, newSelectionModel ? newSelectionModel() : DefaultSelectionModelFactory());\n this.element = _elementRef.nativeElement;\n }\n get filtered() {\n return !!this.searchTerm && this.searchable || this._isComposing;\n }\n get single() {\n return !this.multiple;\n }\n get items() {\n return this._items;\n }\n set items(value) {\n this._itemsAreUsed = true;\n this._items = value ?? [];\n }\n get disabled() {\n return this.readonly || this._disabled;\n }\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (fn !== undefined && fn !== null && !isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n get clearSearchOnAdd() {\n if (isDefined(this._clearSearchOnAdd)) {\n return this._clearSearchOnAdd;\n } else if (isDefined(this.config.clearSearchOnAdd)) {\n return this.config.clearSearchOnAdd;\n }\n return this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n get deselectOnClick() {\n if (isDefined(this._deselectOnClick)) {\n return this._deselectOnClick;\n } else if (isDefined(this.config.deselectOnClick)) {\n return this.config.deselectOnClick;\n }\n return this.multiple;\n }\n set deselectOnClick(value) {\n this._deselectOnClick = value;\n }\n get selectedItems() {\n return this.itemsList.selectedItems;\n }\n get selectedValues() {\n return this.selectedItems.map(x => x.value);\n }\n get hasValue() {\n return this.selectedItems.length > 0;\n }\n get currentPanelPosition() {\n if (this.dropdownPanel) {\n return this.dropdownPanel.currentPosition;\n }\n return undefined;\n }\n get showAddTag() {\n if (!this._validTerm) {\n return false;\n }\n const term = this.searchTerm.toLowerCase().trim();\n return this.addTag && !this.itemsList.filteredItems.some(x => x.label.toLowerCase() === term) && (!this.hideSelected && this.isOpen || !this.selectedItems.some(x => x.label.toLowerCase() === term)) && !this.loading;\n }\n get _editableSearchTerm() {\n return this.editableSearchTerm && !this.multiple;\n }\n get _isTypeahead() {\n return this.typeahead && this.typeahead.observers.length > 0;\n }\n get _validTerm() {\n const term = this.searchTerm && this.searchTerm.trim();\n return term && term.length >= this.minTermLength;\n }\n ngOnInit() {\n this._handleKeyPresses();\n this._setInputAttributes();\n }\n ngOnChanges(changes) {\n if (changes.multiple) {\n this.itemsList.clearSelected();\n }\n if (changes.items) {\n this._setItems(changes.items.currentValue || []);\n }\n if (changes.isOpen) {\n this._manualOpen = isDefined(changes.isOpen.currentValue);\n }\n }\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this.escapeHTML = false;\n this._setItemsFromNgOptions();\n }\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n handleKeyDown($event) {\n const keyCode = KeyCode[$event.which];\n if (keyCode) {\n if (this.keyDownFn($event) === false) {\n return;\n }\n this.handleKeyCode($event);\n } else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n }\n handleKeyCode($event) {\n const target = $event.target;\n if (this.clearButton && this.clearButton.nativeElement === target) {\n this.handleKeyCodeClear($event);\n } else {\n this.handleKeyCodeInput($event);\n }\n }\n handleKeyCodeInput($event) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n $event.preventDefault();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n handleKeyCodeClear($event) {\n switch ($event.which) {\n case KeyCode.Enter:\n this.handleClearClick();\n $event.preventDefault();\n break;\n }\n }\n handleMousedown($event) {\n if (this.preventToggleOnRightClick && $event.button === 2) {\n return false;\n }\n const target = $event.target;\n if (target.tagName !== 'INPUT') {\n $event.preventDefault();\n }\n if (target.classList.contains('ng-clear-wrapper')) {\n this.handleClearClick();\n return;\n }\n if (target.classList.contains('ng-arrow-wrapper')) {\n this.handleArrowClick();\n return;\n }\n if (target.classList.contains('ng-value-icon')) {\n return;\n }\n if (!this.focused) {\n this.focus();\n }\n if (this.searchable) {\n this.open();\n } else {\n this.toggle();\n }\n }\n handleArrowClick() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n handleClearClick() {\n if (this.hasValue) {\n this.itemsList.clearSelected(true);\n this._updateNgModel();\n }\n this._clearSearch();\n this.focus();\n this.clearEvent.emit();\n this._onSelectionChanged();\n }\n clearModel() {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n }\n writeValue(value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(state) {\n this._disabled = state;\n this._cd.markForCheck();\n }\n toggle() {\n if (!this.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n open() {\n if (this.disabled || this.isOpen || this._manualOpen) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.searchTerm) {\n this.focus();\n }\n this.detectChanges();\n }\n close() {\n if (!this.isOpen || this._manualOpen) {\n return;\n }\n this.isOpen = false;\n this._isComposing = false;\n if (!this._editableSearchTerm) {\n this._clearSearch();\n } else {\n this.itemsList.resetFilteredItems();\n }\n this.itemsList.unmarkItem();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n }\n toggleItem(item) {\n if (!item || item.disabled || this.disabled) {\n return;\n }\n if (this.deselectOnClick && item.selected) {\n this.unselect(item);\n } else {\n this.select(item);\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n }\n select(item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd && !this._editableSearchTerm) {\n this._clearSearch();\n }\n this._updateNgModel();\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n this._onSelectionChanged();\n }\n focus() {\n this.searchInput.nativeElement.focus();\n }\n blur() {\n this.searchInput.nativeElement.blur();\n }\n unselect(item) {\n if (!item) {\n return;\n }\n this.itemsList.unselect(item);\n this.focus();\n this._updateNgModel();\n this.removeEvent.emit(item.value);\n this._onSelectionChanged();\n }\n selectTag() {\n let tag;\n if (isFunction(this.addTag)) {\n tag = this.addTag(this.searchTerm);\n } else {\n tag = this._primitive ? this.searchTerm : {\n [this.bindLabel]: this.searchTerm\n };\n }\n const handleTag = item => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item);\n if (isPromise(tag)) {\n tag.then(item => this.select(handleTag(item))).catch(() => {});\n } else if (tag) {\n this.select(handleTag(tag));\n }\n }\n showClear() {\n return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;\n }\n focusOnClear() {\n this.blur();\n if (this.clearButton) {\n this.clearButton.nativeElement.focus();\n }\n }\n showNoItemsFound() {\n const empty = this.itemsList.filteredItems.length === 0;\n return (empty && !this._isTypeahead && !this.loading || empty && this._isTypeahead && this._validTerm && !this.loading) && !this.showAddTag;\n }\n showTypeToSearch() {\n const empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this._validTerm && !this.loading;\n }\n onCompositionStart() {\n this._isComposing = true;\n }\n onCompositionEnd(term) {\n this._isComposing = false;\n if (this.searchWhileComposing) {\n return;\n }\n this.filter(term);\n }\n filter(term) {\n if (this._isComposing && !this.searchWhileComposing) {\n return;\n }\n this.searchTerm = term;\n if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {\n this.typeahead.next(term);\n }\n if (!this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n if (this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n this.searchEvent.emit({\n term,\n items: this.itemsList.filteredItems.map(x => x.value)\n });\n this.open();\n }\n onInputFocus($event) {\n if (this.focused) {\n return;\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.element.classList.add('ng-select-focused');\n this.focusEvent.emit($event);\n this.focused = true;\n }\n onInputBlur($event) {\n this.element.classList.remove('ng-select-focused');\n this.blurEvent.emit($event);\n if (!this.isOpen && !this.disabled) {\n this._onTouched();\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.focused = false;\n }\n onItemHover(item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n }\n detectChanges() {\n if (!this._cd.destroyed) {\n this._cd.detectChanges();\n }\n }\n _setSearchTermFromItems() {\n const selected = this.selectedItems && this.selectedItems[0];\n this.searchTerm = selected && selected.label || null;\n }\n _setItems(items) {\n const firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n _setItemsFromNgOptions() {\n const mapNgOptions = options => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n }));\n this.itemsList.setItems(this.items);\n if (this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n this.detectChanges();\n };\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);\n merge(...this.ngOptions.map(option => option.stateChange$)).pipe(takeUntil(changedOrDestroyed)).subscribe(option => {\n const item = this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this._cd.detectChanges();\n });\n };\n this.ngOptions.changes.pipe(startWith(this.ngOptions), takeUntil(this._destroy$)).subscribe(options => {\n this.bindLabel = this._defaultLabel;\n mapNgOptions(options);\n handleOptionChange();\n });\n }\n _isValidWriteValue(value) {\n if (!isDefined(value) || this.multiple && value === '' || Array.isArray(value) && value.length === 0) {\n return false;\n }\n const validateBinding = item => {\n if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n this._console.warn(`Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n };\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every(item => validateBinding(item));\n } else {\n return validateBinding(value);\n }\n }\n _handleWriteValue(ngModel) {\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n const select = val => {\n let item = this.itemsList.findItem(val);\n if (item) {\n this.itemsList.select(item);\n } else {\n const isValObject = isObject(val);\n const isPrimitive = !isValObject && !this.bindValue;\n if (isValObject || isPrimitive) {\n this.itemsList.select(this.itemsList.mapItem(val, null));\n } else if (this.bindValue) {\n item = {\n [this.bindLabel]: null,\n [this.bindValue]: val\n };\n this.itemsList.select(this.itemsList.mapItem(item, null));\n }\n }\n };\n if (this.multiple) {\n ngModel.forEach(item => select(item));\n } else {\n select(ngModel);\n }\n }\n _handleKeyPresses() {\n if (this.searchable) {\n return;\n }\n this._keyPress$.pipe(takeUntil(this._destroy$), tap(letter => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join(''))).subscribe(term => {\n const item = this.itemsList.findByLabel(term);\n if (item) {\n if (this.isOpen) {\n this.itemsList.markItem(item);\n this._scrollToMarked();\n this._cd.markForCheck();\n } else {\n this.select(item);\n }\n }\n this._pressedKeys = [];\n });\n }\n _setInputAttributes() {\n const input = this.searchInput.nativeElement;\n const attributes = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: this.labelForId ? 'off' : this.dropdownId,\n ...this.inputAttrs\n };\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n _updateNgModel() {\n const model = [];\n for (const item of this.selectedItems) {\n if (this.bindValue) {\n let value = null;\n if (item.children) {\n const groupKey = this.groupValue ? this.bindValue : this.groupBy;\n value = item.value[groupKey || this.groupBy];\n } else {\n value = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(value);\n } else {\n model.push(item.value);\n }\n }\n const selected = this.selectedItems.map(x => x.value);\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(selected);\n } else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(selected[0]);\n }\n this._cd.markForCheck();\n }\n _clearSearch() {\n if (!this.searchTerm) {\n return;\n }\n this._changeSearch(null);\n this.itemsList.resetFilteredItems();\n }\n _changeSearch(searchTerm) {\n this.searchTerm = searchTerm;\n if (this._isTypeahead) {\n this.typeahead.next(searchTerm);\n }\n }\n _scrollToMarked() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n }\n _scrollToTag() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollToTag();\n }\n _onSelectionChanged() {\n if (this.isOpen && this.deselectOnClick && this.appendTo) {\n // Make sure items are rendered.\n this._cd.detectChanges();\n this.dropdownPanel.adjustPosition();\n }\n }\n _handleTab($event) {\n if (this.isOpen === false) {\n if (this.showClear() && !$event.shiftKey) {\n this.focusOnClear();\n $event.preventDefault();\n } else if (!this.addTag) {\n return;\n }\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n } else if (this.showAddTag) {\n this.selectTag();\n $event.preventDefault();\n } else {\n this.close();\n }\n } else {\n this.close();\n }\n }\n _handleEnter($event) {\n if (this.isOpen || this._manualOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n } else if (this.showAddTag) {\n this.selectTag();\n }\n } else if (this.openOnEnter) {\n this.open();\n } else {\n return;\n }\n $event.preventDefault();\n }\n _handleSpace($event) {\n if (this.isOpen || this._manualOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowDown($event) {\n if (this._nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n } else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowUp($event) {\n if (!this.isOpen) {\n return;\n }\n if (this._nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n } else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n }\n _nextItemIsTag(nextStep) {\n const nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n }\n _handleBackspace() {\n if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n } else {\n this.clearModel();\n }\n }\n _mergeGlobalConfig(config) {\n this.placeholder = this.placeholder || config.placeholder;\n this.fixedPlaceholder = this.fixedPlaceholder || config.fixedPlaceholder;\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n this.virtualScroll = isDefined(this.virtualScroll) ? this.virtualScroll : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;\n this.appendTo = this.appendTo || config.appendTo;\n this.bindValue = this.bindValue || config.bindValue;\n this.bindLabel = this.bindLabel || config.bindLabel;\n this.appearance = this.appearance || config.appearance;\n }\n static {\n this.ɵfac = function NgSelectComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectComponent)(i0.ɵɵinjectAttribute('class'), i0.ɵɵinjectAttribute('autofocus'), i0.ɵɵdirectiveInject(NgSelectConfig), i0.ɵɵdirectiveInject(SELECTION_MODEL_FACTORY, 8), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ConsoleService));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgSelectComponent,\n selectors: [[\"ng-select\"]],\n contentQueries: function NgSelectComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgOptionTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgOptgroupTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLabelTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgMultiLabelTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgHeaderTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgFooterTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgNotFoundTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgPlaceholderTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgTypeToSearchTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLoadingTextTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgTagTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLoadingSpinnerTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgClearButtonTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgOptionComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optgroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.multiLabelTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.notFoundTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.placeholderTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.typeToSearchTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingTextTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingSpinnerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.clearButtonTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ngOptions = _t);\n }\n },\n viewQuery: function NgSelectComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NgDropdownPanelComponent, 5);\n i0.ɵɵviewQuery(_c5, 7);\n i0.ɵɵviewQuery(_c6, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownPanel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.clearButton = _t.first);\n }\n },\n hostVars: 20,\n hostBindings: function NgSelectComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function NgSelectComponent_keydown_HostBindingHandler($event) {\n return ctx.handleKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-select-typeahead\", ctx.typeahead)(\"ng-select-multiple\", ctx.multiple)(\"ng-select-taggable\", ctx.addTag)(\"ng-select-searchable\", ctx.searchable)(\"ng-select-clearable\", ctx.clearable)(\"ng-select-opened\", ctx.isOpen)(\"ng-select\", ctx.useDefaultClass)(\"ng-select-filtered\", ctx.filtered)(\"ng-select-single\", ctx.single)(\"ng-select-disabled\", ctx.disabled);\n }\n },\n inputs: {\n ariaLabelDropdown: \"ariaLabelDropdown\",\n bindLabel: \"bindLabel\",\n bindValue: \"bindValue\",\n ariaLabel: \"ariaLabel\",\n markFirst: [2, \"markFirst\", \"markFirst\", booleanAttribute],\n placeholder: \"placeholder\",\n fixedPlaceholder: \"fixedPlaceholder\",\n notFoundText: \"notFoundText\",\n typeToSearchText: \"typeToSearchText\",\n preventToggleOnRightClick: \"preventToggleOnRightClick\",\n addTagText: \"addTagText\",\n loadingText: \"loadingText\",\n clearAllText: \"clearAllText\",\n appearance: \"appearance\",\n dropdownPosition: \"dropdownPosition\",\n appendTo: \"appendTo\",\n loading: [2, \"loading\", \"loading\", booleanAttribute],\n closeOnSelect: [2, \"closeOnSelect\", \"closeOnSelect\", booleanAttribute],\n hideSelected: [2, \"hideSelected\", \"hideSelected\", booleanAttribute],\n selectOnTab: [2, \"selectOnTab\", \"selectOnTab\", booleanAttribute],\n openOnEnter: [2, \"openOnEnter\", \"openOnEnter\", booleanAttribute],\n maxSelectedItems: [2, \"maxSelectedItems\", \"maxSelectedItems\", numberAttribute],\n groupBy: \"groupBy\",\n groupValue: \"groupValue\",\n bufferAmount: [2, \"bufferAmount\", \"bufferAmount\", numberAttribute],\n virtualScroll: [2, \"virtualScroll\", \"virtualScroll\", booleanAttribute],\n selectableGroup: [2, \"selectableGroup\", \"selectableGroup\", booleanAttribute],\n selectableGroupAsModel: [2, \"selectableGroupAsModel\", \"selectableGroupAsModel\", booleanAttribute],\n searchFn: \"searchFn\",\n trackByFn: \"trackByFn\",\n clearOnBackspace: [2, \"clearOnBackspace\", \"clearOnBackspace\", booleanAttribute],\n labelForId: \"labelForId\",\n inputAttrs: \"inputAttrs\",\n tabIndex: [2, \"tabIndex\", \"tabIndex\", numberAttribute],\n readonly: [2, \"readonly\", \"readonly\", booleanAttribute],\n searchWhileComposing: [2, \"searchWhileComposing\", \"searchWhileComposing\", booleanAttribute],\n minTermLength: [2, \"minTermLength\", \"minTermLength\", numberAttribute],\n editableSearchTerm: [2, \"editableSearchTerm\", \"editableSearchTerm\", booleanAttribute],\n ngClass: \"ngClass\",\n typeahead: \"typeahead\",\n multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n addTag: \"addTag\",\n searchable: [2, \"searchable\", \"searchable\", booleanAttribute],\n clearable: [2, \"clearable\", \"clearable\", booleanAttribute],\n isOpen: \"isOpen\",\n items: \"items\",\n compareWith: \"compareWith\",\n clearSearchOnAdd: \"clearSearchOnAdd\",\n deselectOnClick: \"deselectOnClick\",\n keyDownFn: \"keyDownFn\"\n },\n outputs: {\n blurEvent: \"blur\",\n focusEvent: \"focus\",\n changeEvent: \"change\",\n openEvent: \"open\",\n closeEvent: \"close\",\n searchEvent: \"search\",\n clearEvent: \"clear\",\n addEvent: \"add\",\n removeEvent: \"remove\",\n scroll: \"scroll\",\n scrollToEnd: \"scrollToEnd\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelectComponent),\n multi: true\n }, NgDropdownPanelService]), i0.ɵɵNgOnChangesFeature],\n decls: 13,\n vars: 19,\n consts: [[\"searchInput\", \"\"], [\"defaultPlaceholderTemplate\", \"\"], [\"defaultLabelTemplate\", \"\"], [\"defaultLoadingSpinnerTemplate\", \"\"], [\"clearButton\", \"\"], [\"defaultOptionTemplate\", \"\"], [\"defaultTagTemplate\", \"\"], [\"defaultNotFoundTemplate\", \"\"], [\"defaultTypeToSearchTemplate\", \"\"], [\"defaultLoadingTextTemplate\", \"\"], [1, \"ng-select-container\", 3, \"mousedown\"], [1, \"ng-value-container\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ng-input\"], [\"aria-autocomplete\", \"list\", \"role\", \"combobox\", 3, \"blur\", \"change\", \"compositionend\", \"compositionstart\", \"focus\", \"input\", \"disabled\", \"readOnly\", \"value\"], [1, \"ng-arrow-wrapper\"], [1, \"ng-arrow\"], [1, \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ng-select-multiple\", \"ngClass\", \"id\"], [3, \"ngTemplateOutlet\"], [1, \"ng-placeholder\"], [1, \"ng-value\", 3, \"ng-value-disabled\"], [1, \"ng-value\"], [\"aria-hidden\", \"true\", 1, \"ng-value-icon\", \"left\", 3, \"click\"], [1, \"ng-value-label\", 3, \"ngItemLabel\", \"escape\"], [1, \"ng-spinner-loader\"], [\"role\", \"button\", \"tabindex\", \"0\", 1, \"ng-clear-wrapper\", 3, \"title\"], [\"aria-hidden\", \"true\", 1, \"ng-clear\"], [1, \"ng-dropdown-panel\", 3, \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\", \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ngClass\", \"id\"], [1, \"ng-option\", 3, \"ng-option-disabled\", \"ng-option-selected\", \"ng-optgroup\", \"ng-option\", \"ng-option-child\", \"ng-option-marked\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"ng-option-marked\"], [1, \"ng-option\", 3, \"click\", \"mouseover\"], [1, \"ng-option-label\", 3, \"ngItemLabel\", \"escape\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"mouseover\", \"click\"], [1, \"ng-tag-label\"], [1, \"ng-option\", \"ng-option-disabled\"]],\n template: function NgSelectComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 10);\n i0.ɵɵlistener(\"mousedown\", function NgSelectComponent_Template_div_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleMousedown($event));\n });\n i0.ɵɵelementStart(1, \"div\", 11);\n i0.ɵɵtemplate(2, NgSelectComponent_Conditional_2_Template, 3, 1)(3, NgSelectComponent_Conditional_3_Template, 2, 0)(4, NgSelectComponent_Conditional_4_Template, 1, 5, null, 12);\n i0.ɵɵelementStart(5, \"div\", 13)(6, \"input\", 14, 0);\n i0.ɵɵlistener(\"blur\", function NgSelectComponent_Template_input_blur_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onInputBlur($event));\n })(\"change\", function NgSelectComponent_Template_input_change_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopPropagation());\n })(\"compositionend\", function NgSelectComponent_Template_input_compositionend_6_listener() {\n i0.ɵɵrestoreView(_r1);\n const searchInput_r7 = i0.ɵɵreference(7);\n return i0.ɵɵresetView(ctx.onCompositionEnd(searchInput_r7.value));\n })(\"compositionstart\", function NgSelectComponent_Template_input_compositionstart_6_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onCompositionStart());\n })(\"focus\", function NgSelectComponent_Template_input_focus_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onInputFocus($event));\n })(\"input\", function NgSelectComponent_Template_input_input_6_listener() {\n i0.ɵɵrestoreView(_r1);\n const searchInput_r7 = i0.ɵɵreference(7);\n return i0.ɵɵresetView(ctx.filter(searchInput_r7.value));\n });\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(8, NgSelectComponent_Conditional_8_Template, 3, 1)(9, NgSelectComponent_Conditional_9_Template, 2, 1);\n i0.ɵɵelementStart(10, \"span\", 15);\n i0.ɵɵelement(11, \"span\", 16);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(12, NgSelectComponent_Conditional_12_Template, 8, 18, \"ng-dropdown-panel\", 17);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-appearance-outline\", ctx.appearance === \"outline\")(\"ng-has-value\", ctx.hasValue);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.selectedItems.length === 0 && !ctx.searchTerm || ctx.fixedPlaceholder ? 2 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional((!ctx.multiLabelTemplate || !ctx.multiple) && ctx.selectedItems.length > 0 ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.multiple && ctx.multiLabelTemplate && ctx.selectedValues.length > 0 ? 4 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx.disabled)(\"readOnly\", !ctx.searchable || ctx.itemsList.maxItemsSelected)(\"value\", ctx.searchTerm);\n i0.ɵɵattribute(\"aria-activedescendant\", ctx.isOpen ? ctx.itemsList == null ? null : ctx.itemsList.markedItem == null ? null : ctx.itemsList.markedItem.htmlId : null)(\"aria-controls\", ctx.isOpen ? ctx.dropdownId : null)(\"aria-expanded\", ctx.isOpen)(\"aria-label\", ctx.ariaLabel)(\"id\", ctx.labelForId)(\"tabindex\", ctx.tabIndex);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.loading ? 8 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.showClear() ? 9 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(ctx.isOpen ? 12 : -1);\n }\n },\n dependencies: [NgTemplateOutlet, NgItemLabelDirective, NgDropdownPanelComponent, NgClass],\n styles: [\"@charset \\\"UTF-8\\\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\\\"\\\\200b\\\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgSelectComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgSelectModule = /*#__PURE__*/(() => {\n class NgSelectModule {\n static {\n this.ɵfac = function NgSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgSelectModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: SELECTION_MODEL_FACTORY,\n useValue: DefaultSelectionModelFactory\n }]\n });\n }\n }\n return NgSelectModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ng-select\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConsoleService, DefaultSelectionModel, DefaultSelectionModelFactory, NgClearButtonTemplateDirective, NgDropdownPanelComponent, NgDropdownPanelService, NgFooterTemplateDirective, NgHeaderTemplateDirective, NgItemLabelDirective, NgLabelTemplateDirective, NgLoadingSpinnerTemplateDirective, NgLoadingTextTemplateDirective, NgMultiLabelTemplateDirective, NgNotFoundTemplateDirective, NgOptgroupTemplateDirective, NgOptionComponent, NgOptionTemplateDirective, NgPlaceholderTemplateDirective, NgSelectComponent, NgSelectConfig, NgSelectModule, NgTagTemplateDirective, NgTypeToSearchTemplateDirective, SELECTION_MODEL_FACTORY };\n","export default function escapeStringRegexp(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}","// so it doesn't throw if no window or matchMedia\nvar w = typeof window !== 'undefined' ? window : {\n screen: {},\n navigator: {}\n};\nvar matchMedia = (w.matchMedia || function () {\n return {\n matches: false\n };\n}).bind(w);\n// passive events test\n// adapted from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\nvar passiveOptionAccessed = false;\nvar options = {\n get passive() {\n return passiveOptionAccessed = true;\n }\n};\n// have to set and remove a no-op listener instead of null\n// (which was used previously), because Edge v15 throws an error\n// when providing a null callback.\n// https://github.com/rafgraph/detect-passive-events/pull/3\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function () {};\nw.addEventListener && w.addEventListener('p', noop, options);\nw.removeEventListener && w.removeEventListener('p', noop, false);\nvar supportsPassiveEvents = passiveOptionAccessed;\nvar supportsPointerEvents = 'PointerEvent' in w;\nvar onTouchStartInWindow = 'ontouchstart' in w;\nvar touchEventInWindow = 'TouchEvent' in w;\n// onTouchStartInWindow is the old-old-legacy way to determine a touch device\n// and many websites interpreted it to mean that the device is a touch only phone,\n// so today browsers on a desktop/laptop computer with a touch screen (primary input mouse)\n// have onTouchStartInWindow as false (to prevent from being confused with a\n// touchOnly phone) even though they support the TouchEvents API, so need to check\n// both onTouchStartInWindow and touchEventInWindow for TouchEvent support,\n// however, some browsers (chromium) support the TouchEvents API even when running on\n// a mouse only device (touchEventInWindow true, but onTouchStartInWindow false)\n// so the touchEventInWindow check needs to include an coarse pointer media query\nvar supportsTouchEvents = onTouchStartInWindow || touchEventInWindow && matchMedia('(any-pointer: coarse)').matches;\nvar hasTouch = (w.navigator.maxTouchPoints || 0) > 0 || supportsTouchEvents;\n// userAgent is used as a backup to correct for known device/browser bugs\n// and when the browser doesn't support interaction media queries (pointer and hover)\n// see https://caniuse.com/css-media-interaction\nvar userAgent = w.navigator.userAgent || '';\n// iPads now support a mouse that can hover, however the media query interaction\n// feature results always say iPads only have a coarse pointer that can't hover\n// even when a mouse is connected (anyFine and anyHover are always false),\n// this unfortunately indicates a touch only device but iPads should\n// be classified as a hybrid device, so determine if it is an iPad\n// to indicate it should be treated as a hybrid device with anyHover true\nvar isIPad = matchMedia('(pointer: coarse)').matches &&\n// both iPad and iPhone can \"request desktop site\", which sets the userAgent to Macintosh\n// so need to check both userAgents to determine if it is an iOS device\n// and screen size to separate iPad from iPhone\n/iPad|Macintosh/.test(userAgent) && Math.min(w.screen.width || 0, w.screen.height || 0) >= 768;\nvar hasCoarsePrimaryPointer = (matchMedia('(pointer: coarse)').matches ||\n// if the pointer is not coarse and not fine then the browser doesn't support\n// interaction media queries (see https://caniuse.com/css-media-interaction)\n// so if it has onTouchStartInWindow assume it has a coarse primary pointer\n!matchMedia('(pointer: fine)').matches && onTouchStartInWindow) &&\n// bug in firefox (as of v81) on hybrid windows devices where the interaction media queries\n// always indicate a touch only device (only has a coarse pointer that can't hover)\n// so assume that the primary pointer is not coarse for firefox windows\n!/Windows.*Firefox/.test(userAgent);\nvar hasAnyHoverOrAnyFinePointer = matchMedia('(any-pointer: fine)').matches || matchMedia('(any-hover: hover)').matches ||\n// iPads might have an input device that can hover, so assume it has anyHover\nisIPad ||\n// if no onTouchStartInWindow then the browser is indicating that it is not a touch only device\n// see above note for supportsTouchEvents\n!onTouchStartInWindow;\n// a hybrid device is one that both hasTouch and\n// any input can hover or has a fine pointer, or the primary pointer is not coarse\n// if it's not a hybrid, then if it hasTouch it's touchOnly, otherwise it's mouseOnly\nvar deviceType = hasTouch && (hasAnyHoverOrAnyFinePointer || !hasCoarsePrimaryPointer) ? 'hybrid' : hasTouch ? 'touchOnly' : 'mouseOnly';\nvar primaryInput = deviceType === 'mouseOnly' ? 'mouse' : deviceType === 'touchOnly' ? 'touch' :\n// if the device is a hybrid, then if the primary pointer is coarse\n// assume the primaryInput is touch, otherwise assume it's mouse\nhasCoarsePrimaryPointer ? 'touch' : 'mouse';\nexport { deviceType, primaryInput, supportsPassiveEvents, supportsPointerEvents, supportsTouchEvents };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, HostBinding, Inject, Optional, Component, Input, forwardRef, EventEmitter, ChangeDetectionStrategy, Output, ViewChild, ContentChild, HostListener, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { throttleTime, tap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { supportsPassiveEvents } from 'detect-passive-events';\n\n/** Label type */\nconst _c0 = (a0, a1, a2) => ({\n tooltip: a0,\n placement: a1,\n content: a2\n});\nfunction TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template(rf, ctx) {}\nfunction TooltipWrapperComponent_ng_container_0_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template, 0, 0, \"ng-template\");\n }\n}\nfunction TooltipWrapperComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TooltipWrapperComponent_ng_container_0_1_Template, 1, 0, null, 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(2, _c0, ctx_r0.tooltip, ctx_r0.placement, ctx_r0.content));\n }\n}\nfunction TooltipWrapperComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 2);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"title\", ctx_r0.tooltip)(\"data-tooltip-placement\", ctx_r0.placement);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.content, \" \");\n }\n}\nconst _c1 = [\"tooltipTemplate\"];\nconst _c2 = [\"leftOuterSelectionBar\"];\nconst _c3 = [\"rightOuterSelectionBar\"];\nconst _c4 = [\"fullBar\"];\nconst _c5 = [\"selectionBar\"];\nconst _c6 = [\"minHandle\"];\nconst _c7 = [\"maxHandle\"];\nconst _c8 = [\"floorLabel\"];\nconst _c9 = [\"ceilLabel\"];\nconst _c10 = [\"minHandleLabel\"];\nconst _c11 = [\"maxHandleLabel\"];\nconst _c12 = [\"combinedLabel\"];\nconst _c13 = [\"ticksElement\"];\nconst _c14 = a0 => ({\n \"ngx-slider-selected\": a0\n});\nfunction SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"ngx-slider-tooltip-wrapper\", 32);\n }\n if (rf & 2) {\n const t_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"template\", ctx_r1.tooltipTemplate)(\"tooltip\", t_r1.valueTooltip)(\"placement\", t_r1.valueTooltipPlacement)(\"content\", t_r1.value);\n }\n}\nfunction SliderComponent_span_28_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 33);\n }\n if (rf & 2) {\n const t_r1 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"innerText\", t_r1.legend);\n }\n}\nfunction SliderComponent_span_28_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 34);\n }\n if (rf & 2) {\n const t_r1 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"innerHTML\", t_r1.legend, i0.ɵɵsanitizeHtml);\n }\n}\nfunction SliderComponent_span_28_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 27);\n i0.ɵɵelement(1, \"ngx-slider-tooltip-wrapper\", 28);\n i0.ɵɵtemplate(2, SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template, 1, 4, \"ngx-slider-tooltip-wrapper\", 29)(3, SliderComponent_span_28_span_3_Template, 1, 1, \"span\", 30)(4, SliderComponent_span_28_span_4_Template, 1, 1, \"span\", 31);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const t_r1 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(8, _c14, t_r1.selected))(\"ngStyle\", t_r1.style);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"template\", ctx_r1.tooltipTemplate)(\"tooltip\", t_r1.tooltip)(\"placement\", t_r1.tooltipPlacement);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", t_r1.value !== null && t_r1.value !== undefined);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", t_r1.legend !== null && t_r1.legend !== undefined && ctx_r1.allowUnsafeHtmlInSlider === false);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", t_r1.legend !== null && t_r1.legend !== undefined && (ctx_r1.allowUnsafeHtmlInSlider === null || ctx_r1.allowUnsafeHtmlInSlider === undefined || ctx_r1.allowUnsafeHtmlInSlider));\n }\n}\nvar LabelType = /*#__PURE__*/function (LabelType) {\n /** Label above low pointer */\n LabelType[LabelType[\"Low\"] = 0] = \"Low\";\n /** Label above high pointer */\n LabelType[LabelType[\"High\"] = 1] = \"High\";\n /** Label for minimum slider value */\n LabelType[LabelType[\"Floor\"] = 2] = \"Floor\";\n /** Label for maximum slider value */\n LabelType[LabelType[\"Ceil\"] = 3] = \"Ceil\";\n /** Label below legend tick */\n LabelType[LabelType[\"TickValue\"] = 4] = \"TickValue\";\n return LabelType;\n}(LabelType || {});\n/** Slider options */\nclass Options {\n /** Minimum value for a slider.\n Not applicable when using stepsArray. */\n floor = 0;\n /** Maximum value for a slider.\n Not applicable when using stepsArray. */\n ceil = null;\n /** Step between each value.\n Not applicable when using stepsArray. */\n step = 1;\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 = null;\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 = null;\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 = false;\n /** The minimum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n minLimit = null;\n /** The maximum value authorized on the slider.\n When using stepsArray, expressed as index into stepsArray. */\n maxLimit = null;\n /** Custom translate function. Use this if you want to translate values displayed\n on the slider. */\n translate = null;\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 = null;\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 = null;\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 = null;\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 = null;\n /** Set to true to bind the index of the selected item to value model and valueHigh model. */\n bindIndexForStepsArray = false;\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 = false;\n /** Same as draggableRange but the slider range can't be changed.\n Applies to range slider only. */\n draggableRangeOnly = false;\n /** Set to true to always show the selection bar before the slider handle. */\n showSelectionBar = false;\n /** Set to true to always show the selection bar after the slider handle. */\n showSelectionBarEnd = false;\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 = null;\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 = false;\n /** Set to true to hide pointer labels */\n hidePointerLabels = false;\n /** Set to true to hide min / max labels */\n hideLimitLabels = false;\n /** Set to false to disable the auto-hiding behavior of the limit labels. */\n autoHideLimitLabels = true;\n /** Set to true to make the slider read-only. */\n readOnly = false;\n /** Set to true to disable the slider. */\n disabled = false;\n /** Set to true to display a tick for each step of the slider. */\n showTicks = false;\n /** Set to true to display a tick and the step value for each step of the slider.. */\n showTicksValues = false;\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 = null;\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 = null;\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 = null;\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 = null;\n /** Same as ticksTooltip but for ticks values. */\n ticksValuesTooltip = null;\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 = false;\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 = null;\n /** Function that returns the color of a tick. showTicks must be enabled. */\n getTickColor = null;\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 = null;\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 = true;\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 = 1;\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 = 0;\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 = true;\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 = true;\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 = true;\n /** Set to true to prevent to user from switching the min and max handles. Applies to range slider only. */\n noSwitching = false;\n /** Set to true to only bind events on slider handles. */\n onlyBindHandles = false;\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 = false;\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 = false;\n /** Set to true to keep the slider labels inside the slider bounds. */\n boundPointerLabels = true;\n /** Set to true to use a logarithmic scale to display the slider. */\n logScale = false;\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 = null;\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 = null;\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 = 12;\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 = null;\n /** Use to add a label directly to the slider for accessibility. Adds the aria-label attribute. */\n ariaLabel = 'ngx-slider';\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 = null;\n /** Use to add a label directly to the slider range for accessibility. Adds the aria-label attribute. */\n ariaLabelHigh = 'ngx-slider-max';\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 = null;\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the handle */\n handleDimension = null;\n /** Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the bar */\n barDimension = null;\n /** Enable/disable CSS animations */\n animate = true;\n /** Enable/disable CSS animations while moving the slider */\n animateOnMove = false;\n}\nconst AllowUnsafeHtmlInSlider = new InjectionToken('AllowUnsafeHtmlInSlider');\n\n/** Pointer type */\nvar PointerType = /*#__PURE__*/function (PointerType) {\n /** Low pointer */\n PointerType[PointerType[\"Min\"] = 0] = \"Min\";\n /** High pointer */\n PointerType[PointerType[\"Max\"] = 1] = \"Max\";\n return PointerType;\n}(PointerType || {});\nclass ChangeContext {\n value;\n highValue;\n pointerType;\n}\n\n/**\n * Collection of functions to handle conversions/lookups of values\n */\nclass ValueHelper {\n static isNullOrUndefined(value) {\n return value === undefined || value === null;\n }\n static areArraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n static linearValueToPosition(val, minVal, maxVal) {\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n static logValueToPosition(val, minVal, maxVal) {\n val = Math.log(val);\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n static linearPositionToValue(percent, minVal, maxVal) {\n return percent * (maxVal - minVal) + minVal;\n }\n static logPositionToValue(percent, minVal, maxVal) {\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n const value = percent * (maxVal - minVal) + minVal;\n return Math.exp(value);\n }\n static findStepIndex(modelValue, stepsArray) {\n const differences = stepsArray.map(step => Math.abs(modelValue - step.value));\n let minDifferenceIndex = 0;\n for (let index = 0; index < stepsArray.length; index++) {\n if (differences[index] !== differences[minDifferenceIndex] && differences[index] < differences[minDifferenceIndex]) {\n minDifferenceIndex = index;\n }\n }\n return minDifferenceIndex;\n }\n}\n\n/** Helper with compatibility functions to support different browsers */\nclass CompatibilityHelper {\n /** Workaround for TouchEvent constructor sadly not being available on all browsers (e.g. Firefox, Safari) */\n static isTouchEvent(event) {\n if (window.TouchEvent !== undefined) {\n return event instanceof TouchEvent;\n }\n return event.touches !== undefined;\n }\n /** Detect presence of ResizeObserver API */\n static isResizeObserverAvailable() {\n return window.ResizeObserver !== undefined;\n }\n}\n\n/** Helper with mathematical functions */\nclass MathHelper {\n /* Round numbers to a given number of significant digits */\n static roundToPrecisionLimit(value, precisionLimit) {\n return +value.toPrecision(precisionLimit);\n }\n static isModuloWithinPrecisionLimit(value, modulo, precisionLimit) {\n const limit = Math.pow(10, -precisionLimit);\n return Math.abs(value % modulo) <= limit || Math.abs(Math.abs(value % modulo) - modulo) <= limit;\n }\n static clampToRange(value, floor, ceil) {\n return Math.min(Math.max(value, floor), ceil);\n }\n}\nclass EventListener {\n eventName = null;\n events = null;\n eventsSubscription = null;\n teardownCallback = null;\n}\n\n/**\n * Helper class to attach event listeners to DOM elements with debounce support using rxjs\n */\nclass EventListenerHelper {\n renderer;\n constructor(renderer) {\n this.renderer = renderer;\n }\n attachPassiveEventListener(nativeElement, eventName, callback, throttleInterval) {\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 // Angular doesn't support passive event handlers (yet), so we need to roll our own code using native functions\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n const observerCallback = event => {\n listener.events.next(event);\n };\n nativeElement.addEventListener(eventName, observerCallback, {\n passive: true,\n capture: false\n });\n listener.teardownCallback = () => {\n nativeElement.removeEventListener(eventName, observerCallback, {\n passive: true,\n capture: false\n });\n };\n listener.eventsSubscription = listener.events.pipe(!ValueHelper.isNullOrUndefined(throttleInterval) ? throttleTime(throttleInterval, undefined, {\n leading: true,\n trailing: true\n }) : tap(() => {}) // no-op\n ).subscribe(event => {\n callback(event);\n });\n return listener;\n }\n detachEventListener(eventListener) {\n if (!ValueHelper.isNullOrUndefined(eventListener.eventsSubscription)) {\n eventListener.eventsSubscription.unsubscribe();\n eventListener.eventsSubscription = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.events)) {\n eventListener.events.complete();\n eventListener.events = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.teardownCallback)) {\n eventListener.teardownCallback();\n eventListener.teardownCallback = null;\n }\n }\n attachEventListener(nativeElement, eventName, callback, throttleInterval) {\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n const observerCallback = event => {\n listener.events.next(event);\n };\n listener.teardownCallback = this.renderer.listen(nativeElement, eventName, observerCallback);\n listener.eventsSubscription = listener.events.pipe(!ValueHelper.isNullOrUndefined(throttleInterval) ? throttleTime(throttleInterval, undefined, {\n leading: true,\n trailing: true\n }) : tap(() => {}) // no-op\n ).subscribe(event => {\n callback(event);\n });\n return listener;\n }\n}\nlet SliderElementDirective = /*#__PURE__*/(() => {\n class SliderElementDirective {\n elemRef;\n renderer;\n changeDetectionRef;\n _position = 0;\n get position() {\n return this._position;\n }\n _dimension = 0;\n get dimension() {\n return this._dimension;\n }\n _alwaysHide = false;\n get alwaysHide() {\n return this._alwaysHide;\n }\n _vertical = false;\n get vertical() {\n return this._vertical;\n }\n _scale = 1;\n get scale() {\n return this._scale;\n }\n _rotate = 0;\n get rotate() {\n return this._rotate;\n }\n opacity = 1;\n visibility = 'visible';\n left = '';\n bottom = '';\n height = '';\n width = '';\n transform = '';\n eventListenerHelper;\n eventListeners = [];\n constructor(elemRef, renderer, changeDetectionRef) {\n this.elemRef = elemRef;\n this.renderer = renderer;\n this.changeDetectionRef = changeDetectionRef;\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n setAlwaysHide(hide) {\n this._alwaysHide = hide;\n if (hide) {\n this.visibility = 'hidden';\n } else {\n this.visibility = 'visible';\n }\n }\n hide() {\n this.opacity = 0;\n }\n show() {\n if (this.alwaysHide) {\n return;\n }\n this.opacity = 1;\n }\n isVisible() {\n if (this.alwaysHide) {\n return false;\n }\n return this.opacity !== 0;\n }\n setVertical(vertical) {\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 setScale(scale) {\n this._scale = scale;\n }\n setRotate(rotate) {\n this._rotate = rotate;\n this.transform = 'rotate(' + rotate + 'deg)';\n }\n getRotate() {\n return this._rotate;\n }\n // Set element left/top position depending on whether slider is horizontal or vertical\n setPosition(pos) {\n if (this._position !== pos && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\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 // Calculate element's width/height depending on whether slider is horizontal or vertical\n calculateDimension() {\n const val = 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 // Set element width/height depending on whether slider is horizontal or vertical\n setDimension(dim) {\n if (this._dimension !== dim && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\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 getBoundingClientRect() {\n return this.elemRef.nativeElement.getBoundingClientRect();\n }\n on(eventName, callback, debounceInterval) {\n const listener = this.eventListenerHelper.attachEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n onPassive(eventName, callback, debounceInterval) {\n const listener = this.eventListenerHelper.attachPassiveEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n off(eventName) {\n let listenersToKeep;\n let listenersToRemove;\n if (!ValueHelper.isNullOrUndefined(eventName)) {\n listenersToKeep = this.eventListeners.filter(event => event.eventName !== eventName);\n listenersToRemove = this.eventListeners.filter(event => event.eventName === eventName);\n } else {\n listenersToKeep = [];\n listenersToRemove = this.eventListeners;\n }\n for (const listener of listenersToRemove) {\n this.eventListenerHelper.detachEventListener(listener);\n }\n this.eventListeners = listenersToKeep;\n }\n isRefDestroyed() {\n return ValueHelper.isNullOrUndefined(this.changeDetectionRef) || this.changeDetectionRef['destroyed'];\n }\n static ɵfac = function SliderElementDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SliderElementDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SliderElementDirective,\n selectors: [[\"\", \"ngxSliderElement\", \"\"]],\n hostVars: 14,\n hostBindings: function SliderElementDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"opacity\", ctx.opacity)(\"visibility\", ctx.visibility)(\"left\", ctx.left)(\"bottom\", ctx.bottom)(\"height\", ctx.height)(\"width\", ctx.width)(\"transform\", ctx.transform);\n }\n },\n standalone: false\n });\n }\n return SliderElementDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SliderHandleDirective = /*#__PURE__*/(() => {\n class SliderHandleDirective extends SliderElementDirective {\n active = false;\n role = '';\n tabindex = '';\n ariaOrientation = '';\n ariaLabel = '';\n ariaLabelledBy = '';\n ariaValueNow = '';\n ariaValueText = '';\n ariaValueMin = '';\n ariaValueMax = '';\n focus() {\n this.elemRef.nativeElement.focus();\n }\n focusIfNeeded() {\n if (document.activeElement !== this.elemRef.nativeElement) {\n this.elemRef.nativeElement.focus();\n }\n }\n constructor(elemRef, renderer, changeDetectionRef) {\n super(elemRef, renderer, changeDetectionRef);\n }\n static ɵfac = function SliderHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SliderHandleDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SliderHandleDirective,\n selectors: [[\"\", \"ngxSliderHandle\", \"\"]],\n hostVars: 11,\n hostBindings: function SliderHandleDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx.tabindex)(\"aria-orientation\", ctx.ariaOrientation)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-valuenow\", ctx.ariaValueNow)(\"aria-valuetext\", ctx.ariaValueText)(\"aria-valuemin\", ctx.ariaValueMin)(\"aria-valuemax\", ctx.ariaValueMax);\n i0.ɵɵclassProp(\"ngx-slider-active\", ctx.active);\n }\n },\n standalone: false,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return SliderHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SliderLabelDirective = /*#__PURE__*/(() => {\n class SliderLabelDirective extends SliderElementDirective {\n allowUnsafeHtmlInSlider;\n _value = null;\n get value() {\n return this._value;\n }\n constructor(elemRef, renderer, changeDetectionRef, allowUnsafeHtmlInSlider) {\n super(elemRef, renderer, changeDetectionRef);\n this.allowUnsafeHtmlInSlider = allowUnsafeHtmlInSlider;\n }\n setValue(value) {\n let recalculateDimension = false;\n if (!this.alwaysHide && (ValueHelper.isNullOrUndefined(this.value) || this.value.length !== value.length || this.value.length > 0 && this.dimension === 0)) {\n recalculateDimension = true;\n }\n this._value = value;\n if (this.allowUnsafeHtmlInSlider === false) {\n this.elemRef.nativeElement.innerText = value;\n } else {\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 static ɵfac = function SliderLabelDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SliderLabelDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(AllowUnsafeHtmlInSlider, 8));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SliderLabelDirective,\n selectors: [[\"\", \"ngxSliderLabel\", \"\"]],\n standalone: false,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return SliderLabelDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet TooltipWrapperComponent = /*#__PURE__*/(() => {\n class TooltipWrapperComponent {\n template;\n tooltip;\n placement;\n content;\n static ɵfac = function TooltipWrapperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TooltipWrapperComponent)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TooltipWrapperComponent,\n selectors: [[\"ngx-slider-tooltip-wrapper\"]],\n inputs: {\n template: \"template\",\n tooltip: \"tooltip\",\n placement: \"placement\",\n content: \"content\"\n },\n standalone: false,\n decls: 2,\n vars: 2,\n consts: [[4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ngx-slider-inner-tooltip\"]],\n template: function TooltipWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_Template, 2, 6, \"ng-container\", 0)(1, TooltipWrapperComponent_ng_container_1_Template, 3, 3, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.template);\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n styles: [\".ngx-slider-inner-tooltip[_ngcontent-%COMP%]{height:100%}\"]\n });\n }\n return TooltipWrapperComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass Tick {\n selected = false;\n style = {};\n tooltip = null;\n tooltipPlacement = null;\n value = null;\n valueTooltip = null;\n valueTooltipPlacement = null;\n legend = null;\n}\nclass Dragging {\n active = false;\n value = 0;\n difference = 0;\n position = 0;\n lowLimit = 0;\n highLimit = 0;\n}\nclass ModelValues {\n value;\n highValue;\n static compare(x, y) {\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}\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;\n static compare(x, y) {\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}\nclass InputModelChange extends ModelChange {\n controlAccessorChange;\n internalChange;\n}\nclass OutputModelChange extends ModelChange {\n controlAccessorChange;\n userEventInitiated;\n}\nconst NGX_SLIDER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n};\nlet SliderComponent = /*#__PURE__*/(() => {\n class SliderComponent {\n renderer;\n elementRef;\n changeDetectionRef;\n zone;\n allowUnsafeHtmlInSlider;\n // Add ngx-slider class to the host element - this is static, should never change\n sliderElementNgxSliderClass = true;\n // Model for low value of slider. For simple slider, this is the only input. For range slider, this is the low value.\n value = null;\n // Output for low value slider to support two-way bindings\n valueChange = new EventEmitter();\n // Model for high value of slider. Not used in simple slider. For range slider, this is the high value.\n highValue = null;\n // Output for high value slider to support two-way bindings\n highValueChange = new EventEmitter();\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 options = new Options();\n // Event emitted when user starts interaction with the slider\n userChangeStart = new EventEmitter();\n // Event emitted on each change coming from user interaction\n userChange = new EventEmitter();\n // Event emitted when user finishes interaction with the slider\n userChangeEnd = new EventEmitter();\n manualRefreshSubscription;\n // Input event that triggers slider refresh (re-positioning of slider elements)\n set manualRefresh(manualRefresh) {\n this.unsubscribeManualRefresh();\n this.manualRefreshSubscription = manualRefresh.subscribe(() => {\n setTimeout(() => this.calculateViewDimensionsAndDetectChanges());\n });\n }\n triggerFocusSubscription;\n // Input event that triggers setting focus on given slider handle\n set triggerFocus(triggerFocus) {\n this.unsubscribeTriggerFocus();\n this.triggerFocusSubscription = triggerFocus.subscribe(pointerType => {\n this.focusPointer(pointerType);\n });\n }\n cancelUserChangeSubscription;\n set cancelUserChange(cancelUserChange) {\n this.unsubscribeCancelUserChange();\n this.cancelUserChangeSubscription = cancelUserChange.subscribe(() => {\n if (this.moving) {\n this.positionTrackingHandle(this.preStartHandleValue);\n this.forceEnd(true);\n }\n });\n }\n // Slider type, true means range slider\n get range() {\n return !ValueHelper.isNullOrUndefined(this.value) && !ValueHelper.isNullOrUndefined(this.highValue);\n }\n // Set to true if init method already executed\n initHasRun = false;\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 inputModelChangeSubject = new Subject();\n inputModelChangeSubscription = null;\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 outputModelChangeSubject = new Subject();\n outputModelChangeSubscription = null;\n // Low value synced to model low value\n viewLowValue = null;\n // High value synced to model high value\n viewHighValue = null;\n // Options synced to model options, based on defaults\n viewOptions = new Options();\n // Half of the width or height of the slider handles\n handleHalfDimension = 0;\n // Maximum position the slider handle can have\n maxHandlePosition = 0;\n // Which handle is currently tracked for move events\n currentTrackingPointer = null;\n // Internal variable to keep track of the focus element\n currentFocusPointer = null;\n // Used to call onStart on the first keydown event\n firstKeyDown = false;\n // Current touch id of touch event being handled\n touchId = null;\n // Values recorded when first dragging the bar\n dragging = new Dragging();\n // Value of hanlde at the beginning of onStart()\n preStartHandleValue = null;\n /* Slider DOM elements */\n // Left selection bar outside two handles\n leftOuterSelectionBarElement;\n // Right selection bar outside two handles\n rightOuterSelectionBarElement;\n // The whole slider bar\n fullBarElement;\n // Highlight between two handles\n selectionBarElement;\n // Left slider handle\n minHandleElement;\n // Right slider handle\n maxHandleElement;\n // Floor label\n floorLabelElement;\n // Ceiling label\n ceilLabelElement;\n // Label above the low value\n minHandleLabelElement;\n // Label above the high value\n maxHandleLabelElement;\n // Combined label\n combinedLabelElement;\n // The ticks\n ticksElement;\n // Optional custom template for displaying tooltips\n tooltipTemplate;\n // Host element class bindings\n sliderElementVerticalClass = false;\n sliderElementAnimateClass = false;\n sliderElementWithLegendClass = false;\n sliderElementDisabledAttr = null;\n sliderElementAriaLabel = 'ngx-slider';\n // CSS styles and class flags\n barStyle = {};\n minPointerStyle = {};\n maxPointerStyle = {};\n fullBarTransparentClass = false;\n selectionBarDraggableClass = false;\n ticksUnderValuesClass = false;\n // Whether to show/hide ticks\n get showTicks() {\n return this.viewOptions.showTicks;\n }\n /* If tickStep is set or ticksArray is specified.\n In this case, ticks values should be displayed below the slider. */\n intermediateTicks = false;\n // Ticks array as displayed in view\n ticks = [];\n // Event listeners\n eventListenerHelper = null;\n onMoveEventListener = null;\n onEndEventListener = null;\n // Whether currently moving the slider (between onStart() and onEnd())\n moving = false;\n // Observer for slider element resize events\n resizeObserver = null;\n // Callbacks for reactive forms support\n onTouchedCallback = null;\n onChangeCallback = null;\n constructor(renderer, elementRef, changeDetectionRef, zone, allowUnsafeHtmlInSlider) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.changeDetectionRef = changeDetectionRef;\n this.zone = zone;\n this.allowUnsafeHtmlInSlider = allowUnsafeHtmlInSlider;\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n // OnInit interface\n ngOnInit() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\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 this.updateDisabledState();\n this.updateVerticalState();\n this.updateAriaLabel();\n }\n // AfterViewInit interface\n ngAfterViewInit() {\n this.applyOptions();\n this.subscribeInputModelChangeSubject();\n this.subscribeOutputModelChangeSubject();\n // Once we apply options, we need to normalise model values for the first time\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n } else {\n this.viewHighValue = null;\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 this.subscribeResizeObserver();\n this.initHasRun = true;\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 // OnChanges interface\n ngOnChanges(changes) {\n // Always apply options first\n if (!ValueHelper.isNullOrUndefined(changes.options) && JSON.stringify(changes.options.previousValue) !== JSON.stringify(changes.options.currentValue)) {\n this.onChangeOptions();\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 controlAccessorChange: false,\n forceChange: false,\n internalChange: false\n });\n }\n }\n // OnDestroy interface\n ngOnDestroy() {\n this.unbindEvents();\n this.unsubscribeResizeObserver();\n this.unsubscribeInputModelChangeSubject();\n this.unsubscribeOutputModelChangeSubject();\n this.unsubscribeManualRefresh();\n this.unsubscribeTriggerFocus();\n }\n // ControlValueAccessor interface\n writeValue(obj) {\n if (obj instanceof Array) {\n this.value = obj[0];\n this.highValue = obj[1];\n } else {\n this.value = obj;\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 controlAccessorChange: true\n });\n }\n // ControlValueAccessor interface\n registerOnChange(onChangeCallback) {\n this.onChangeCallback = onChangeCallback;\n }\n // ControlValueAccessor interface\n registerOnTouched(onTouchedCallback) {\n this.onTouchedCallback = onTouchedCallback;\n }\n // ControlValueAccessor interface\n setDisabledState(isDisabled) {\n this.viewOptions.disabled = isDisabled;\n this.updateDisabledState();\n if (this.initHasRun) {\n this.manageEventsBindings();\n }\n }\n setAriaLabel(ariaLabel) {\n this.viewOptions.ariaLabel = ariaLabel;\n this.updateAriaLabel();\n }\n onResize(event) {\n this.calculateViewDimensionsAndDetectChanges();\n }\n subscribeInputModelChangeSubject() {\n this.inputModelChangeSubscription = this.inputModelChangeSubject.pipe(distinctUntilChanged(ModelChange.compare),\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 => !modelChange.forceChange && !modelChange.internalChange)).subscribe(modelChange => this.applyInputModelChange(modelChange));\n }\n subscribeOutputModelChangeSubject() {\n this.outputModelChangeSubscription = this.outputModelChangeSubject.pipe(distinctUntilChanged(ModelChange.compare)).subscribe(modelChange => this.publishOutputModelChange(modelChange));\n }\n subscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable()) {\n this.resizeObserver = new ResizeObserver(() => this.calculateViewDimensionsAndDetectChanges());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n unsubscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable() && this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n unsubscribeOnMove() {\n if (!ValueHelper.isNullOrUndefined(this.onMoveEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onMoveEventListener);\n this.onMoveEventListener = null;\n }\n }\n unsubscribeOnEnd() {\n if (!ValueHelper.isNullOrUndefined(this.onEndEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onEndEventListener);\n this.onEndEventListener = null;\n }\n }\n unsubscribeInputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.inputModelChangeSubscription)) {\n this.inputModelChangeSubscription.unsubscribe();\n this.inputModelChangeSubscription = null;\n }\n }\n unsubscribeOutputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.outputModelChangeSubscription)) {\n this.outputModelChangeSubscription.unsubscribe();\n this.outputModelChangeSubscription = null;\n }\n }\n unsubscribeManualRefresh() {\n if (!ValueHelper.isNullOrUndefined(this.manualRefreshSubscription)) {\n this.manualRefreshSubscription.unsubscribe();\n this.manualRefreshSubscription = null;\n }\n }\n unsubscribeTriggerFocus() {\n if (!ValueHelper.isNullOrUndefined(this.triggerFocusSubscription)) {\n this.triggerFocusSubscription.unsubscribe();\n this.triggerFocusSubscription = null;\n }\n }\n unsubscribeCancelUserChange() {\n if (!ValueHelper.isNullOrUndefined(this.cancelUserChangeSubscription)) {\n this.cancelUserChangeSubscription.unsubscribe();\n this.cancelUserChangeSubscription = null;\n }\n }\n getPointerElement(pointerType) {\n if (pointerType === PointerType.Min) {\n return this.minHandleElement;\n } else if (pointerType === PointerType.Max) {\n return this.maxHandleElement;\n }\n return null;\n }\n getCurrentTrackingValue() {\n if (this.currentTrackingPointer === PointerType.Min) {\n return this.viewLowValue;\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return this.viewHighValue;\n }\n return null;\n }\n modelValueToViewValue(modelValue) {\n if (ValueHelper.isNullOrUndefined(modelValue)) {\n return NaN;\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 viewValueToModelValue(viewValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return this.getStepValue(viewValue);\n }\n return viewValue;\n }\n getStepValue(sliderValue) {\n const step = this.viewOptions.stepsArray[sliderValue];\n return !ValueHelper.isNullOrUndefined(step) ? step.value : NaN;\n }\n applyViewChange() {\n this.value = this.viewValueToModelValue(this.viewLowValue);\n if (this.range) {\n this.highValue = this.viewValueToModelValue(this.viewHighValue);\n }\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n controlAccessorChange: false,\n userEventInitiated: true,\n forceChange: false\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 controlAccessorChange: false,\n forceChange: false,\n internalChange: true\n });\n }\n // Apply model change to the slider view\n applyInputModelChange(modelChange) {\n const normalisedModelChange = this.normaliseModelValues(modelChange);\n // If normalised model change is different, apply the change to the model values\n const normalisationChange = !ModelValues.compare(modelChange, normalisedModelChange);\n if (normalisationChange) {\n this.value = normalisedModelChange.value;\n this.highValue = normalisedModelChange.highValue;\n }\n this.viewLowValue = this.modelValueToViewValue(normalisedModelChange.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(normalisedModelChange.highValue);\n } else {\n this.viewHighValue = null;\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 // 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 controlAccessorChange: modelChange.controlAccessorChange,\n forceChange: normalisationChange,\n userEventInitiated: false\n });\n }\n // Publish model change to output event emitters and registered callbacks\n publishOutputModelChange(modelChange) {\n const emitOutputs = () => {\n this.valueChange.emit(modelChange.value);\n if (this.range) {\n this.highValueChange.emit(modelChange.highValue);\n }\n // If this change is coming from a control accessor (i.e. angular called `writeValue`)\n // then we do not want to call the angular callbacks.\n if (modelChange.controlAccessorChange) {\n return;\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 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 normaliseModelValues(input) {\n const normalisedInput = new ModelValues();\n normalisedInput.value = input.value;\n normalisedInput.highValue = input.highValue;\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 = ValueHelper.findStepIndex(normalisedInput.value, this.viewOptions.stepsArray);\n normalisedInput.value = this.viewOptions.stepsArray[valueIndex].value;\n if (this.range) {\n const highValueIndex = ValueHelper.findStepIndex(normalisedInput.highValue, this.viewOptions.stepsArray);\n normalisedInput.highValue = this.viewOptions.stepsArray[highValueIndex].value;\n }\n }\n return normalisedInput;\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 if (this.viewOptions.enforceRange) {\n normalisedInput.value = MathHelper.clampToRange(normalisedInput.value, this.viewOptions.floor, this.viewOptions.ceil);\n if (this.range) {\n normalisedInput.highValue = MathHelper.clampToRange(normalisedInput.highValue, this.viewOptions.floor, this.viewOptions.ceil);\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 return normalisedInput;\n }\n renormaliseModelValues() {\n const previousModelValues = {\n value: this.value,\n highValue: this.highValue\n };\n const normalisedModelValues = this.normaliseModelValues(previousModelValues);\n if (!ModelValues.compare(normalisedModelValues, previousModelValues)) {\n this.value = normalisedModelValues.value;\n this.highValue = normalisedModelValues.highValue;\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n controlAccessorChange: false,\n forceChange: true,\n userEventInitiated: false\n });\n }\n }\n onChangeOptions() {\n if (!this.initHasRun) {\n return;\n }\n const previousOptionsInfluencingEventBindings = this.getOptionsInfluencingEventBindings(this.viewOptions);\n this.applyOptions();\n const newOptionsInfluencingEventBindings = 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 = !ValueHelper.areArraysEqual(previousOptionsInfluencingEventBindings, newOptionsInfluencingEventBindings);\n // With new options, we need to re-normalise model values if necessary\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n } else {\n this.viewHighValue = null;\n }\n this.resetSlider(rebindEvents);\n }\n // Read the user options and apply them to the slider model\n applyOptions() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\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 this.viewOptions.showTicks = this.viewOptions.showTicks || this.viewOptions.showTicksValues || !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray);\n if (this.viewOptions.showTicks && (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) || !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray))) {\n this.intermediateTicks = true;\n }\n this.viewOptions.showSelectionBar = this.viewOptions.showSelectionBar || this.viewOptions.showSelectionBarEnd || !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n this.applyStepsArrayOptions();\n } else {\n this.applyFloorCeilOptions();\n }\n if (ValueHelper.isNullOrUndefined(this.viewOptions.combineLabels)) {\n this.viewOptions.combineLabels = (minValue, maxValue) => {\n return minValue + ' - ' + maxValue;\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 applyStepsArrayOptions() {\n this.viewOptions.floor = 0;\n this.viewOptions.ceil = this.viewOptions.stepsArray.length - 1;\n this.viewOptions.step = 1;\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = modelValue => {\n if (this.viewOptions.bindIndexForStepsArray) {\n return String(this.getStepValue(modelValue));\n }\n return String(modelValue);\n };\n }\n }\n applyFloorCeilOptions() {\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 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 if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = value => String(value);\n }\n }\n // Resets slider\n resetSlider(rebindEvents = true) {\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 // Sets focus on the specified pointer\n focusPointer(pointerType) {\n // If not supplied, use min pointer as default\n if (pointerType !== PointerType.Min && pointerType !== PointerType.Max) {\n pointerType = PointerType.Min;\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 refocusPointerIfNeeded() {\n if (!ValueHelper.isNullOrUndefined(this.currentFocusPointer)) {\n const element = this.getPointerElement(this.currentFocusPointer);\n element.focusIfNeeded();\n }\n }\n // Update each elements style based on options\n manageElementsStyle() {\n this.updateScale();\n this.floorLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n this.ceilLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n const hideLabelsForTicks = 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 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 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(() => {\n this.resetSlider();\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(() => {\n this.sliderElementAnimateClass = this.viewOptions.animate;\n });\n }\n this.updateRotate();\n }\n // Manage the events bindings based on readOnly and disabled options\n manageEventsBindings() {\n if (this.viewOptions.disabled || this.viewOptions.readOnly) {\n this.unbindEvents();\n } else {\n this.bindEvents();\n }\n }\n // Set the disabled state based on disabled option\n updateDisabledState() {\n this.sliderElementDisabledAttr = this.viewOptions.disabled ? 'disabled' : null;\n }\n // Set the aria-label state based on ariaLabel option\n updateAriaLabel() {\n this.sliderElementAriaLabel = this.viewOptions.ariaLabel || 'nxg-slider';\n }\n // Set vertical state based on vertical option\n updateVerticalState() {\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 updateScale() {\n for (const element of this.getAllSliderElements()) {\n element.setScale(this.viewOptions.scale);\n }\n }\n updateRotate() {\n for (const element of this.getAllSliderElements()) {\n element.setRotate(this.viewOptions.rotate);\n }\n }\n getAllSliderElements() {\n return [this.leftOuterSelectionBarElement, this.rightOuterSelectionBarElement, this.fullBarElement, this.selectionBarElement, this.minHandleElement, this.maxHandleElement, this.floorLabelElement, this.ceilLabelElement, this.minHandleLabelElement, this.maxHandleLabelElement, this.combinedLabelElement, this.ticksElement];\n }\n // Initialize slider handles positions and labels\n // Run only once during initialization and every time view port changes size\n initHandles() {\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\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 this.updateSelectionBar();\n if (this.range) {\n this.updateCombinedLabel();\n }\n this.updateTicksScale();\n }\n // Adds accessibility attributes, run only once during initialization\n addAccessibility() {\n this.updateAriaAttributes();\n this.minHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.minHandleElement.tabindex = '0';\n } else {\n this.minHandleElement.tabindex = '';\n }\n this.minHandleElement.ariaOrientation = this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\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 if (this.range) {\n this.maxHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport && !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.maxHandleElement.tabindex = '0';\n } else {\n this.maxHandleElement.tabindex = '';\n }\n this.maxHandleElement.ariaOrientation = this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? 'vertical' : 'horizontal';\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 // Updates aria attributes according to current values\n updateAriaAttributes() {\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 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 // Calculate dimensions that are dependent on view port size\n // Run once during initialization and every time view port changes size.\n calculateViewDimensions() {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.handleDimension)) {\n this.minHandleElement.setDimension(this.viewOptions.handleDimension);\n } else {\n this.minHandleElement.calculateDimension();\n }\n const handleWidth = this.minHandleElement.dimension;\n this.handleHalfDimension = handleWidth / 2;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.barDimension)) {\n this.fullBarElement.setDimension(this.viewOptions.barDimension);\n } else {\n this.fullBarElement.calculateDimension();\n }\n this.maxHandlePosition = this.fullBarElement.dimension - handleWidth;\n if (this.initHasRun) {\n this.updateFloorLabel();\n this.updateCeilLabel();\n this.initHandles();\n }\n }\n calculateViewDimensionsAndDetectChanges() {\n this.calculateViewDimensions();\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * If the slider reference is already destroyed\n * @returns boolean - true if ref is destroyed\n */\n isRefDestroyed() {\n return this.changeDetectionRef['destroyed'];\n }\n // Update the ticks position\n updateTicksScale() {\n if (!this.viewOptions.showTicks && this.sliderElementWithLegendClass) {\n setTimeout(() => {\n this.sliderElementWithLegendClass = false;\n });\n return;\n }\n const ticksArray = !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray) ? this.viewOptions.ticksArray : this.getTicksArray();\n const translate = this.viewOptions.vertical ? 'translateY' : 'translateX';\n if (this.viewOptions.rightToLeft) {\n ticksArray.reverse();\n }\n const tickValueStep = !ValueHelper.isNullOrUndefined(this.viewOptions.tickValueStep) ? this.viewOptions.tickValueStep : !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ? this.viewOptions.tickStep : this.viewOptions.step;\n let hasAtLeastOneLegend = false;\n const newTicks = ticksArray.map(value => {\n let position = this.valueToPosition(value);\n if (this.viewOptions.vertical) {\n position = this.maxHandlePosition - position;\n }\n const translation = translate + '(' + Math.round(position) + 'px)';\n const 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 (this.viewOptions.showTicksValues && !ValueHelper.isNullOrUndefined(tickValueStep) && MathHelper.isModuloWithinPrecisionLimit(value, tickValueStep, this.viewOptions.precisionLimit)) {\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 let legend = null;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n const step = 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 return tick;\n });\n if (this.sliderElementWithLegendClass !== hasAtLeastOneLegend) {\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 = 0; i < newTicks.length; ++i) {\n Object.assign(this.ticks[i], newTicks[i]);\n }\n } else {\n this.ticks = newTicks;\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n }\n getTicksArray() {\n if (!this.viewOptions.showTicks) {\n return [];\n }\n const step = !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ? this.viewOptions.tickStep : this.viewOptions.step;\n const ticksArray = [];\n const numberOfValues = 1 + Math.floor(MathHelper.roundToPrecisionLimit(Math.abs(this.viewOptions.ceil - this.viewOptions.floor) / step, this.viewOptions.precisionLimit));\n for (let index = 0; index < numberOfValues; ++index) {\n ticksArray.push(MathHelper.roundToPrecisionLimit(this.viewOptions.floor + step * index, this.viewOptions.precisionLimit));\n }\n return ticksArray;\n }\n isTickSelected(value) {\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 if (this.range && value >= this.viewLowValue && value <= this.viewHighValue) {\n return true;\n }\n return false;\n }\n // Update position of the floor label\n updateFloorLabel() {\n if (!this.floorLabelElement.alwaysHide) {\n this.floorLabelElement.setValue(this.getDisplayValue(this.viewOptions.floor, LabelType.Floor));\n this.floorLabelElement.calculateDimension();\n const position = this.viewOptions.rightToLeft ? this.fullBarElement.dimension - this.floorLabelElement.dimension : 0;\n this.floorLabelElement.setPosition(position);\n }\n }\n // Update position of the ceiling label\n updateCeilLabel() {\n if (!this.ceilLabelElement.alwaysHide) {\n this.ceilLabelElement.setValue(this.getDisplayValue(this.viewOptions.ceil, LabelType.Ceil));\n this.ceilLabelElement.calculateDimension();\n const position = this.viewOptions.rightToLeft ? 0 : this.fullBarElement.dimension - this.ceilLabelElement.dimension;\n this.ceilLabelElement.setPosition(position);\n }\n }\n // Update slider handles and label positions\n updateHandles(which, newPos) {\n if (which === PointerType.Min) {\n this.updateLowHandle(newPos);\n } else if (which === PointerType.Max) {\n this.updateHighHandle(newPos);\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n if (this.range) {\n this.updateCombinedLabel();\n }\n }\n // Helper function to work out the position for handle labels depending on RTL or not\n getHandleLabelPos(labelType, newPos) {\n const labelDimension = labelType === PointerType.Min ? this.minHandleLabelElement.dimension : this.maxHandleLabelElement.dimension;\n const nearHandlePos = newPos - labelDimension / 2 + this.handleHalfDimension;\n const endOfBarPos = this.fullBarElement.dimension - labelDimension;\n if (!this.viewOptions.boundPointerLabels) {\n return nearHandlePos;\n }\n if (this.viewOptions.rightToLeft && labelType === PointerType.Min || !this.viewOptions.rightToLeft && labelType === PointerType.Max) {\n return Math.min(nearHandlePos, endOfBarPos);\n } else {\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\n }\n }\n // Update low slider handle position and label\n updateLowHandle(newPos) {\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 if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.minPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Min)\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n // Update high slider handle position and label\n updateHighHandle(newPos) {\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 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 // Show/hide floor/ceiling label\n updateFloorAndCeilLabelsVisibility() {\n // Show based only on hideLimitLabels if pointer labels are hidden\n if (this.viewOptions.hidePointerLabels) {\n return;\n }\n let floorLabelHidden = false;\n let ceilLabelHidden = false;\n const isMinLabelAtFloor = this.isLabelBelowFloorLabel(this.minHandleLabelElement);\n const isMinLabelAtCeil = this.isLabelAboveCeilLabel(this.minHandleLabelElement);\n const isMaxLabelAtCeil = this.isLabelAboveCeilLabel(this.maxHandleLabelElement);\n const isCombinedLabelAtFloor = this.isLabelBelowFloorLabel(this.combinedLabelElement);\n const isCombinedLabelAtCeil = this.isLabelAboveCeilLabel(this.combinedLabelElement);\n if (isMinLabelAtFloor) {\n floorLabelHidden = true;\n this.floorLabelElement.hide();\n } else {\n floorLabelHidden = false;\n this.floorLabelElement.show();\n }\n if (isMinLabelAtCeil) {\n ceilLabelHidden = true;\n this.ceilLabelElement.hide();\n } else {\n ceilLabelHidden = false;\n this.ceilLabelElement.show();\n }\n if (this.range) {\n const hideCeil = this.combinedLabelElement.isVisible() ? isCombinedLabelAtCeil : isMaxLabelAtCeil;\n const hideFloor = this.combinedLabelElement.isVisible() ? isCombinedLabelAtFloor : isMinLabelAtFloor;\n if (hideCeil) {\n this.ceilLabelElement.hide();\n } else if (!ceilLabelHidden) {\n this.ceilLabelElement.show();\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 isLabelBelowFloorLabel(label) {\n const pos = label.position;\n const dim = label.dimension;\n const floorPos = this.floorLabelElement.position;\n const floorDim = this.floorLabelElement.dimension;\n return this.viewOptions.rightToLeft ? pos + dim >= floorPos - 2 : pos <= floorPos + floorDim + 2;\n }\n isLabelAboveCeilLabel(label) {\n const pos = label.position;\n const dim = label.dimension;\n const ceilPos = this.ceilLabelElement.position;\n const ceilDim = this.ceilLabelElement.dimension;\n return this.viewOptions.rightToLeft ? pos <= ceilPos + ceilDim + 2 : pos + dim >= ceilPos - 2;\n }\n // Update slider selection bar, combined label and range label\n updateSelectionBar() {\n let position = 0;\n let dimension = 0;\n const isSelectionBarFromRight = this.viewOptions.rightToLeft ? !this.viewOptions.showSelectionBarEnd : this.viewOptions.showSelectionBarEnd;\n const positionForRange = this.viewOptions.rightToLeft ? this.maxHandleElement.position + this.handleHalfDimension : this.minHandleElement.position + this.handleHalfDimension;\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 = this.valueToPosition(center);\n const isModelGreaterThanCenter = this.viewOptions.rightToLeft ? this.viewLowValue <= center : 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(Math.abs(this.maxHandlePosition - this.minHandleElement.position) + this.handleHalfDimension);\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 = this.getSelectionBarColor();\n this.barStyle = {\n backgroundColor: color\n };\n } else if (!ValueHelper.isNullOrUndefined(this.viewOptions.selectionBarGradient)) {\n const offset = !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue) ? this.valueToPosition(this.viewOptions.showSelectionBarFromValue) : 0;\n const reversed = offset - position > 0 && !isSelectionBarFromRight || offset - position <= 0 && isSelectionBarFromRight;\n const direction = this.viewOptions.vertical ? reversed ? 'bottom' : 'top' : reversed ? 'left' : 'right';\n this.barStyle = {\n backgroundImage: 'linear-gradient(to ' + direction + ', ' + this.viewOptions.selectionBarGradient.from + ' 0%,' + this.viewOptions.selectionBarGradient.to + ' 100%)'\n };\n if (this.viewOptions.vertical) {\n this.barStyle.backgroundPosition = '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 // Wrapper around the getSelectionBarColor of the user to pass to correct parameters\n getSelectionBarColor() {\n if (this.range) {\n return this.viewOptions.getSelectionBarColor(this.value, this.highValue);\n }\n return this.viewOptions.getSelectionBarColor(this.value);\n }\n // Wrapper around the getPointerColor of the user to pass to correct parameters\n getPointerColor(pointerType) {\n if (pointerType === PointerType.Max) {\n return this.viewOptions.getPointerColor(this.highValue, pointerType);\n }\n return this.viewOptions.getPointerColor(this.value, pointerType);\n }\n // Wrapper around the getTickColor of the user to pass to correct parameters\n getTickColor(value) {\n return this.viewOptions.getTickColor(value);\n }\n // Update combined label position and value\n updateCombinedLabel() {\n let isLabelOverlap = null;\n if (this.viewOptions.rightToLeft) {\n isLabelOverlap = this.minHandleLabelElement.position - this.minHandleLabelElement.dimension - 10 <= this.maxHandleLabelElement.position;\n } else {\n isLabelOverlap = this.minHandleLabelElement.position + this.minHandleLabelElement.dimension + 10 >= this.maxHandleLabelElement.position;\n }\n if (isLabelOverlap) {\n const lowDisplayValue = this.getDisplayValue(this.viewLowValue, LabelType.Low);\n const highDisplayValue = this.getDisplayValue(this.viewHighValue, LabelType.High);\n const combinedLabelValue = this.viewOptions.rightToLeft ? this.viewOptions.combineLabels(highDisplayValue, lowDisplayValue) : this.viewOptions.combineLabels(lowDisplayValue, highDisplayValue);\n this.combinedLabelElement.setValue(combinedLabelValue);\n const pos = this.viewOptions.boundPointerLabels ? Math.min(Math.max(this.selectionBarElement.position + this.selectionBarElement.dimension / 2 - this.combinedLabelElement.dimension / 2, 0), this.fullBarElement.dimension - this.combinedLabelElement.dimension) : this.selectionBarElement.position + this.selectionBarElement.dimension / 2 - this.combinedLabelElement.dimension / 2;\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 // Return the translated value if a translate function is provided else the original value\n getDisplayValue(value, which) {\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 // Round value to step and precision based on minValue\n roundStep(value, customStep) {\n const step = !ValueHelper.isNullOrUndefined(customStep) ? customStep : this.viewOptions.step;\n let steppedDifference = MathHelper.roundToPrecisionLimit((value - this.viewOptions.floor) / step, this.viewOptions.precisionLimit);\n steppedDifference = Math.round(steppedDifference) * step;\n return MathHelper.roundToPrecisionLimit(this.viewOptions.floor + steppedDifference, this.viewOptions.precisionLimit);\n }\n // Translate value to pixel position\n valueToPosition(val) {\n let fn = 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 val = MathHelper.clampToRange(val, this.viewOptions.floor, this.viewOptions.ceil);\n let percent = 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 // Translate position to model value\n positionToValue(position) {\n let percent = position / this.maxHandlePosition;\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n let fn = 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 = fn(percent, this.viewOptions.floor, this.viewOptions.ceil);\n return !ValueHelper.isNullOrUndefined(value) ? value : 0;\n }\n // Get the X-coordinate or Y-coordinate of an event\n getEventXY(event, targetTouchId) {\n if (event instanceof MouseEvent) {\n return this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? event.clientY : event.clientX;\n }\n let touchIndex = 0;\n const touches = event.touches;\n if (!ValueHelper.isNullOrUndefined(targetTouchId)) {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === targetTouchId) {\n touchIndex = i;\n break;\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 ? touches[touchIndex].clientY : touches[touchIndex].clientX;\n }\n // Compute the event position depending on whether the slider is horizontal or vertical\n getEventPosition(event, targetTouchId) {\n const sliderElementBoundingRect = this.elementRef.nativeElement.getBoundingClientRect();\n const sliderPos = this.viewOptions.vertical || this.viewOptions.rotate !== 0 ? sliderElementBoundingRect.bottom : sliderElementBoundingRect.left;\n let eventPos = 0;\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 return eventPos * this.viewOptions.scale - this.handleHalfDimension;\n }\n // Get the handle closest to an event\n getNearestHandle(event) {\n if (!this.range) {\n return PointerType.Min;\n }\n const position = this.getEventPosition(event);\n const distanceMin = Math.abs(position - this.minHandleElement.position);\n const distanceMax = Math.abs(position - this.maxHandleElement.position);\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 // Bind mouse and touch events to slider handles\n bindEvents() {\n const draggableRange = this.viewOptions.draggableRange;\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.on('mousedown', event => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.on('mousedown', event => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.on('mousedown', event => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n } else {\n this.minHandleElement.on('mousedown', event => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.on('mousedown', event => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.on('mousedown', event => this.onStart(null, event, true, true, true));\n this.ticksElement.on('mousedown', event => this.onStart(null, event, true, true, true, true));\n }\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.onPassive('touchstart', event => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.onPassive('touchstart', event => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.onPassive('touchstart', event => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n } else {\n this.minHandleElement.onPassive('touchstart', event => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.onPassive('touchstart', event => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.onPassive('touchstart', event => this.onStart(null, event, true, true, true));\n this.ticksElement.onPassive('touchstart', event => this.onStart(null, event, false, false, true, true));\n }\n }\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement.on('focus', () => this.onPointerFocus(PointerType.Min));\n if (this.range) {\n this.maxHandleElement.on('focus', () => this.onPointerFocus(PointerType.Max));\n }\n }\n }\n getOptionsInfluencingEventBindings(options) {\n return [options.disabled, options.readOnly, options.draggableRange, options.draggableRangeOnly, options.onlyBindHandles, options.keyboardSupport];\n }\n // Unbind mouse and touch events to slider handles\n unbindEvents() {\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n for (const element of this.getAllSliderElements()) {\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.off();\n }\n }\n }\n onBarStart(pointerType, draggableRange, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\n if (draggableRange) {\n this.onDragStart(pointerType, event, bindMove, bindEnd);\n } else {\n this.onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd);\n }\n }\n // onStart event handler\n onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\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 this.moving = false;\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 if (ValueHelper.isNullOrUndefined(pointerType)) {\n pointerType = this.getNearestHandle(event);\n }\n this.currentTrackingPointer = pointerType;\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.active = true;\n // Store currentTrackingValue as soon as it is available to allow\n // the slide to be canceled. (E.g. on scroll detected.)\n this.preStartHandleValue = this.getCurrentTrackingValue();\n if (this.viewOptions.keyboardSupport) {\n pointerElement.focus();\n }\n if (bindMove) {\n this.unsubscribeOnMove();\n const onMoveCallback = e => this.dragging.active ? this.onDragMove(e) : this.onMove(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onMoveEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchmove', onMoveCallback);\n } else {\n this.onMoveEventListener = this.eventListenerHelper.attachEventListener(document, 'mousemove', onMoveCallback);\n }\n }\n if (bindEnd) {\n this.unsubscribeOnEnd();\n const onEndCallback = e => this.onEnd(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onEndEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchend', onEndCallback);\n } else {\n this.onEndEventListener = this.eventListenerHelper.attachEventListener(document, 'mouseup', onEndCallback);\n }\n }\n this.userChangeStart.emit(this.getChangeContext());\n if (CompatibilityHelper.isTouchEvent(event) && !ValueHelper.isNullOrUndefined(event.changedTouches)) {\n // Store the touch identifier\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.touchId = event.changedTouches[0].identifier;\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 if (simulateImmediateEnd) {\n this.onEnd(event);\n }\n }\n // onMove event handler\n onMove(event, fromTick) {\n let touchForThisSlider = null;\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches = event.changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n if (changedTouches[i].identifier === this.touchId) {\n touchForThisSlider = changedTouches[i];\n break;\n }\n }\n if (ValueHelper.isNullOrUndefined(touchForThisSlider)) {\n return;\n }\n }\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n const newPos = !ValueHelper.isNullOrUndefined(touchForThisSlider) ? this.getEventPosition(event, touchForThisSlider.identifier) : this.getEventPosition(event);\n let newValue;\n const ceilValue = this.viewOptions.rightToLeft ? this.viewOptions.floor : this.viewOptions.ceil;\n const floorValue = this.viewOptions.rightToLeft ? this.viewOptions.ceil : this.viewOptions.floor;\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 forceEnd(disableAnimation = false) {\n this.moving = false;\n if (this.viewOptions.animate) {\n this.sliderElementAnimateClass = true;\n }\n if (disableAnimation) {\n this.sliderElementAnimateClass = false;\n // make sure the slider animate class is set according to the viewOptions after forceEnd() with disabled animations finishes\n setTimeout(() => {\n this.sliderElementAnimateClass = this.viewOptions.animate;\n });\n }\n this.touchId = null;\n if (!this.viewOptions.keyboardSupport) {\n this.minHandleElement.active = false;\n this.maxHandleElement.active = false;\n this.currentTrackingPointer = null;\n }\n this.dragging.active = false;\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n this.userChangeEnd.emit(this.getChangeContext());\n }\n onEnd(event) {\n if (CompatibilityHelper.isTouchEvent(event)) {\n const changedTouches = event.changedTouches;\n if (changedTouches[0].identifier !== this.touchId) {\n return;\n }\n }\n this.forceEnd();\n }\n onPointerFocus(pointerType) {\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.on('blur', () => this.onPointerBlur(pointerElement));\n pointerElement.on('keydown', event => this.onKeyboardEvent(event));\n pointerElement.on('keyup', () => this.onKeyUp());\n pointerElement.active = true;\n this.currentTrackingPointer = pointerType;\n this.currentFocusPointer = pointerType;\n this.firstKeyDown = true;\n }\n onKeyUp() {\n this.firstKeyDown = true;\n this.userChangeEnd.emit(this.getChangeContext());\n }\n onPointerBlur(pointer) {\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 = null;\n this.currentFocusPointer = null;\n }\n }\n getKeyActions(currentValue) {\n const valueRange = this.viewOptions.ceil - this.viewOptions.floor;\n let increaseStep = currentValue + this.viewOptions.step;\n let decreaseStep = currentValue - this.viewOptions.step;\n let increasePage = currentValue + valueRange / 10;\n let decreasePage = currentValue - valueRange / 10;\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 // Left to right default actions\n const actions = {\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 onKeyboardEvent(event) {\n const currentValue = this.getCurrentTrackingValue();\n const keyCode = !ValueHelper.isNullOrUndefined(event.keyCode) ? event.keyCode : event.which;\n const keys = {\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 = this.getKeyActions(currentValue);\n const key = keys[keyCode];\n const action = actions[key];\n if (ValueHelper.isNullOrUndefined(action) || ValueHelper.isNullOrUndefined(this.currentTrackingPointer)) {\n return;\n }\n event.preventDefault();\n if (this.firstKeyDown) {\n this.firstKeyDown = false;\n this.userChangeStart.emit(this.getChangeContext());\n }\n const actionValue = MathHelper.clampToRange(action, this.viewOptions.floor, this.viewOptions.ceil);\n const newValue = this.roundStep(actionValue);\n if (!this.viewOptions.draggableRangeOnly) {\n this.positionTrackingHandle(newValue);\n } else {\n const difference = this.viewHighValue - this.viewLowValue;\n let newMinValue;\n let newMaxValue;\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 // onDragStart event handler, handles dragging of the middle bar\n onDragStart(pointerType, event, bindMove, bindEnd) {\n const position = this.getEventPosition(event);\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 ? this.minHandleElement.position - position : position - this.minHandleElement.position;\n this.dragging.highLimit = this.viewOptions.rightToLeft ? position - this.maxHandleElement.position : this.maxHandleElement.position - position;\n this.onStart(pointerType, event, bindMove, bindEnd);\n }\n /** Get min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n getMinValue(newPos, outOfBounds, isAbove) {\n const isRTL = this.viewOptions.rightToLeft;\n let value = null;\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 ? this.positionToValue(newPos + this.dragging.lowLimit) : this.positionToValue(newPos - this.dragging.lowLimit);\n }\n return this.roundStep(value);\n }\n /** Get max value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft */\n getMaxValue(newPos, outOfBounds, isAbove) {\n const isRTL = this.viewOptions.rightToLeft;\n let value = null;\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 return this.roundStep(value);\n }\n onDragMove(event) {\n const newPos = this.getEventPosition(event);\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n let ceilLimit, floorLimit, floorHandleElement, ceilHandleElement;\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 const isUnderFloorLimit = newPos <= floorLimit;\n const isOverCeilLimit = newPos >= this.maxHandlePosition - ceilLimit;\n let newMinValue;\n let newMaxValue;\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 this.positionTrackingBar(newMinValue, newMaxValue);\n }\n // Set the new value and position for the entire bar\n positionTrackingBar(newMinValue, newMaxValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newMinValue < this.viewOptions.minLimit) {\n newMinValue = this.viewOptions.minLimit;\n newMaxValue = MathHelper.roundToPrecisionLimit(newMinValue + this.dragging.difference, this.viewOptions.precisionLimit);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newMaxValue > this.viewOptions.maxLimit) {\n newMaxValue = this.viewOptions.maxLimit;\n newMinValue = MathHelper.roundToPrecisionLimit(newMaxValue - this.dragging.difference, this.viewOptions.precisionLimit);\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 // Set the new value and position to the current tracking handle\n positionTrackingHandle(newValue) {\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 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 applyMinMaxLimit(newValue) {\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 applyMinMaxRange(newValue) {\n const oppositeValue = this.currentTrackingPointer === PointerType.Min ? this.viewHighValue : this.viewLowValue;\n const difference = 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(this.viewHighValue - this.viewOptions.minRange, this.viewOptions.precisionLimit);\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.minRange, this.viewOptions.precisionLimit);\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(this.viewHighValue - this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n } else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n }\n }\n }\n return newValue;\n }\n applyPushRange(newValue) {\n const difference = this.currentTrackingPointer === PointerType.Min ? this.viewHighValue - newValue : newValue - this.viewLowValue;\n const minRange = !ValueHelper.isNullOrUndefined(this.viewOptions.minRange) ? this.viewOptions.minRange : 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(Math.min(newValue + minRange, this.viewOptions.ceil), this.viewOptions.precisionLimit);\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(Math.max(newValue - minRange, this.viewOptions.floor), this.viewOptions.precisionLimit);\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 getChangeContext() {\n const 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 static ɵfac = function SliderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SliderComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(AllowUnsafeHtmlInSlider, 8));\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SliderComponent,\n selectors: [[\"ngx-slider\"]],\n contentQueries: function SliderComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, _c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n }\n },\n viewQuery: function SliderComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 5, SliderElementDirective);\n i0.ɵɵviewQuery(_c3, 5, SliderElementDirective);\n i0.ɵɵviewQuery(_c4, 5, SliderElementDirective);\n i0.ɵɵviewQuery(_c5, 5, SliderElementDirective);\n i0.ɵɵviewQuery(_c6, 5, SliderHandleDirective);\n i0.ɵɵviewQuery(_c7, 5, SliderHandleDirective);\n i0.ɵɵviewQuery(_c8, 5, SliderLabelDirective);\n i0.ɵɵviewQuery(_c9, 5, SliderLabelDirective);\n i0.ɵɵviewQuery(_c10, 5, SliderLabelDirective);\n i0.ɵɵviewQuery(_c11, 5, SliderLabelDirective);\n i0.ɵɵviewQuery(_c12, 5, SliderLabelDirective);\n i0.ɵɵviewQuery(_c13, 5, SliderElementDirective);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.leftOuterSelectionBarElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rightOuterSelectionBarElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fullBarElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectionBarElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.minHandleElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.maxHandleElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.floorLabelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ceilLabelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.minHandleLabelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.maxHandleLabelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.combinedLabelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n }\n },\n hostVars: 10,\n hostBindings: function SliderComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"resize\", function SliderComponent_resize_HostBindingHandler($event) {\n return ctx.onResize($event);\n }, false, i0.ɵɵresolveWindow);\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx.sliderElementDisabledAttr)(\"aria-label\", ctx.sliderElementAriaLabel);\n i0.ɵɵclassProp(\"ngx-slider\", ctx.sliderElementNgxSliderClass)(\"vertical\", ctx.sliderElementVerticalClass)(\"animate\", ctx.sliderElementAnimateClass)(\"with-legend\", ctx.sliderElementWithLegendClass);\n }\n },\n inputs: {\n value: \"value\",\n highValue: \"highValue\",\n options: \"options\",\n manualRefresh: \"manualRefresh\",\n triggerFocus: \"triggerFocus\",\n cancelUserChange: \"cancelUserChange\"\n },\n outputs: {\n valueChange: \"valueChange\",\n highValueChange: \"highValueChange\",\n userChangeStart: \"userChangeStart\",\n userChange: \"userChange\",\n userChangeEnd: \"userChangeEnd\"\n },\n standalone: false,\n features: [i0.ɵɵProvidersFeature([NGX_SLIDER_CONTROL_VALUE_ACCESSOR]), i0.ɵɵNgOnChangesFeature],\n decls: 29,\n vars: 13,\n consts: [[\"leftOuterSelectionBar\", \"\"], [\"rightOuterSelectionBar\", \"\"], [\"fullBar\", \"\"], [\"selectionBar\", \"\"], [\"minHandle\", \"\"], [\"maxHandle\", \"\"], [\"floorLabel\", \"\"], [\"ceilLabel\", \"\"], [\"minHandleLabel\", \"\"], [\"maxHandleLabel\", \"\"], [\"combinedLabel\", \"\"], [\"ticksElement\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-left-out-selection\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-right-out-selection\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-full-bar\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-selection-bar\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\", \"ngx-slider-selection\", 3, \"ngStyle\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-min\", 3, \"ngStyle\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-max\", 3, \"ngStyle\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-floor\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-ceil\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-value\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-high\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-combined\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-ticks\", 3, \"hidden\"], [\"class\", \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\"], [3, \"template\", \"tooltip\", \"placement\"], [\"class\", \"ngx-slider-span ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\", 4, \"ngIf\"], [\"class\", \"ngx-slider-span ngx-slider-tick-legend\", 3, \"innerText\", 4, \"ngIf\"], [\"class\", \"ngx-slider-span ngx-slider-tick-legend\", 3, \"innerHTML\", 4, \"ngIf\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-legend\", 3, \"innerText\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-legend\", 3, \"innerHTML\"]],\n template: function SliderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 12, 0);\n i0.ɵɵelement(2, \"span\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"span\", 14, 1);\n i0.ɵɵelement(5, \"span\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"span\", 15, 2);\n i0.ɵɵelement(8, \"span\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"span\", 16, 3);\n i0.ɵɵelement(11, \"span\", 17);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(12, \"span\", 18, 4)(14, \"span\", 19, 5)(16, \"span\", 20, 6)(18, \"span\", 21, 7)(20, \"span\", 22, 8)(22, \"span\", 23, 9)(24, \"span\", 24, 10);\n i0.ɵɵelementStart(26, \"span\", 25, 11);\n i0.ɵɵtemplate(28, SliderComponent_span_28_Template, 5, 10, \"span\", 26);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(6);\n i0.ɵɵclassProp(\"ngx-slider-transparent\", ctx.fullBarTransparentClass);\n i0.ɵɵadvance(3);\n i0.ɵɵclassProp(\"ngx-slider-draggable\", ctx.selectionBarDraggableClass);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngStyle\", ctx.barStyle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngStyle\", ctx.minPointerStyle);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"display\", ctx.range ? \"inherit\" : \"none\");\n i0.ɵɵproperty(\"ngStyle\", ctx.maxPointerStyle);\n i0.ɵɵadvance(12);\n i0.ɵɵclassProp(\"ngx-slider-ticks-values-under\", ctx.ticksUnderValuesClass);\n i0.ɵɵproperty(\"hidden\", !ctx.showTicks);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, SliderElementDirective, SliderHandleDirective, SliderLabelDirective, TooltipWrapperComponent],\n styles: [\".ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;user-select:none;touch-action:pan-y} .ngx-slider.with-legend{margin-bottom:40px} .ngx-slider[disabled]{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3} .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2} .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2} .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block} .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1} .ngx-slider .ngx-slider-draggable{cursor:move} .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:transparent} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688} .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px} .ngx-slider .ngx-slider-pointer:after{content:\\\"\\\";width:8px;height:8px;position:absolute;top:12px;left:12px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;background:#fff} .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff} .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4} .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff} .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px} .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d} .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none} .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px} .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px} .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0} .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;transform:translate(-50%)} .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;transform:translate(-50%);max-width:50px;white-space:normal} .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x} .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px} .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%} .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0} .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0} .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1} .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px} .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;transform:translateY(-28%)} .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;transform:translateY(-28%);max-width:none;white-space:nowrap} .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px} .ngx-slider *{transition:none} .ngx-slider.animate .ngx-slider-bar-wrapper{transition:all linear .3s} .ngx-slider.animate .ngx-slider-selection{transition:background-color linear .3s} .ngx-slider.animate .ngx-slider-pointer{transition:all linear .3s} .ngx-slider.animate .ngx-slider-pointer:after{transition:all linear .3s} .ngx-slider.animate .ngx-slider-bubble{transition:all linear .3s} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity linear .3s} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity linear .3s} .ngx-slider.animate .ngx-slider-tick{transition:background-color linear .3s}\"]\n });\n }\n return SliderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * NgxSlider module\n *\n * The module exports the slider component\n */\nlet NgxSliderModule = /*#__PURE__*/(() => {\n class NgxSliderModule {\n static ɵfac = function NgxSliderModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgxSliderModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxSliderModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n return NgxSliderModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AllowUnsafeHtmlInSlider, ChangeContext, LabelType, NgxSliderModule, Options, PointerType, SliderComponent };\n"],"names":["require_index_min","__commonJSMin","exports","cancel","e","getWrapper","o","n","i","a","t","r","defineProperty","modifyDescriptor","createDebounce","debounce","import_typescript_debounce_decorator","_c0","_c1","_c2","_c3","_c4","a0","NgDropdownPanelComponent_Conditional_0_Template","rf","ctx","ɵɵelementStart","ɵɵelementContainer","ɵɵelementEnd","ctx_r0","ɵɵnextContext","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","NgDropdownPanelComponent_Conditional_8_Template","_c5","_c6","_c7","a1","a2","_c8","_c9","a3","NgSelectComponent_Conditional_2_ng_template_0_Template","ɵɵtext","ctx_r1","ɵɵtextInterpolate","NgSelectComponent_Conditional_2_ng_template_2_Template","NgSelectComponent_Conditional_2_Template","ɵɵtemplate","ɵɵtemplateRefExtractor","defaultPlaceholderTemplate_r3","ɵɵreference","NgSelectComponent_Conditional_3_For_1_ng_template_1_Template","_r4","ɵɵgetCurrentView","ɵɵlistener","ɵɵrestoreView","item_r5","ɵɵresetView","ɵɵelement","NgSelectComponent_Conditional_3_For_1_ng_template_3_Template","NgSelectComponent_Conditional_3_For_1_Template","defaultLabelTemplate_r6","ɵɵclassProp","ɵɵpureFunction3","NgSelectComponent_Conditional_3_Template","ɵɵrepeaterCreate","ɵɵcomponentInstance","ɵɵrepeater","NgSelectComponent_Conditional_4_ng_template_0_Template","NgSelectComponent_Conditional_4_Template","ɵɵpureFunction2","NgSelectComponent_Conditional_8_ng_template_0_Template","NgSelectComponent_Conditional_8_ng_template_2_Template","NgSelectComponent_Conditional_8_Template","defaultLoadingSpinnerTemplate_r8","NgSelectComponent_Conditional_9_Conditional_0_Template","NgSelectComponent_Conditional_9_Conditional_1_Template","ɵɵpropertyInterpolate","NgSelectComponent_Conditional_9_Template","ɵɵconditional","NgSelectComponent_Conditional_12_For_3_ng_template_1_Template","item_r11","NgSelectComponent_Conditional_12_For_3_ng_template_3_Template","NgSelectComponent_Conditional_12_For_3_Template","_r10","defaultOptionTemplate_r12","ɵɵattribute","ɵɵpureFunction4","NgSelectComponent_Conditional_12_Conditional_4_ng_template_1_Template","ɵɵtextInterpolate1","NgSelectComponent_Conditional_12_Conditional_4_ng_template_3_Template","NgSelectComponent_Conditional_12_Conditional_4_Template","_r13","defaultTagTemplate_r14","NgSelectComponent_Conditional_12_Conditional_5_ng_template_0_Template","NgSelectComponent_Conditional_12_Conditional_5_ng_template_2_Template","NgSelectComponent_Conditional_12_Conditional_5_Template","defaultNotFoundTemplate_r15","NgSelectComponent_Conditional_12_Conditional_6_ng_template_0_Template","NgSelectComponent_Conditional_12_Conditional_6_ng_template_2_Template","NgSelectComponent_Conditional_12_Conditional_6_Template","defaultTypeToSearchTemplate_r16","NgSelectComponent_Conditional_12_Conditional_7_ng_template_0_Template","NgSelectComponent_Conditional_12_Conditional_7_ng_template_2_Template","NgSelectComponent_Conditional_12_Conditional_7_Template","defaultLoadingTextTemplate_r17","NgSelectComponent_Conditional_12_Template","_r9","$event","ɵɵelementContainerStart","ɵɵelementContainerEnd","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","escapeHTML","value","chr","isDefined","isObject","isPromise","isFunction","NgItemLabelDirective","element","changes","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","ɵɵNgOnChangesFeature","NgOptionTemplateDirective","template","TemplateRef","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgPlaceholderTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","NgClearButtonTemplateDirective","newId","diacritics","stripSpecialChars","text","match","a","ItemsList","_ngSelect","_selectionModel","i","item","items","index","multiple","findBy","option","keepDisabled","term","hideSelected","key","matchedItems","searchItem","last","head","x","markDefault","lastMarkedIndex","keys","len","label","selected","parent","child","b","search","opt","steps","selectedIndex","prop","groups","children","isFnKey","keyFn","group","isGroupByFn","withoutGroup","isObjectKey","groupKey","groupValue","NgDropdownPanelService","scrollPos","itemsLength","buffer","d","scrollHeight","indexByScrollTop","end","maxStart","start","topPadding","itemHeight","panelHeight","itemsPerViewport","itemTop","lastScroll","itemBottom","top","bottom","ɵɵdefineInjectable","CSS_POSITIONS","SCROLL_SCHEDULER","animationFrameScheduler","asapScheduler","NgDropdownPanelComponent","_renderer","_zone","_panelService","_elementRef","_document","EventEmitter","Subject","offset","change","startFromOption","scrollTo","panel","currentPosition","position","REMOVE_CSS_CLASS","ADD_CSS_CLASS","fromEvent","takeUntil","auditTime","path","scrollTop","merge","firstChange","height","range","first","optionHeight","padding","dropdownEl","selectRect","offsetTop","dropdownHeight","select","offsetLeft","delta","offsetBottom","event","Renderer2","NgZone","DOCUMENT","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","booleanAttribute","ɵɵprojectionDef","ɵɵprojection","NgTemplateOutlet","NgOptionComponent","elementRef","KeyCode","DefaultSelectionModelFactory","DefaultSelectionModel","groupAsModel","childrenCount","selectedCount","NgSelectConfig","ConsoleService","message","SELECTION_MODEL_FACTORY","InjectionToken","NgSelectComponent","classes","autoFocus","config","newSelectionModel","_cd","_console","_","fn","target","state","tag","handleTag","empty","firstItem","mapNgOptions","options","handleOptionChange","changedOrDestroyed","startWith","validateBinding","ngModel","val","isValObject","isPrimitive","tap","letter","debounceTime","filter","map","input","attributes","__spreadValues","model","searchTerm","nextStep","nextIndex","ɵɵinjectAttribute","ChangeDetectorRef","dirIndex","ɵɵcontentQuery","numberAttribute","ɵɵProvidersFeature","NG_VALUE_ACCESSOR","forwardRef","_r1","searchInput_r7","NgClass","NgSelectModule","ɵɵdefineNgModule","ɵɵdefineInjector","escapeStringRegexp","string","import_dayjs","w","matchMedia","passiveOptionAccessed","options","noop","supportsPassiveEvents","supportsPointerEvents","onTouchStartInWindow","touchEventInWindow","supportsTouchEvents","hasTouch","userAgent","isIPad","hasCoarsePrimaryPointer","hasAnyHoverOrAnyFinePointer","_c0","a0","a1","a2","TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template","rf","ctx","TooltipWrapperComponent_ng_container_0_1_Template","ɵɵtemplate","TooltipWrapperComponent_ng_container_0_Template","ɵɵelementContainerStart","ɵɵelementContainerEnd","ctx_r0","ɵɵnextContext","ɵɵadvance","ɵɵproperty","ɵɵpureFunction3","TooltipWrapperComponent_ng_container_1_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵattribute","ɵɵtextInterpolate1","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_c8","_c9","_c10","_c11","_c12","_c13","_c14","SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template","ɵɵelement","t_r1","ctx_r1","SliderComponent_span_28_span_3_Template","SliderComponent_span_28_span_4_Template","ɵɵsanitizeHtml","SliderComponent_span_28_Template","ɵɵpureFunction1","LabelType","Options","AllowUnsafeHtmlInSlider","InjectionToken","PointerType","ChangeContext","ValueHelper","value","array1","array2","i","val","minVal","maxVal","range","percent","modelValue","stepsArray","differences","step","minDifferenceIndex","index","CompatibilityHelper","event","MathHelper","precisionLimit","modulo","limit","floor","ceil","EventListener","EventListenerHelper","renderer","nativeElement","eventName","callback","throttleInterval","supportsPassiveEvents","listener","Subject","observerCallback","tap","throttleTime","eventListener","SliderElementDirective","elemRef","changeDetectionRef","hide","vertical","scale","rotate","pos","dim","debounceInterval","listenersToKeep","listenersToRemove","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","Renderer2","ChangeDetectorRef","ɵɵdefineDirective","ɵɵstyleProp","SliderHandleDirective","ɵɵclassProp","ɵɵInheritDefinitionFeature","SliderLabelDirective","allowUnsafeHtmlInSlider","recalculateDimension","TooltipWrapperComponent","ɵɵdefineComponent","NgIf","NgTemplateOutlet","Tick","Dragging","ModelValues","x","y","ModelChange","NGX_SLIDER_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","forwardRef","SliderComponent","EventEmitter","Options","manualRefresh","triggerFocus","pointerType","cancelUserChange","ValueHelper","Subject","Dragging","renderer","elementRef","changeDetectionRef","zone","allowUnsafeHtmlInSlider","EventListenerHelper","changes","obj","onChangeCallback","onTouchedCallback","isDisabled","ariaLabel","event","distinctUntilChanged","ModelChange","filter","modelChange","CompatibilityHelper","PointerType","modelValue","viewValue","sliderValue","step","normalisedModelChange","normalisationChange","ModelValues","emitOutputs","input","normalisedInput","valueIndex","highValueIndex","MathHelper","tempValue","previousModelValues","normalisedModelValues","previousOptionsInfluencingEventBindings","newOptionsInfluencingEventBindings","rebindEvents","minValue","maxValue","value","hideLabelsForTicks","element","LabelType","handleWidth","ticksArray","translate","tickValueStep","hasAtLeastOneLegend","newTicks","position","translation","tick","Tick","legend","i","numberOfValues","index","center","which","newPos","labelType","labelDimension","nearHandlePos","endOfBarPos","floorLabelHidden","ceilLabelHidden","isMinLabelAtFloor","isMinLabelAtCeil","isMaxLabelAtCeil","isCombinedLabelAtFloor","isCombinedLabelAtCeil","hideCeil","hideFloor","label","pos","dim","floorPos","floorDim","ceilPos","ceilDim","dimension","isSelectionBarFromRight","positionForRange","centerPosition","offset","reversed","direction","color","isLabelOverlap","lowDisplayValue","highDisplayValue","combinedLabelValue","customStep","steppedDifference","val","fn","percent","targetTouchId","touchIndex","touches","sliderElementBoundingRect","sliderPos","eventPos","distanceMin","distanceMax","draggableRange","options","bindMove","bindEnd","simulateImmediateMove","simulateImmediateEnd","supportsPassiveEvents","pointerElement","onMoveCallback","e","onEndCallback","fromTick","touchForThisSlider","changedTouches","newValue","ceilValue","floorValue","disableAnimation","pointer","currentValue","valueRange","increaseStep","decreaseStep","increasePage","decreasePage","actions","keyCode","keys","key","action","actionValue","difference","newMinValue","newMaxValue","outOfBounds","isAbove","isRTL","ceilLimit","floorLimit","floorHandleElement","ceilHandleElement","isUnderFloorLimit","isOverCeilLimit","oppositeValue","minRange","maxRange","changeContext","ChangeContext","__ngFactoryType__","ɵɵdirectiveInject","Renderer2","ElementRef","ChangeDetectorRef","NgZone","AllowUnsafeHtmlInSlider","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_c1","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c2","SliderElementDirective","_c3","_c4","_c5","_c6","SliderHandleDirective","_c7","_c8","SliderLabelDirective","_c9","_c10","_c11","_c12","_c13","ɵɵlistener","$event","ɵɵresolveWindow","ɵɵattribute","ɵɵclassProp","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","SliderComponent_span_28_Template","ɵɵadvance","ɵɵproperty","ɵɵstyleProp","NgClass","NgForOf","NgIf","NgStyle","TooltipWrapperComponent","NgxSliderModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ɵ$index_8_r4","ɵɵnextContext","$index","ctx_r4","ɵɵresetView","toggleActiveOption","ɵɵelement","ɵɵelementEnd","ɵɵstyleProp","option_r6","colour","ɵɵadvance","ɵɵproperty","iconNames","ChevronDown","active","ɵɵtext","ɵɵtextInterpolate2","numberChecked","checkboxes","length","getFirstChecked","ɵɵsanitizeHtml","ɵɵtemplate","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_6_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_6_Conditional_2_Template","ɵɵconditional","ɵɵpipeBind1","orPercentOptions","minValue","maxValue","ɵɵtextInterpolate6","prefix","suffix","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_7_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_7_Conditional_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_7_Conditional_3_Template","orPercent","showPercent","ɵɵpipeBind2","minDate","maxDate","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Case_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Case_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Case_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Case_4_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Case_5_Template","tmp_19_0","relativeRange","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Conditional_4_Template","ɵɵtextInterpolate1","friendlyRange","ɵɵtwoWayListener","$event","_r7","$implicit","i0","ɵɵtwoWayBindingSet","searchString","loadContent","ɵɵtwoWayProperty","_r8","numberRange","selectOption_r10","optionValue","ɵɵtextInterpolate","label","_r9","selectedValue","ɵɵrepeaterCreate","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_11_For_3_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","selectOptions","required","filterby","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_12_Conditional_2_Conditional_1_Template","title","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_12_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_12_Conditional_2_Template","ɵɵelementContainer","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_2_ng_container_0_Template","showCheckboxesTemplate_r11","ɵɵpureFunction1","_c3","_r12","matchingOption","ɵɵpropertyInterpolate","name","_r13","_r14","_r15","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_3_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_3_Conditional_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_3_Conditional_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_3_Conditional_4_Template","matchingOptionTypes","exactPhrase","allWords","someWords","booleanMode","_r16","setDateRange","loadContentAfterDateChange","filter_r21","_r19","stopPropagation","item_r20","item","itemfilters","id","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_5_ng_template_2_Conditional_1_For_2_Template","filter","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_5_ng_template_2_Conditional_1_Template","ctx_r21","_r18","clear_r23","clear","item_r24","_r17","multiAutocompleteSearch","multiAutocompleteChange","multiAutocompleteClear","multiAutocompleteRemove","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_5_ng_template_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_5_ng_template_3_Template","items","searching","multiAutocompleteNgSelectSearchFn","_r25","ɵɵpropertyInterpolate1","_r26","ɵɵpureFunction0","_c4","_r27","options","checkbox_r29","_r28","toggleCheckBox","ɵɵpropertyInterpolate2","ɵ$index_328_r30","value","checked","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Conditional_4_For_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Conditional_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Conditional_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Conditional_4_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_3_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_4_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_5_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Conditional_6_Template","undefined","searchTypes","isSearchCheckboxOption","isSearchStringOption","type","searchOptionType","stringinput","isSearchDateRangeOption","isSearchMultiAutoCompleteOption","isSearchNumberRangeOption","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_2_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_3_Template","_r2","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_6_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_7_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_8_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_9_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_10_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_11_Template","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_12_Template","topLevelSearchOptionDeSelect","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Conditional_14_Template","ɵɵclassProp","searchnumbers","select","switchoptiongroup","isSearchNumbersOption","isSearchSelectOption","FilteringSearchComponentBase_Conditional_0_For_4_Conditional_0_Template","isSearchShowSearchOptionGroup","selected","option_r33","item_r35","_r34","topLevelSearchOptionSelect","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_6_Conditional_2_For_2_Template","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_6_Conditional_1_Template","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_6_Conditional_2_Template","_r36","checkbox_r37","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_7_For_2_Conditional_0_Template","checkboxDependenciesMet","autocompleteText","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_7_For_2_Template","_r32","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_4_Template","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_5_Template","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_6_Template","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Conditional_7_Template","icon","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Conditional_0_Template","visible","allDependenciesMet","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_For_5_Template","optionGroup_r38","groupName","FilteringSearchComponentBase_Conditional_0_For_11_Conditional_0_Template","allDependenciesMetForSearchOptionGroup","optionGroupHasSomeVisibleElements","_r39","saveSearch","Save","saveSearchesText","FilteringSearchComponentBase_Conditional_0_Conditional_13_Conditional_1_Template","allowSearchesToBeSaved","selectedOptions","_r40","clearSearch","_r1","FilteringSearchComponentBase_Conditional_0_For_4_Template","input_r31","ɵɵreference","setupToShowAutoCompleteOptions","handlePaste","acceptText","FilteringSearchComponentBase_Conditional_0_For_11_Template","FilteringSearchComponentBase_Conditional_0_Conditional_13_Template","FilteringSearchComponentBase_Conditional_0_Conditional_15_Template","filterPlaceholder","leftPosition","topLevelSearchOptionGroups","tmp_10_0","userState$","user","ipuser","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Conditional_0_Conditional_12_ng_container_1_Template","_c5","checkbox_r42","conditionalOptions","_r41","option_r43","option","changeCheckboxes","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Conditional_0_Conditional_8_Template","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Conditional_0_Conditional_9_Template","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Conditional_0_Conditional_12_Template","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Conditional_0_Template","FilteringSearchComponentBase_ng_template_1_Conditional_0_For_2_Template","ɵɵclassMapInterpolate1","indent_r45","numberOfColumns","FilteringSearchComponentBase_ng_template_1_Conditional_0_Template","ɵ$index_470_r49","_r48","pastedChoices","match","_c6","choice_r50","FilteringSearchComponentBase_ng_template_3_Conditional_6_For_1_Template","_forTrack0","ctx","modal_r47","_r46","dismiss","FilteringSearchComponentBase_ng_template_3_Conditional_5_Template","FilteringSearchComponentBase_ng_template_3_Conditional_6_Template","close","pastedChooserHeader","pasteChooserLoading","tmp_6_0","pastedChoices$","FilteringSearchComponentBase","store","inject","Store","backendService","BackEndService","savedSearchService","SavedSearchService","router","Router","route","ActivatedRoute","datePipe","DatePipe","modalService","NgbModal","searchService","setSearchOptions","search","providedTopLevelSearchOptionGroups","initSearchOptionGroup","groupOptions","push","lookupOnPaste","lookupOnPasteOption","initialLeftPosition","setType","area","setSearchParameters","setSelectedOption","parameters","loadSearch","requiredFilters","showFilter","searchOutput","EventEmitter","autocompleteoptions","input","pasteChooser","DefaultFilterPlaceHolder","IconNamesEnum","today","Date","selectedOptionActive","searchRequest","searchTimer","searchSummary","total","searchResults","SearchOptionType","userQueryType","searchNameToDelete","Observable","SearchTypes","paramsSubscription$","Subscription","routerState","lastAutocompleteText","constructor","currentNavigation","getCurrentNavigation","previousNavigation","lastSuccessfulNavigation","extras","state","selectUserState","ngOnInit","queryParams","subscribe","params","articlesAlreadyLoaded","selectSearchState","pipe","take","s","Object","fromEntries","entries","map","key","includes","split","keys","makeSearchRequest","ngAfterViewInit","observer","IntersectionObserver","forEach","entry","isIntersecting","rootBounds","boundingClientRect","left","width","threshold","nativeElement","observe","ngOnDestroy","unsubscribe","resetSearch","checkForVisibleIfPresent","tableColumn","visibleIfPresent","checkForVisibleIfOptionGroupFilterEngaged","optionGroup","visibleIfOptionGroupFilterEngaged","some","o","startAt","__spreadProps","__spreadValues","window","start","size","getSearchParameters","emit","KeyboardEvent","clearTimeout","setTimeout","createAutoCompleteOptions","searchServiceParameter","structuredClone","parameter","values","event","lines","clipboardData","getData","string","trim","str","preventDefault","blur","self","open","backdropClass","keyboard","backdrop","scrollable","centered","result","then","chosenOption","choice","find","creditorNames","format","returndata","articles","matches","reduce","acc","lastResort","resp","defineProperties","writable","enumerable","regex","RegExp","escapeStringRegexp","test","checkbox","dependenciesMet","depends","overlap","requiredValues","visibleOption","element","selectedValues","c","intersection","matchingString","checkedDefault","replace","anyDependenciesMet","dependsMust","remainingOptions","opt","resetOption","updateSelectedOptionDependencies","updateTopLevelDependencies","autoCompleteOption","forceRefreshAllowed","forceRefresh","box","focus","isSwitchSearchOptionGroup","optionToToggle","visibleOptions","floor","ceil","optionToUnselect","splice","searchParameters","checkedBoxes","alwaysSend","daterange","dayjs","numberrange","unit","multiautocomplete","i","navigate","onSameUrlNavigation","Math","updateCheckboxeOnlyAll","onlyAll","dateRange","date","setDate","getDate","day","getDay","setMonth","getMonth","setFullYear","getFullYear","daysDiff","round","getTime","d","dateField","term","clickInContent","target","closest","classList","contains","columnName","dataset","order","column","direction","withReset","indexOf","subcheckbox","columns","createSearchName","searchNameParts","clause","valueNames","join","transform","optionHasCheckboxes","selectors","viewQuery","rf","FilteringSearchComponentBase_Conditional_0_Template","FilteringSearchComponentBase_ng_template_1_Template","ɵɵtemplateRefExtractor","FilteringSearchComponentBase_ng_template_3_Template","NgxBootstrapIconsModule","NgxBootstrapIconsLibComponent","FormsModule","ɵNgNoValidate","NgSelectOption","ɵNgSelectMultipleOption","DefaultValueAccessor","CheckboxControlValueAccessor","SelectControlValueAccessor","RadioControlValueAccessor","NgControlStatus","NgControlStatusGroup","NgModel","NgForm","DateRangeComponent","NgSelectModule","NgSelectComponent","NgOptionTemplateDirective","NgLabelTemplateDirective","NgxSliderModule","SliderComponent","AsyncPipe","DecimalPipe","NgTemplateOutlet","styles","data","animation","openClose","optionGroupTrigger","__decorate","debounce"],"mappings":"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AU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OA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","debug_id":"0b22c987-b7f0-5058-9227-645dd17ba50e"}