@mediusinc/mng-commons 7.0.0-rc.0 → 7.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/core/index.d.ts +8 -8
  2. package/fesm2022/mediusinc-mng-commons-core.mjs +2 -6
  3. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  4. package/fesm2022/mediusinc-mng-commons-filter.mjs +20 -0
  5. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  6. package/fesm2022/mediusinc-mng-commons-form.mjs +94 -11
  7. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  8. package/fesm2022/mediusinc-mng-commons-table-api.mjs +0 -2
  9. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  10. package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs → mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs} +2 -2
  11. package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-Dvenjj9n.mjs.map → mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs.map} +1 -1
  12. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs +2417 -0
  13. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs.map +1 -0
  14. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
  15. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +16 -3
  16. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  17. package/fesm2022/mediusinc-mng-commons-tableview.mjs +43 -47
  18. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  19. package/filter/index.d.ts +16 -3
  20. package/form/index.d.ts +48 -6
  21. package/i18n/en.json +5 -2
  22. package/i18n/sl.json +5 -2
  23. package/package.json +1 -1
  24. package/table/api/index.d.ts +2 -2
  25. package/table/index.d.ts +161 -126
  26. package/tableview/api/index.d.ts +1 -3
  27. package/tableview/index.d.ts +24 -33
  28. package/version-info.json +5 -5
  29. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs +0 -2142
  30. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-DFcdSUCN.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../tmp-esm2022/form/components/autocomplete/autocomplete.component.js","../tmp-esm2022/form/components/date-range/date-range.component.js","../tmp-esm2022/form/components/dropdown/dropdown.component.js","../tmp-esm2022/form/components/number-range/number-range.component.js","../tmp-esm2022/form/directives/input-empty-value.directive.js","../tmp-esm2022/form/directives/input-trim.directive.js","../tmp-esm2022/form/index.js","../tmp-esm2022/form/mediusinc-mng-commons-form.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport { ReplaySubject, of, switchMap, take } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation, toObservable } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\nexport class AutocompleteComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.logger = inject(LoggerService).create('AutocompleteComponent');\n this.dataProvider = input.required(...(ngDevMode ? [{ debugName: \"dataProvider\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsValuePropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInit\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.openOnFocus = input(false, ...(ngDevMode ? [{ debugName: \"openOnFocus\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.autoClear = input(false, ...(ngDevMode ? [{ debugName: \"autoClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirst = input(false, ...(ngDevMode ? [{ debugName: \"selectFirst\", transform: booleanAttribute }] : [{ transform: booleanAttribute }])); //on every input field change return first given value (or null)\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", transform: booleanAttribute, alias: 'disabled' }] : [{ transform: booleanAttribute, alias: 'disabled' }]));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeAutocomplete = viewChild(AutoComplete, ...(ngDevMode ? [{ debugName: \"primeAutocomplete\" }] : []));\n this.isInited = false;\n this.searchSubscription = null;\n this.dataProviderService = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.disabled = computed(() => this._disabled() || this.disabledInput(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.suggestions = signal([], ...(ngDevMode ? [{ debugName: \"suggestions\" }] : []));\n this.isPanelShown = false;\n this.isFocused = false;\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsValuePropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n ngOnInit() {\n this.setItemsAndDataProvider();\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n onSearch(event, isInit = false) {\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n const params = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n selectFirstItem() {\n if (!this.selectFirst() || this.multiselect())\n return;\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n }\n else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n }\n else if (this.multiselect()) {\n newValue = [newValue];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n }\n else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event) {\n this.isFocused = true;\n }\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n }\n else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onShow() {\n this.isPanelShown = true;\n }\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n onClear() {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n this.setItemsAndDataProvider();\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem = { [optionsValuePropertyInit]: value };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n }\n else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n }\n else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n }\n else {\n this.setValueFromWrite(value);\n }\n }\n setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n this.isInited = true;\n }\n setValueFromWrite(value) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n }\n else {\n this.ngModelValue.set(value);\n }\n }\n getLookup(params, query) {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n return this.translate.stream(translatedItems).pipe(map((translations) => this.i18nPopulateItems(items, translations)));\n }\n else {\n return of(items);\n }\n }));\n }\n i18nGetItemsKeys(items) {\n return items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n }\n i18nPopulateItems(items, i18nMap) {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(i18nMap, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = narrowI18nToTranslation(i18nMap, item);\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n });\n }\n setSuggestionsFromItems(items, query) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n }\n else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n setValue(value, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n }\n else {\n this.ngModelValue.set(value);\n }\n this.propagateValueChange(value);\n }\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n propagateValueChange(value) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n convertValueWithOptionsValuePropSetting(value) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n }\n else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n }\n else {\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.1.7\", type: AutocompleteComponent, isStandalone: true, selector: \"mng-autocomplete\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: true, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInit: { classPropertyName: \"optionsValuePropertyInit\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: \"openOnFocus\", publicName: \"openOnFocus\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, autoClear: { classPropertyName: \"autoClear\", publicName: \"autoClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirst: { classPropertyName: \"selectFirst\", publicName: \"selectFirst\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeAutocomplete\", first: true, predicate: AutoComplete, descendants: true, isSignal: true }], ngImport: i0, template: \"<p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n</p-autoComplete>\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AutoComplete, selector: \"p-autoComplete, p-autocomplete, p-auto-complete\", inputs: [\"minLength\", \"minQueryLength\", \"delay\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"readonly\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"autoHighlight\", \"forceSelection\", \"type\", \"autoZIndex\", \"baseZIndex\", \"ariaLabel\", \"dropdownAriaLabel\", \"ariaLabelledBy\", \"dropdownIcon\", \"unique\", \"group\", \"completeOnFocus\", \"showClear\", \"dropdown\", \"showEmptyMessage\", \"dropdownMode\", \"multiple\", \"tabindex\", \"dataKey\", \"emptyMessage\", \"showTransitionOptions\", \"hideTransitionOptions\", \"autofocus\", \"autocomplete\", \"optionGroupChildren\", \"optionGroupLabel\", \"overlayOptions\", \"suggestions\", \"optionLabel\", \"optionValue\", \"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"selectOnFocus\", \"searchLocale\", \"optionDisabled\", \"focusOnHover\", \"typeahead\", \"appendTo\"], outputs: [\"completeMethod\", \"onSelect\", \"onUnselect\", \"onFocus\", \"onBlur\", \"onDropdownClick\", \"onClear\", \"onKeyUp\", \"onShow\", \"onHide\", \"onLazyLoad\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-autocomplete', providers: [AUTOCOMPLETE_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, AutoComplete], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n</p-autoComplete>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQXVCLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBb0IsYUFBYSxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQzFHLE9BQU8sRUFBQyxZQUFZLEVBQWdGLE1BQU0sc0JBQXNCLENBQUM7QUFDakksT0FBTyxFQUFhLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFDSCxvQkFBb0IsRUFFcEIsZUFBZSxFQUVmLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixZQUFZLEVBQ2YsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBR3JDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFxQjtJQUN6RCxPQUFPLEVB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QUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDOzhHQXpjUSxxQkFBcUI7a0dBQXJCLHFCQUFxQixvNkVBSm5CLENBQUMsMkJBQTJCLENBQUMsNkVBK0JGLFlBQVksZ0VDOUV0RCx1OUJBNEJBLDJDRG9CNkIsV0FBVywrVkFBRSxZQUFZLDZuQ0FBeEMsYUFBYTs7MkZBR2QscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNJLGtCQUFrQixhQUVqQixDQUFDLDJCQUEyQixDQUFDLFdBQy9CLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsbUJBQ2xDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV4aXN0aW5nUHJvdmlkZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgY29tcHV0ZWQsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1N0cmljdFRyYW5zbGF0aW9uLCBUcmFuc2xhdGVQaXBlLCBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGlvbk9iamVjdH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZSwgQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCwgQXV0b0NvbXBsZXRlU2VsZWN0RXZlbnQsIEF1dG9Db21wbGV0ZVVuc2VsZWN0RXZlbnR9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBvZiwgc3dpdGNoTWFwLCB0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YUxpc3RQYXJhbXMsXG4gICAgRmlsdGVyTWF0Y2hNb2RlLFxuICAgIElMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgTG9nZ2VyU2VydmljZSxcbiAgICBmcm9tU3Vic2NyaWJlRXJyb3IsXG4gICAgZ2V0RXJyb3JMb2dMZXZlbCxcbiAgICBuYXJyb3dJMThuVG9UcmFuc2xhdGlvbixcbiAgICB0b09ic2VydmFibGVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBBVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtBVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVQaXBlLCBGb3Jtc01vZHVsZSwgQXV0b0NvbXBsZXRlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdBdXRvY29tcGxldGVDb21wb25lbnQnKTtcblxuICAgIHB1YmxpYyBkYXRhUHJvdmlkZXIgPSBpbnB1dC5yZXF1aXJlZDxJTG9va3VwRGF0YVByb3ZpZGVyPGFueSwgYW55LCBhbnksIGFueT4+KCk7XG4gICAgcHVibGljIG9wdGlvbnNUcmFja1Byb3BlcnR5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge2FsaWFzOiAnb3B0aW9uc1ZhbHVlUHJvcGVydHknfSk7XG4gICAgcHVibGljIG9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7YWxpYXM6ICdvcHRpb25zTGFiZWxQcm9wZXJ0eSd9KTtcbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsVHJhbnNsYXRlID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgaW5saW5lU2VhcmNoID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgb3Blbk9uRm9jdXMgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIGRyb3Bkb3duQ2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBzaG93Q2xlYXIgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBhdXRvQ2xlYXIgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBzZWxlY3RGaXJzdCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7IC8vb24gZXZlcnkgaW5wdXQgZmllbGQgY2hhbmdlIHJldHVybiBmaXJzdCBnaXZlbiB2YWx1ZSAob3IgbnVsbClcbiAgICBwdWJsaWMgc2VhcmNoVHJpbSA9IGlucHV0PElucHV0VHJpbVR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgcHVibGljIGRpc2FibGVkSW5wdXQgPSBpbnB1dDxib29sZWFuLCB1bmtub3duPihmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdkaXNhYmxlZCd9KTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgcHVibGljIGJsdXIgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIHByaW1lQXV0b2NvbXBsZXRlID0gdmlld0NoaWxkKEF1dG9Db21wbGV0ZSk7XG5cbiAgICBwcml2YXRlIGlzSW5pdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyU2VydmljZTogYW55ID0gbnVsbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIF92YWx1ZT86IGFueSB8IG51bGw7XG4gICAgcHJpdmF0ZSBfcmF3VmFsdWU/OiBhbnkgfCBudWxsO1xuICAgIHB1YmxpYyBuZ01vZGVsVmFsdWUgPSBzaWduYWw8dW5kZWZpbmVkIHwgbnVsbCB8IGFueT4odW5kZWZpbmVkKTtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9kaXNhYmxlZCgpIHx8IHRoaXMuZGlzYWJsZWRJbnB1dCgpKTtcblxuICAgIHB1YmxpYyBzdWdnZXN0aW9ucyA9IHNpZ25hbDxBcnJheTxhbnk+PihbXSk7XG4gICAgcHJpdmF0ZSBpc1BhbmVsU2hvd24gPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgdXNlclNlbGVjdGVkSXRlbT86IGFueSB8IGFueVtdO1xuICAgIHByaXZhdGUgcXVlcnlSZXN1bHRDYWNoZVN1YmplY3Q/OiBSZXBsYXlTdWJqZWN0PGFueT47XG4gICAgcHJpdmF0ZSBjdXJyZW50UXVlcnk/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBzZXR1cCB0cmFuc2xhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfV9pMThuYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgJiYgIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RpdGxlX2kxOG4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEludmFsaWQgdXNlIHdpdGggdmFsdWUgKCR7dGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKX0pIGFuZCBsYWJlbCAoJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfSkgcHJvcGVydHkgc2V0dXAuYCwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQXV0b2NvbXBsZXRlQ29tcG9uZW50RXJyb3InXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKTtcbiAgICB9KTtcbiAgICBwdWJsaWMgb3B0aW9uc1ZhbHVlUHJvcGVydHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBzZXR1cCB0cmFuc2xhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgJiYgIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3ZhbHVlJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEludmFsaWQgdXNlIHdpdGggdmFsdWUgKCR7dGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKX0pIGFuZCBsYWJlbCAoJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfSkgcHJvcGVydHkgc2V0dXAuYCwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQXV0b2NvbXBsZXRlQ29tcG9uZW50RXJyb3InXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWVXaXRoT3B0aW9uc1ZhbHVlUHJvcFNldHRpbmcodGhpcy5uZ01vZGVsVmFsdWUoKSk7XG4gICAgICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IHRoaXMubmdNb2RlbFZhbHVlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldEl0ZW1zQW5kRGF0YVByb3ZpZGVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Rmlyc3QoKSAmJiAhdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25TZWFyY2godW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VhcmNoKGV2ZW50PzogQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCwgaXNJbml0ID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlubGluZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKTtcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnRyaW1WYWx1ZShldmVudD8ucXVlcnkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRRdWVyeSA9IHF1ZXJ5O1xuXG4gICAgICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7XG4gICAgICAgICAgICBsaW1pdDogNTBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICBwYXJhbXMuc29ydCA9IFt7cHJvcGVydHk6IG9wdGlvbnNMYWJlbFByb3BlcnR5fV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5Lmxlbmd0aCA+IDAgJiYgb3B0aW9uc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzID0ge1xuICAgICAgICAgICAgICAgIFtvcHRpb25zTGFiZWxQcm9wZXJ0eV06IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZS5TdGFydHNXaXRoXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdCB8fCAhdGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0TG9va3VwKHBhcmFtcywgcXVlcnkpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSZXN1bHRDYWNoZVN1YmplY3Q/Lm5leHQoaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhpdGVtcywgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5pdCAmJiAhdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3VnZ2VzdGlvbnNGcm9tSXRlbXMoW10sIHF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBmcm9tU3Vic2NyaWJlRXJyb3IoZXJyLCAnQXV0b2NvbXBsZXRlQ29tcG9uZW50RXJyb3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coZXJyb3IsIGdldEVycm9yTG9nTGV2ZWwoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucXVlcnlSZXN1bHRDYWNoZVN1YmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3VnZ2VzdGlvbnNGcm9tSXRlbXMocmVzdWx0LCBxdWVyeSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Rmlyc3RJdGVtKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0Rmlyc3QoKSB8fCB0aGlzLm11bHRpc2VsZWN0KCkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHRoaXMuc3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMudXNlclNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShzdWdnZXN0aW9uc1swXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlclNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgLy8gaGFuZGxlcyB0aGUgY2FzZSBpZiB0aGUgdXNlciBwcm92aWRlcyBhbiBpbnB1dCBhbmQgZGUtZm9jdXNlcyB0aGUgaW5wdXQgZmllbGQgYmVmb3JlIHN1Z2dlc3Rpb25zIGFyZSBsb2FkZWQgb3IgaWYgdGhlcmUgYXJlIG5vIHN1Z2dlc3Rpb25zIGF0IGFsbFxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBieSB1c2VyIHdoZW4gc2VsZWN0aW5nIGFuIGl0ZW0gZnJvbSBhbiBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbiBsaXN0LlxuICAgICAqL1xuICAgIG9uU2VsZWN0KGV2ZW50OiBBdXRvQ29tcGxldGVTZWxlY3RFdmVudCkge1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QoKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3Jhd1ZhbHVlKSAmJiB0aGlzLl9yYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IFsuLi50aGlzLl9yYXdWYWx1ZSwgbmV3VmFsdWVdO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlzZWxlY3QoKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbbmV3VmFsdWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGJ5IHVzZXIgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBmcm9tIGFuIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3QuXG4gICAgICovXG4gICAgb25VbnNlbGVjdChldmVudDogQXV0b0NvbXBsZXRlVW5zZWxlY3RFdmVudCkge1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpICYmIHRoaXMuX3Jhd1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNtcFByb3AgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkgPz8gdGhpcy5vcHRpb25zVHJhY2tQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9yYXdWYWx1ZS5maWx0ZXIoaSA9PiAoY21wUHJvcCA/IGlbY21wUHJvcF0gIT09IGV2ZW50LnZhbHVlW2NtcFByb3BdIDogaSAhPT0gZXZlbnQudmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm11bHRpc2VsZWN0KCkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9uRm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxscyB0aGUgc2VsZWN0Rmlyc3QgaXRlbSBhbnl0aW1lIHRoZSBpbnB1dCBmaWVsZCBnb2VzIG91dCBvZiBmb2N1cyBhbmQgaWYgdGhlIHN1Z2dlc3Rpb25zIHBhbmVsIGlzIG5vdCBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgb25CbHVyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBpbnB1dFNlYXJjaFZhbCA9IHRoaXMucHJpbWVBdXRvY29tcGxldGUoKT8uaW5wdXRFTD8ubmF0aXZlRWxlbWVudD8udmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmF1dG9DbGVhcigpICYmIHRoaXMuX3ZhbHVlICE9IG51bGwgJiYgKGlucHV0U2VhcmNoVmFsID09IG51bGwgfHwgaW5wdXRTZWFyY2hWYWwgPT09ICcnKSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZShudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1BhbmVsU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RJdGVtKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25TaG93KCkge1xuICAgICAgICB0aGlzLmlzUGFuZWxTaG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIHNlbGVjdEZpcnN0IGl0ZW0gYW55dGltZSB0aGUgc3VnZ2VzdGlvbnMgcGFuZWwgaXMgY2xvc2VkIGFuZCBpbnB1dCBmaWVsZCBpc24ndCBmb2N1c2VkLlxuICAgICAqL1xuICAgIG9uSGlkZSgpIHtcbiAgICAgICAgdGhpcy5pc1BhbmVsU2hvd24gPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xlYXIoKSB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodGhpcy5tdWx0aXNlbGVjdCgpID8gW10gOiBudWxsKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtc0FuZERhdGFQcm92aWRlcigpO1xuXG4gICAgICAgIC8vIHdyaXRlIHZhbHVlIGltbWVkaWF0ZWx5IC0gaXQgaXMgaW1wb3J0YW50IHNvIHRoYXQgZmlyc3Qgc2VsZWN0IGlzIG5vdCB0cmlnZ2VyZWQhXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0ID0gdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKTtcbiAgICAgICAgaWYgKG9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCAmJiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtOiBhbnkgPSB7W29wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdF06IHZhbHVlfTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW1bb3B0aW9uc0xhYmVsUHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRJdGVtID0gdGhpcy5zdWdnZXN0aW9ucygpLmZpbmQoaSA9PiBpW29wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdF0gPT09IHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUobWF0Y2hlZEl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldExvb2t1cCh7XG4gICAgICAgICAgICAgICAgICAgIGxpbWl0OiA1MCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Xcml0ZShpdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgbG9va3VwIGRhdGEgcHJvdmlkZXJzIG5vdCB1c2luZyBxdWVyeSBwYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW0gPSBpdGVtcy5maW5kKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wZXJ0eUluaXRdID09PSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Xcml0ZShtYXRjaGVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKGRlZmF1bHRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKGRlZmF1bHRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SXRlbXNBbmREYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB0aGlzLmRhdGFQcm92aWRlcigpO1xuICAgICAgICB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UgPSBkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUgPyB0aGlzLmluamVjdG9yLmdldDxhbnk+KGRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSkgOiBudWxsO1xuXG4gICAgICAgIHRoaXMuaXNJbml0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVGcm9tV3JpdGUodmFsdWU6IGFueSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmkxOG5Qb3B1bGF0ZUl0ZW1zKFt2YWx1ZV0sIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5pMThuR2V0SXRlbXNLZXlzKFt2YWx1ZV0pKSlbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmdNb2RlbFZhbHVlKCkgPT0gbnVsbCAmJiB0aGlzLl9yYXdWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyB2YWx1ZSBtdXN0IGZpcnN0IGJlIHNldCB0byBzeW5jaHJvbmlzZSBzdGF0ZXMsIHRoZW4gaW4gbmV4dCBhc3luYyBjeWNsZSBzZXQgdG8gd2FudGVkIG51bGwgdmFsdWVcbiAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh0aGlzLl9yYXdWYWx1ZSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb29rdXAocGFyYW1zOiBEYXRhTGlzdFBhcmFtcywgcXVlcnk/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PGFueT4+IHtcbiAgICAgICAgcmV0dXJuIHRvT2JzZXJ2YWJsZSh0aGlzLmRhdGFQcm92aWRlcigpLmxvb2t1cChwYXJhbXMsIHRoaXMuZGF0YVByb3ZpZGVyU2VydmljZSwgcXVlcnkpKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkSXRlbXMgPSB0aGlzLmkxOG5HZXRJdGVtc0tleXMoaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5zdHJlYW0odHJhbnNsYXRlZEl0ZW1zKS5waXBlKG1hcCgodHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdCkgPT4gdGhpcy5pMThuUG9wdWxhdGVJdGVtcyhpdGVtcywgdHJhbnNsYXRpb25zKSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihpdGVtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGkxOG5HZXRJdGVtc0tleXMoaXRlbXM6IEFycmF5PGFueT4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChcbiAgICAgICAgICAgIGl0ZW0gPT4gKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpID8gKGl0ZW1bdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSBhcyBrZXlvZiBvYmplY3RdIGFzIHN0cmluZykgOiBpdGVtKSBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGkxOG5Qb3B1bGF0ZUl0ZW1zKGl0ZW1zOiBBcnJheTxhbnk+LCBpMThuTWFwOiBTdHJpY3RUcmFuc2xhdGlvbik6IEFycmF5PGFueT4ge1xuICAgICAgICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBpdGVtW3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgYXMga2V5b2Ygb2JqZWN0XSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uKGkxOG5NYXAsIGxhYmVsKTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtLCBbdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpIV06IHRyYW5zbGF0aW9ufTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSBuYXJyb3dJMThuVG9UcmFuc2xhdGlvbihpMThuTWFwLCBpdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBbdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpIV06IHRyYW5zbGF0aW9uID8/IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkhXTogaXRlbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U3VnZ2VzdGlvbnNGcm9tSXRlbXMoaXRlbXM6IEFycmF5PGFueT4sIHF1ZXJ5Pzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChxdWVyeSAmJiBxdWVyeSAhPT0gdGhpcy5jdXJyZW50UXVlcnkpIHtcbiAgICAgICAgICAgIC8vIFNraXAgcHJvY2Vzc2luZyB0byBhdm9pZCBvdXRkYXRlZCBxdWVyaWVzIGR1cmluZyBpbmxpbmUgc2VhcmNoIHVwZGF0ZXMuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5saW5lU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TG93ZXJDYXNlID0gcXVlcnk/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKGkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtTGFiZWwgPSBpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSAmJiB0eXBlb2YgaSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaVtvcHRpb25zTGFiZWxQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtTGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlMb3dlckNhc2UgPT0gbnVsbCB8fCAhcXVlcnlMb3dlckNhc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1MYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaXRlbUxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHF1ZXJ5TG93ZXJDYXNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucy5zZXQoWy4uLmZpbHRlcmVkSXRlbXNdKTtcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMuc2V0KFsuLi5pdGVtc10pO1xuICAgICAgICAgICAgdGhpcy51c2VyU2VsZWN0ZWRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBhbmQgc2V0cyBuZXcgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgUmVwcmVzZW50cyB0aGUgb2JqZWN0IHZhbHVlLlxuICAgICAqIEBwYXJhbSBmcm9tVXNlciBJZiBzZXQgdmFsdWUgaXMgdHJpZ2dlcmVkIGZyb20gdXNlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQsIGZyb21Vc2VyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZyb21Vc2VyKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZW0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1WYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWFyY2hUcmltKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW1TdGFydCgpO1xuICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbSgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9wYWdhdGVzIGZpbmFsIHZhbHVlIHRvIF92YWx1ZSwgb24gY2hhbmdlIGZuIGFuZCBvdXRwdXRzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWU6IGFueSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlV2l0aE9wdGlvbnNWYWx1ZVByb3BTZXR0aW5nKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRWYWx1ZVdpdGhPcHRpb25zVmFsdWVQcm9wU2V0dGluZyh2YWx1ZTogYW55IHwgYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNWYWx1ZVByb3BlcnR5ID0gdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpO1xuICAgICAgICBpZiAoIW9wdGlvbnNWYWx1ZVByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QoKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW29wdGlvbnNWYWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVbb3B0aW9uc1ZhbHVlUHJvcGVydHldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHAtYXV0b0NvbXBsZXRlXG4gICAgW25nTW9kZWxdPVwibmdNb2RlbFZhbHVlKClcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbnNMYWJlbFByb3BlcnR5KClcIlxuICAgIFtzdWdnZXN0aW9uc109XCJzdWdnZXN0aW9ucygpXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlzZWxlY3QoKVwiXG4gICAgW3Nob3dFbXB0eU1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgW2VtcHR5TWVzc2FnZV09XCInbW5nQXV0b2NvbXBsZXRlLm5vTWF0Y2hlcycgfCB0cmFuc2xhdGVcIlxuICAgIFtzdHlsZUNsYXNzXT1cImNsYXNzTmFtZSgpXCJcbiAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgIFttaW5MZW5ndGhdPVwib3Blbk9uRm9jdXMoKSA/IDAgOiAxXCJcbiAgICBbc2hvd0NsZWFyXT1cInNob3dDbGVhcigpXCJcbiAgICBbZm9yY2VTZWxlY3Rpb25dPVwiYXV0b0NsZWFyKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICBbY29tcGxldGVPbkZvY3VzXT1cIm9wZW5PbkZvY3VzKClcIlxuICAgIChjb21wbGV0ZU1ldGhvZCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAob25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgKG9uVW5zZWxlY3QpPVwib25VbnNlbGVjdCgkZXZlbnQpXCJcbiAgICAob25Gb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgIChvbkNsZWFyKT1cIm9uQ2xlYXIoKVwiXG4gICAgKG9uU2hvdyk9XCJvblNob3coKVwiXG4gICAgKG9uSGlkZSk9XCJvbkhpZGUoKVwiXG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBkcm9wZG93bk1vZGU9XCJjdXJyZW50XCI+XG48L3AtYXV0b0NvbXBsZXRlPlxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Injector, ViewEncapsulation, booleanAttribute, effect, forwardRef, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { DatePicker } from 'primeng/datepicker';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DATE_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport const DATE_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport class DateRangeComponent {\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showTime = input(false, ...(ngDevMode ? [{ debugName: \"showTime\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.showSeconds = input(false, ...(ngDevMode ? [{ debugName: \"showSeconds\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.dateFormat = input(...(ngDevMode ? [undefined, { debugName: \"dateFormat\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n }\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange');\n }\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n effect(() => {\n this.setDisabledState(this.disabled());\n }, { injector: this.injector });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n registerOnValidatorChange(fn) {\n this.onValidatorChangeFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n onBlur() {\n this.onTouchedFn();\n }\n writeValue(obj) {\n let startDate = null;\n let endDate = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n }\n else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, { emitEvent: false });\n this.toCtrl.setValue(endDate, { emitEvent: false });\n }\n else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], { emitEvent: false });\n }\n else {\n this.dateRangeCtrl.setValue(null, { emitEvent: false });\n }\n }\n validate() {\n if (!this.required())\n return null;\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n return null;\n }\n onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n else {\n const date = this.dateRangeCtrl.value;\n this.onChangeFn(date);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DateRangeComponent, isStandalone: true, selector: \"mng-date-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: \"showTime\", publicName: \"showTime\", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: \"showSeconds\", publicName: \"showSeconds\", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: \"dateFormat\", publicName: \"dateFormat\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"class\": \"className()\" } }, providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], ngImport: i0, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n </div>\\n} @else {\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n}\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: DatePicker, selector: \"p-datePicker, p-datepicker, p-date-picker\", inputs: [\"iconDisplay\", \"styleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"ariaLabel\", \"iconAriaLabel\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"readonlyInput\", \"shortYearCutoff\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"showOnFocus\", \"showWeek\", \"startWeekFromFirstDayOfYear\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autofocus\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"view\", \"defaultDate\", \"appendTo\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-date-range', providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, DatePicker], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n '[class]': 'className()'\n }, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n </div>\\n} @else {\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n}\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsV0FBVyxFQUdYLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUduQixVQUFVLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBRTNCLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFxQjtJQUN2RCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDakQsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXFCO0lBQ2xELE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDakQsS0FBSyxFQUFFLElBQUk7Q0FDZCxD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QkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksZ0JBQWdCLGFBR2YsQ0FBQyx5QkFBeUIsRUFBRSxvQkFBb0IsQ0FBQyxXQUNuRCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLENBQUMsbUJBQ3RDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsU0FBUyxFQUFFLGFBQWE7cUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RGF0ZVBpY2tlcn0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxJREFUT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50LmNzcycsXG4gICAgcHJvdmlkZXJzOiBbREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUiwgREFURV9SQU5HRV9WQUxJREFUT1JdLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRGF0ZVBpY2tlcl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3NdJzogJ2NsYXNzTmFtZSgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBzaG93VGltZSA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIHNob3dTZWNvbmRzID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGF0ZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZXF1aXJlZCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHtcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlXG4gICAgfSk7XG4gICAgcHVibGljIHZlcnRpY2FsID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcblxuICAgIHByaXZhdGUgZnJvbVRvRm9ybUNvbnRyb2whOiBGb3JtR3JvdXA7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZ2V0IGZyb21DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ2Zyb20nKSBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvQ3RybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZ2V0KCd0bycpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVJhbmdlQ3RybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZ2V0KCdkYXRlUmFuZ2UnKSBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgZnJvbTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgdG86IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGRhdGVSYW5nZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZCgpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9XG4gICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2UodGhpcy5mcm9tQ3RybC52YWx1ZUNoYW5nZXMsIHRoaXMudG9DdHJsLnZhbHVlQ2hhbmdlcywgdGhpcy5kYXRlUmFuZ2VDdHJsLnZhbHVlQ2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uVmFsdWVDaGFuZ2UoKSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCAmJiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sPy5lbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCAmJiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sPy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IHN0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgZW5kRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCAmJiAob2JqWzBdIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2Ygb2JqWzBdID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqWzBdID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBuZXcgRGF0ZShvYmpbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAxICYmIChvYmpbMV0gaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiBvYmpbMV0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmpbMV0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZShvYmpbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21DdHJsLnNldFZhbHVlKHN0YXJ0RGF0ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIHRoaXMudG9DdHJsLnNldFZhbHVlKGVuZERhdGUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnREYXRlIHx8IGVuZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlQ3RybC5zZXRWYWx1ZShbc3RhcnREYXRlLCBlbmREYXRlXSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlQ3RybC5zZXRWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMucmVxdWlyZWQoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnJvbUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgdGhpcy50b0N0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlUmFuZ2VDdHJsLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblZhbHVlQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5zaG93VGltZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBmcm9tRGF0ZSA9IHRoaXMuZnJvbUN0cmwudmFsdWUgYXMgRGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHRvRGF0ZSA9IHRoaXMudG9DdHJsLnZhbHVlIGFzIERhdGU7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oW2Zyb21EYXRlLCB0b0RhdGVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGVSYW5nZUN0cmwudmFsdWUgYXMgRGF0ZVtdO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKGRhdGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChzaG93VGltZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTFcIiBbY2xhc3MuZmxleC1jb2xdPVwidmVydGljYWwoKVwiPlxuICAgICAgICA8cC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmcm9tQ3RybFwiXG4gICAgICAgICAgICBbbWF4RGF0ZV09XCJ0b0N0cmwudmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdCgpXCJcbiAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJzaG93U2Vjb25kcygpXCJcbiAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIj48L3AtZGF0ZS1waWNrZXI+XG4gICAgICAgIDxwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRvQ3RybFwiXG4gICAgICAgICAgICBbbWluRGF0ZV09XCJmcm9tQ3RybC52YWx1ZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cInNob3dTZWNvbmRzKClcIlxuICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbn0gQGVsc2Uge1xuICAgIDxwLWRhdGUtcGlja2VyXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlUmFuZ2VDdHJsXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { MultiSelect } from 'primeng/multiselect';\nimport { Select } from 'primeng/select';\nimport { Subject, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap } from 'rxjs';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, toObservable as commonsToObservable, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DROPDOWN_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\nexport class DropdownComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.logger = inject(LoggerService).create('DropdownComponent');\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.dataProvider = input(...(ngDevMode ? [undefined, { debugName: \"dataProvider\" }] : []));\n this.options = input([], ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.optionsValuePropertyInput = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInput\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsDisabledProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsDisabledProperty\" }] : []));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirstItemInput = input(false, ...(ngDevMode ? [{ debugName: \"selectFirstItemInput\", transform: booleanAttribute, alias: 'selectFirstItem' }] : [{ transform: booleanAttribute, alias: 'selectFirstItem' }]));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.changeValueOnBlur = input(false, ...(ngDevMode ? [{ debugName: \"changeValueOnBlur\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.loadingInput = input(false, ...(ngDevMode ? [{ debugName: \"loadingInput\", alias: 'loading', transform: booleanAttribute }] : [{ alias: 'loading', transform: booleanAttribute }]));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", alias: 'disabled', transform: booleanAttribute }] : [{ alias: 'disabled', transform: booleanAttribute }]));\n this.allowInput = input(false, ...(ngDevMode ? [{ debugName: \"allowInput\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.appendTo = input('body', ...(ngDevMode ? [{ debugName: \"appendTo\" }] : []));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeSelect = viewChild(Select, ...(ngDevMode ? [{ debugName: \"primeSelect\" }] : []));\n this.primeMultiselect = viewChild(MultiSelect, ...(ngDevMode ? [{ debugName: \"primeMultiselect\" }] : []));\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._loading = signal(false, ...(ngDevMode ? [{ debugName: \"_loading\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.loading = computed(() => this.loadingInput() || this._loading(), ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.disabled = computed(() => this.disabledInput() || this._disabled(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.dataProviderService = null;\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.firstTimeSettingItems = true;\n this.isDropdownPanelShown = false;\n // used with custom input functionality\n this.fetchedItems = [];\n this.customInputSubject = new Subject();\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsValuePropertyInput();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.ngModelValue();\n });\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n this.fetchItems();\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`);\n }\n }\n });\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n onDropdownBlur(event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onDropdownChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value);\n this.customInputSubject.next(query);\n }\n }\n searchItems(query) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n }\n else {\n this.fetchItems(query);\n }\n }\n fetchItems(query) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, { injector: this.injector }), toObservable(this.options, { injector: this.injector })])\n .pipe(tap(() => this._loading.set(true)), switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n }\n const params = {\n limit: this.allowInput() ? 10 : 50\n };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n }\n else {\n return of(options ?? []);\n }\n }), switchMap(items => this.transformItems(items)), takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n setItems(items, query) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`);\n }\n if (typeof items[0]?.[this.optionsValueProperty()] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n }\n else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(`'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`);\n }\n }\n }\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n }\n else {\n this.items.set([...items]);\n }\n }\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n onMultiselectChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n onMultiselectBlur(event) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n transformItems(items) {\n if (this.optionsLabelTranslate()) {\n const translationKeys = items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n if (translationKeys.length === 0) {\n return of([]);\n }\n return this.translate.stream(translationKeys).pipe(map(translations => items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(translations, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n })));\n }\n else {\n return of(items);\n }\n }\n adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n }\n else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n propagateValueChange(value) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DropdownComponent, isStandalone: true, selector: \"mng-dropdown\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInput: { classPropertyName: \"optionsValuePropertyInput\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsDisabledProperty: { classPropertyName: \"optionsDisabledProperty\", publicName: \"optionsDisabledProperty\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirstItemInput: { classPropertyName: \"selectFirstItemInput\", publicName: \"selectFirstItem\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, changeValueOnBlur: { classPropertyName: \"changeValueOnBlur\", publicName: \"changeValueOnBlur\", isSignal: true, isRequired: false, transformFunction: null }, loadingInput: { classPropertyName: \"loadingInput\", publicName: \"loading\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, allowInput: { classPropertyName: \"allowInput\", publicName: \"allowInput\", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: \"appendTo\", publicName: \"appendTo\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeSelect\", first: true, predicate: Select, descendants: true, isSignal: true }, { propertyName: \"primeMultiselect\", first: true, predicate: MultiSelect, descendants: true, isSignal: true }], ngImport: i0, template: \"@if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n} @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n}\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"component\", type: MultiSelect, selector: \"p-multiSelect, p-multiselect, p-multi-select\", inputs: [\"id\", \"ariaLabel\", \"styleClass\", \"panelStyle\", \"panelStyleClass\", \"inputId\", \"readonly\", \"group\", \"filter\", \"filterPlaceHolder\", \"filterLocale\", \"overlayVisible\", \"tabindex\", \"dataKey\", \"ariaLabelledBy\", \"displaySelectedLabel\", \"maxSelectedLabels\", \"selectionLimit\", \"selectedItemsLabel\", \"showToggleAll\", \"emptyFilterMessage\", \"emptyMessage\", \"resetFilterOnHide\", \"dropdownIcon\", \"chipIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"showHeader\", \"filterBy\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"loading\", \"virtualScrollItemSize\", \"loadingIcon\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"display\", \"autocomplete\", \"showClear\", \"autofocus\", \"placeholder\", \"options\", \"filterValue\", \"selectAll\", \"focusOnHover\", \"filterFields\", \"selectOnFocus\", \"autoOptionFocus\", \"highlightOnSelect\", \"size\", \"variant\", \"fluid\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onClear\", \"onPanelShow\", \"onPanelHide\", \"onLazyLoad\", \"onRemove\", \"onSelectAllChange\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-dropdown', providers: [DROPDOWN_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, Select, MultiSelect], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n} @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n}\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZm9ybS9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFFVixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLEVBQStDLE1BQU0scUJBQXFCLENBQUM7QUFDOUYsT0FBTyxFQUFDLE1BQU0sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFnQixhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV2SCxPQUFPLEVBQ0gsb0JBQW9CLEVBRXBCLGVBQWUsRUFFZixhQUFhLEVBQ2IsWUFBWSxJQUFJLG1CQUFtQixFQUNuQyxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUMxQixNQUFNLDZCQUE2QixDQUFDOzs7QUFH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LE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTTtnQkFDUCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QjtnQkFDSSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQzs4R0FoWlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsbWdHQUpmLENBQUMsdUJBQXVCLENBQUMsdUVBcUNMLE1BQU0sbUdBQ0QsV0FBVyxnRUNwRm5ELDB5REE2Q0EsMkNERTZCLFdBQVcsK1ZBQUUsTUFBTSxpOUJBQUUsV0FBVyw2dUNBQS9DLGFBQWE7OzJGQUdkLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDSSxjQUFjLGFBRWIsQ0FBQyx1QkFBdUIsQ0FBQyxXQUMzQixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxtQkFDekMsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXhpc3RpbmdQcm92aWRlcixcbiAgICBJbmplY3RvcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNdWx0aVNlbGVjdCwgTXVsdGlTZWxlY3RCbHVyRXZlbnQsIE11bHRpU2VsZWN0Q2hhbmdlRXZlbnR9IGZyb20gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnO1xuaW1wb3J0IHtTZWxlY3QsIFNlbGVjdENoYW5nZUV2ZW50fSBmcm9tICdwcmltZW5nL3NlbGVjdCc7XG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBvZiwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNJbnRlcm5hbEVycm9yLFxuICAgIERhdGFMaXN0UGFyYW1zLFxuICAgIEZpbHRlck1hdGNoTW9kZSxcbiAgICBJTG9va3VwRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgdG9PYnNlcnZhYmxlIGFzIGNvbW1vbnNUb09ic2VydmFibGUsXG4gICAgZnJvbVN1YnNjcmliZUVycm9yLFxuICAgIGdldEVycm9yTG9nTGV2ZWwsXG4gICAgbmFycm93STE4blRvVHJhbnNsYXRpb25cbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBEUk9QRE9XTl9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0RST1BET1dOX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlUGlwZSwgRm9ybXNNb2R1bGUsIFNlbGVjdCwgTXVsdGlTZWxlY3RdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnRHJvcGRvd25Db21wb25lbnQnKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBkYXRhUHJvdmlkZXIgPSBpbnB1dDxJTG9va3VwRGF0YVByb3ZpZGVyPGFueSwgYW55LCBhbnksIGFueT4+KCk7XG4gICAgcHVibGljIG9wdGlvbnMgPSBpbnB1dDxBcnJheTxhbnk+PihbXSk7XG4gICAgcHVibGljIG9wdGlvbnNUcmFja1Byb3BlcnR5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge2FsaWFzOiAnb3B0aW9uc0xhYmVsUHJvcGVydHknfSk7XG4gICAgcHVibGljIG9wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIG9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge2FsaWFzOiAnb3B0aW9uc1ZhbHVlUHJvcGVydHknfSk7XG4gICAgcHVibGljIG9wdGlvbnNEaXNhYmxlZFByb3BlcnR5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBzaG93Q2xlYXIgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBzZWxlY3RGaXJzdEl0ZW1JbnB1dCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ3NlbGVjdEZpcnN0SXRlbSd9KTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBkcm9wZG93bkNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgY2hhbmdlVmFsdWVPbkJsdXIgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBsb2FkaW5nSW5wdXQgPSBpbnB1dChmYWxzZSwge2FsaWFzOiAnbG9hZGluZycsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBkaXNhYmxlZElucHV0ID0gaW5wdXQoZmFsc2UsIHthbGlhczogJ2Rpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGFsbG93SW5wdXQgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBhcHBlbmRUbyA9IGlucHV0PHN0cmluZyB8IG51bGw+KCdib2R5Jyk7XG5cbiAgICBwdWJsaWMgaW5saW5lU2VhcmNoID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2VhcmNoVHJpbSA9IGlucHV0PElucHV0VHJpbVR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIHB1YmxpYyBibHVyID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gICAgcHVibGljIHByaW1lU2VsZWN0ID0gdmlld0NoaWxkKFNlbGVjdCk7XG4gICAgcHVibGljIHByaW1lTXVsdGlzZWxlY3QgPSB2aWV3Q2hpbGQoTXVsdGlTZWxlY3QpO1xuXG4gICAgcHJpdmF0ZSBfdmFsdWU/OiBhbnkgfCBudWxsO1xuICAgIHB1YmxpYyBuZ01vZGVsVmFsdWUgPSBzaWduYWw8dW5kZWZpbmVkIHwgbnVsbCB8IGFueT4odW5kZWZpbmVkKTtcblxuICAgIHByaXZhdGUgX2xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ0lucHV0KCkgfHwgdGhpcy5fbG9hZGluZygpKTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc2FibGVkSW5wdXQoKSB8fCB0aGlzLl9kaXNhYmxlZCgpKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueSA9ICgpID0+IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uVG91Y2hlZEZuOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyU2VydmljZTogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgaXRlbXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIGZpcnN0VGltZVNldHRpbmdJdGVtcyA9IHRydWU7XG5cbiAgICBwcml2YXRlIGlzRHJvcGRvd25QYW5lbFNob3duID0gZmFsc2U7XG5cbiAgICAvLyB1c2VkIHdpdGggY3VzdG9tIGlucHV0IGZ1bmN0aW9uYWxpdHlcbiAgICBwcml2YXRlIGZldGNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIG9wdGlvbnNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBjdXN0b21JbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBzZXR1cCB0cmFuc2xhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfV9pMThuYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgJiYgIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0aXRsZV9pMThuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBJbnZhbGlkIHVzZSB3aXRoIHZhbHVlICgke3RoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdEcm9wZG93bkNvbXBvbmVudEVycm9yJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCk7XG4gICAgfSk7XG4gICAgcHVibGljIG9wdGlvbnNWYWx1ZVByb3BlcnR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgLy8gc2V0dXAgdHJhbnNsYXRpb24gcHJvcGVydGllc1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKX0pIGFuZCBsYWJlbCAoJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfSkgcHJvcGVydHkgc2V0dXAuYCwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRHJvcGRvd25Db21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ01vZGVsVmFsdWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21JbnB1dFN1YmplY3RcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2ID0+IHRoaXMuc2VhcmNoSXRlbXModikpO1xuXG4gICAgICAgIHRoaXMuZmV0Y2hJdGVtcygpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYGFsbG93SW5wdXQgaXMgbm90IHN1cHBvcnRlZCB3aGVuIG9wdGlvbnNMYWJlbFByb3BlcnR5IGlzIGRlZmluZWQgYnV0IG9wdGlvbnNWYWx1ZVByb3BlcnR5IGlzIG1pc3NpbmcuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcyBjaGVjayBpcyByZXF1aXJlZCBiZWNhdXNlIGFuZ3VsYXIgaW4gc29tZSBjYXNlcyB3cml0ZXMgbnVsbCB2YWx1ZVxuICAgICAgICAvLyBiZWZvcmUgdmFsdWUgYWNjZXNzb3IgaXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgLy8gaWYgZm9ybSBjb250cm9sIHZhbHVlIGlzIG9mIHByaW1pdGl2ZSB0eXBlIChleDogZW51bXMpIHRoZW4gd3JpdGUgdmFsdWUgaXMgbm90IGNhbGxlZCAod2UgdGhpbmspXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB3cml0ZSB2YWx1ZSBpbW1lZGlhdGVseSAtIGl0IGlzIGltcG9ydGFudCBzbyB0aGF0IGZpcnN0IHNlbGVjdCBpcyBub3QgdHJpZ2dlcmVkIVxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmFkanVzdFZhbHVlT25JdGVtc1ZhbHVlUHJvcGVydHlUeXBlTWlzbWF0Y2godHJ1ZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGlmIGFsbG93Q3VzdG9tSW5wdXQgaXMgZW5hYmxlZCwgdGhlIGlucHV0IGVsZW1lbnQgbWlnaHQgc3RpbGwgYmUgaW4gZm9jdXMgd2l0aCB0aGVcbiAgICAgICAgLy8gZHJvcGRvd24gcGFuZWwgaGlkZGVuIC0gdGhhdCdzIHdoeSB0aGUgIXRoaXMuYWxsb3dDdXN0b21JbnB1dCgpIGNoZWNrIGlzIG5lZWRlZFxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biAmJiAhdGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIGJsdXIgZXZlbnRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmltZURyb3Bkb3duID0gdGhpcy5wcmltZVNlbGVjdCgpO1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpICYmIHByaW1lRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UocHJpbWVEcm9wZG93bi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkNoYW5nZShldmVudDogU2VsZWN0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKCkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UoZXZlbnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHR5cGVvZiBldmVudC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgZXZlbnQudmFsdWUubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy50cmltVmFsdWUoZXZlbnQudmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hJdGVtcyhxdWVyeT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byByZWZldGNoLCBqdXN0IHNldCBpdGVtcyBmcm9tIGNhY2hlZCBmZXRjaGVkIGl0ZW1zXG4gICAgICAgICAgICB0aGlzLnNldEl0ZW1zKHRoaXMuZmV0Y2hlZEl0ZW1zLCBxdWVyeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoSXRlbXMocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaEl0ZW1zKHF1ZXJ5Pzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuZGF0YVByb3ZpZGVyLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KSwgdG9PYnNlcnZhYmxlKHRoaXMub3B0aW9ucywge2luamVjdG9yOiB0aGlzLmluamVjdG9yfSldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtkYXRhUHJvdmlkZXIsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlID0gZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlID8gdGhpcy5pbmplY3Rvci5nZXQ8YW55PihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBEYXRhTGlzdFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogdGhpcy5hbGxvd0lucHV0KCkgPyAxMCA6IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gW3twcm9wZXJ0eTogb3B0aW9uc0xhYmVsUHJvcGVydHl9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeSAhPSBudWxsICYmIG9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zTGFiZWxQcm9wZXJ0eV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21tb25zVG9PYnNlcnZhYmxlKGRhdGFQcm92aWRlci5sb29rdXAocGFyYW1zLCB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UsIHF1ZXJ5KSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yob3B0aW9ucyA/PyBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy50cmFuc2Zvcm1JdGVtcyhpdGVtcykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWRJdGVtcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhyZXMsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpOyAvLyBvbmx5IHNlbGVjdHMgZmlyc3QgaXRlbSBpZiBzZWxlY3RGaXJzdEl0ZW1JbnB1dCBpcyBzZXQgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZU9uSXRlbXNWYWx1ZVByb3BlcnR5VHlwZU1pc21hdGNoKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhbXSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZnJvbVN1YnNjcmliZUVycm9yKGVyciwgJ0Ryb3Bkb3duQ29tcG9uZW50RXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGVycm9yLCBnZXRFcnJvckxvZ0xldmVsKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXRlbXMgaW4gdGhlIGRyb3Bkb3duLiBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkLCB0aGUgaXRlbXMgd2lsbCBiZSBmaWx0ZXJlZCBieSB0aGUgcXVlcnkgKHVzaW5nIGEgJ3N0YXJ0cyB3aXRoJyBmaWx0ZXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBzZXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtczogQXJyYXk8YW55PiwgcXVlcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICAvLyBqdXN0IHZhbGlkYXRlIHRoYXQgaXRlbXMgYXJlIGFzIGV4cGVjdGVkIGluIGNhc2Ugb2YgYWxsb3dpbmcgaW5wdXRcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbXMgY2FuIGVpdGhlciBiZSBvYmplY3RzICh3aXRoIG9wdGlvbnNWYWx1ZVByb3BlcnR5IHNwZWNpZnlpbmcgYSBzdHJpbmcgcHJvcGVydHkpIG9yIHN0cmluZ3NcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1zWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhbGxvd0lucHV0IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBvcHRpb25WYWx1ZVByb3BlcnR5IGlzIG5vdCBzZXQgYW5kIHRoZSBkcm9wZG93biBpdGVtcyBhcmUgb2YgdHlwZSBvYmplY3QuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbXNbMF0/Llt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkhXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgYWxsb3dJbnB1dCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSB2YWx1ZSBwcm9wZXJ0eSAoc3BlY2lmaWVkIHdpdGggb3B0aW9uc1ZhbHVlUHJvcGVydHkpIGlzIG9mIHR5cGUgc3RyaW5nLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKHR5cGVvZiBpdGVtc1swXSA9PT0gJ3N0cmluZycgJiYgIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJ2FsbG93SW5wdXQnIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBpdGVtcyBvZiB0eXBlIHN0cmluZyBvciBvYmplY3QuIEZvciBvYmplY3QgdHlwZXMsIGVuc3VyZSB0aGF0IHRoZSAnb3B0aW9uc1ZhbHVlUHJvcGVydHknIGlzIHNwZWNpZmllZCBhbmQgcmVwcmVzZW50cyBhIHByb3BlcnR5IG9mIHR5cGUgc3RyaW5nLmBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiAodGhpcy5pbmxpbmVTZWFyY2goKSB8fCB0aGlzLmFsbG93SW5wdXQoKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TG93ZXJDYXNlID0gcXVlcnk/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKGkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtTGFiZWwgPSBpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSAmJiB0eXBlb2YgaSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaVtvcHRpb25zTGFiZWxQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtTGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlMb3dlckNhc2UgPT0gbnVsbCB8fCAhcXVlcnlMb3dlckNhc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1MYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaXRlbUxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHF1ZXJ5TG93ZXJDYXNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5zZXQoWy4uLmZpbHRlcmVkSXRlbXNdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFsuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsU2hvdygpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsSGlkZSgpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTXVsdGlzZWxlY3RDaGFuZ2UoZXZlbnQ6IE11bHRpU2VsZWN0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKCkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UoZXZlbnQudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25NdWx0aXNlbGVjdEJsdXIoZXZlbnQ6IE11bHRpU2VsZWN0Qmx1ckV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQub3JpZ2luYWxFdmVudCk7XG4gICAgfVxuXG4gICAgb25NdWx0aXNlbGVjdFBhbmVsSGlkZSgpIHtcbiAgICAgICAgY29uc3QgcHJpbWVNdWx0aXNlbGVjdCA9IHRoaXMucHJpbWVNdWx0aXNlbGVjdCgpO1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpICYmIHByaW1lTXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UocHJpbWVNdWx0aXNlbGVjdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdEZpcnN0SXRlbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RUaW1lU2V0dGluZ0l0ZW1zICYmIHRoaXMuaXRlbXMoKS5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0Rmlyc3RJdGVtSW5wdXQoKSAmJiAhdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNWYWx1ZVByb3BlcnR5ID0gdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zVmFsdWVQcm9wZXJ0eSA/IHRoaXMuaXRlbXMoKVswXVtvcHRpb25zVmFsdWVQcm9wZXJ0eV0gOiB0aGlzLml0ZW1zKClbMF07XG4gICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQodmFsdWUpOyAvLyBzZXQgdG8gd3JpdGUgZm9yIGlucHV0XG4gICAgICAgICAgICB0aGlzLmZpcnN0VGltZVNldHRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybUl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25LZXlzOiBzdHJpbmdbXSA9IGl0ZW1zLm1hcChcbiAgICAgICAgICAgICAgICBpdGVtID0+ICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSA/IChpdGVtW3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgYXMga2V5b2Ygb2JqZWN0XSBhcyBzdHJpbmcpIDogaXRlbSkgYXMgc3RyaW5nXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAodHJhbnNsYXRpb25LZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5zdHJlYW0odHJhbnNsYXRpb25LZXlzKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCh0cmFuc2xhdGlvbnMgPT5cbiAgICAgICAgICAgICAgICAgICAgaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBpdGVtW3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgYXMga2V5b2Ygb2JqZWN0XSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uKHRyYW5zbGF0aW9ucywgbGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIFt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCkhXTogdHJhbnNsYXRpb259O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW19O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uc1tpdGVtXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpIV06IHRyYW5zbGF0aW9uID8/IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkhXTogaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZihpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkanVzdFZhbHVlT25JdGVtc1ZhbHVlUHJvcGVydHlUeXBlTWlzbWF0Y2goc2V0TmdNb2RlbFZhbHVlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1ZhbHVlUHJvcCA9IHRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKTtcbiAgICAgICAgaWYgKG9wdGlvbnNWYWx1ZVByb3AgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbCAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID4gMCAmJiB0aGlzLml0ZW1zKClbMF1bb3B0aW9uc1ZhbHVlUHJvcF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlLmxlbmd0aCA+IDAgJiYgdHlwZW9mIHRoaXMuaXRlbXMoKVswXVtvcHRpb25zVmFsdWVQcm9wXSAhPT0gdHlwZW9mIHRoaXMuX3ZhbHVlWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlcyA9IHRoaXMuX3ZhbHVlLm1hcCh2ID0+IHYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuaXRlbXMoKS5maWx0ZXIoaSA9PiBpW29wdGlvbnNWYWx1ZVByb3BdICE9IG51bGwgJiYgc3RyaW5nVmFsdWVzLmluY2x1ZGVzKGlbb3B0aW9uc1ZhbHVlUHJvcF0udG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldChzZWxlY3RlZE9wdGlvbnMubWFwKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5pdGVtcygpWzBdW29wdGlvbnNWYWx1ZVByb3BdICE9PSB0eXBlb2YgdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyB0eXBlcyBkb24ndCBtYXRjaCwgc2VhcmNoIGFuZCBjb21wYXJlIGJ5IHN0cmluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5pdGVtcygpLmZpbmQoaSA9PiBpW29wdGlvbnNWYWx1ZVByb3BdICE9IG51bGwgJiYgaVtvcHRpb25zVmFsdWVQcm9wXS50b1N0cmluZygpID09PSB0aGlzLl92YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHNlbGVjdGVkT3B0aW9uW29wdGlvbnNWYWx1ZVByb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZXROZ01vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIC8vIGZvcmNlIHdyaXRlIHRvIG5nTW9kZWxWYWx1ZSBhbnl3YXlcbiAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVZhbHVlQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmltcyB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBiYXNlZCBvbiB0aGUgc2VhcmNoIHRyaW1taW5nIG1vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgdHJpbW1lZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHRyaW1WYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWFyY2hUcmltKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW1TdGFydCgpO1xuICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbSgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKCFtdWx0aXNlbGVjdCgpKSB7XG4gICAgPHAtc2VsZWN0XG4gICAgICAgIFsobmdNb2RlbCldPVwibmdNb2RlbFZhbHVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbZGF0YUtleV09XCJvcHRpb25zVHJhY2tQcm9wZXJ0eSgpXCJcbiAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbnNMYWJlbFByb3BlcnR5KClcIlxuICAgICAgICBbb3B0aW9uVmFsdWVdPVwib3B0aW9uc1ZhbHVlUHJvcGVydHkoKVwiXG4gICAgICAgIFtvcHRpb25EaXNhYmxlZF09XCJvcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSgpXCJcbiAgICAgICAgW29wdGlvbnNdPVwiaXRlbXMoKVwiXG4gICAgICAgIFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIlxuICAgICAgICBbZWRpdGFibGVdPVwiYWxsb3dJbnB1dCgpXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiY2xhc3NOYW1lKClcIlxuICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtmaWx0ZXJdPVwiaW5saW5lU2VhcmNoKCkgJiYgIWFsbG93SW5wdXQoKVwiXG4gICAgICAgIFtmaWx0ZXJCeV09XCJvcHRpb25zTGFiZWxQcm9wZXJ0eSgpXCJcbiAgICAgICAgKG9uQmx1cik9XCJvbkRyb3Bkb3duQmx1cigkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRHJvcGRvd25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChvblNob3cpPVwib25Ecm9wZG93blBhbmVsU2hvdygpXCJcbiAgICAgICAgKG9uSGlkZSk9XCJvbkRyb3Bkb3duUGFuZWxIaWRlKClcIlxuICAgICAgICBbZHJvcGRvd25JY29uXT1cImxvYWRpbmcoKSA/ICdwaSBwaS1zcGlubmVyIHBpLXNwaW4nIDogJ3BpIHBpLWNoZXZyb24tZG93bidcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG8oKVwiPlxuICAgIDwvcC1zZWxlY3Q+XG59IEBlbHNlIHtcbiAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICBbbmdNb2RlbF09XCJuZ01vZGVsVmFsdWUoKVwiXG4gICAgICAgIFttYXhTZWxlY3RlZExhYmVsc109XCIxXCJcbiAgICAgICAgW3NlbGVjdGVkSXRlbXNMYWJlbF09XCInbW5nRHJvcGRvd24ubXVsdGlzZWxlY3RPdmVyTWF4RGlzcGxheUxpbWl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25zTGFiZWxQcm9wZXJ0eSgpXCJcbiAgICAgICAgW29wdGlvblZhbHVlXT1cIm9wdGlvbnNWYWx1ZVByb3BlcnR5KClcIlxuICAgICAgICBbb3B0aW9uRGlzYWJsZWRdPVwib3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKVwiXG4gICAgICAgIFtvcHRpb25zXT1cIml0ZW1zKClcIlxuICAgICAgICBbc3R5bGVDbGFzc109XCJjbGFzc05hbWUoKVwiXG4gICAgICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiZHJvcGRvd25DbGFzc05hbWUoKVwiXG4gICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cImZhbHNlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAob25DaGFuZ2UpPVwib25NdWx0aXNlbGVjdENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uUGFuZWxIaWRlKT1cIm9uTXVsdGlzZWxlY3RQYW5lbEhpZGUoKVwiXG4gICAgICAgIChvbkJsdXIpPVwib25NdWx0aXNlbGVjdEJsdXIoJGV2ZW50KVwiXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgIDwvcC1tdWx0aVNlbGVjdD5cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, booleanAttribute, effect, forwardRef, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const NUMBER_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport const NUMBER_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport class NumberRangeComponent {\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.useGrouping = input(true, ...(ngDevMode ? [{ debugName: \"useGrouping\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.minFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"minFractionDigits\" }] : []));\n this.maxFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"maxFractionDigits\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.keyDown = output();\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n writeValue(obj) {\n let start = null;\n let end = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n }\n else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n this.fromCtrl.setValue(start, { emitEvent: false });\n this.toCtrl.setValue(end, { emitEvent: false });\n }\n validate() {\n if (!this.required())\n return null;\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n return null;\n }\n onKeyDown(event) {\n this.keyDown.emit(event);\n }\n onBlur() {\n this.onTouchedFn();\n }\n toNumber(val) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n onValueChange() {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.7\", type: NumberRangeComponent, isStandalone: true, selector: \"mng-number-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: \"useGrouping\", publicName: \"useGrouping\", isSignal: true, isRequired: false, transformFunction: null }, minFractionDigits: { classPropertyName: \"minFractionDigits\", publicName: \"minFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: \"maxFractionDigits\", publicName: \"maxFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: \"keyDown\" }, providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], ngImport: i0, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n</div>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: InputNumber, selector: \"p-inputNumber, p-inputnumber, p-input-number\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"placeholder\", \"tabindex\", \"title\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"ariaLabel\", \"ariaRequired\", \"autocomplete\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"autofocus\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-number-range', providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, InputNumber], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n</div>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL251bWJlci1yYW5nZS9udW1iZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsV0FBVyxFQUdYLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUduQixVQUFVLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7O0FBSTNCLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFxQjtJQUN6RCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7SUFDbkQsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCO0lBQ3BELE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7SUFDbkQsS0FBSyxFQUFFLElBQUk7Q0FDZCxD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QUFwQixvQkFBb0IsMmpDQUxsQixDQUFDLDJCQUEyQixFQUFFLHNCQUFzQixDQUFDLDBCQ2pEcEUsd3dCQW9CQSw2TEQ4QmMsV0FBVyxzSUFBRSxtQkFBbUIsa05BQUUsV0FBVzs7MkZBSTlDLG9CQUFvQjtrQkFUaEMsU0FBUzsrQkFDSSxrQkFBa0IsYUFHakIsQ0FBQywyQkFBMkIsRUFBRSxzQkFBc0IsQ0FBQyxXQUN2RCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLENBQUMsbUJBQ3ZDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SW5wdXROdW1iZXJ9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TnVsbGFibGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfUkFOR0VfVkFMVUVfQUNDRVNTT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVyUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgTlVNQkVSX1JBTkdFX1ZBTElEQVRPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE51bWJlclJhbmdlQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctbnVtYmVyLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbnVtYmVyLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vbnVtYmVyLXJhbmdlLmNvbXBvbmVudC5jc3MnLFxuICAgIHByb3ZpZGVyczogW05VTUJFUl9SQU5HRV9WQUxVRV9BQ0NFU1NPUiwgTlVNQkVSX1JBTkdFX1ZBTElEQVRPUl0sXG4gICAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJbnB1dE51bWJlcl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJSYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgdXNlR3JvdXBpbmcgPSBpbnB1dCh0cnVlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIG1pbkZyYWN0aW9uRGlnaXRzID0gaW5wdXQ8bnVtYmVyPigpO1xuICAgIHB1YmxpYyBtYXhGcmFjdGlvbkRpZ2l0cyA9IGlucHV0PG51bWJlcj4oKTtcbiAgICBwdWJsaWMgcmVxdWlyZWQgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XG4gICAgICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZVxuICAgIH0pO1xuICAgIHB1YmxpYyB2ZXJ0aWNhbCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGtleURvd24gPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHByaXZhdGUgZnJvbVRvRm9ybUNvbnRyb2w6IEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBmcm9tOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIHRvOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueSA9ICgpID0+IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uVG91Y2hlZEZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblZhbGlkYXRvckNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBnZXQgZnJvbUN0cmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmdldCgnZnJvbScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ3RvJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZCgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UodGhpcy5mcm9tQ3RybC52YWx1ZUNoYW5nZXMsIHRoaXMudG9DdHJsLnZhbHVlQ2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uVmFsdWVDaGFuZ2UoKSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCAmJiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sPy5lbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCAmJiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sPy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IHN0YXJ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IGVuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwICYmICh0eXBlb2Ygb2JqWzBdID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqWzBdID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMudG9OdW1iZXIob2JqWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMSAmJiAodHlwZW9mIG9ialsxXSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9ialsxXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgZW5kID0gdGhpcy50b051bWJlcihvYmpbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmogPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRoaXMudG9OdW1iZXIob2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZnJvbUN0cmwuc2V0VmFsdWUoc3RhcnQsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMudG9DdHJsLnNldFZhbHVlKGVuZCwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5yZXF1aXJlZCgpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5mcm9tQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSB8fCB0aGlzLnRvQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmtleURvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b051bWJlcih2YWw6IE51bGxhYmxlPHN0cmluZyB8IG51bWJlcj4pIHtcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsID8/IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFsID0gdmFsLnJlcGxhY2VBbGwoJywnLCAnJyk7XG4gICAgICAgIGNvbnN0IG51bVZhbCA9IHBhcnNlRmxvYXQodmFsKTtcbiAgICAgICAgcmV0dXJuIGlzTmFOKG51bVZhbCkgPyBudWxsIDogbnVtVmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25WYWx1ZUNoYW5nZSgpIHtcbiAgICAgICAgY29uc3QgZnJvbURhdGUgPSB0aGlzLmZyb21DdHJsLnZhbHVlIGFzIERhdGU7XG4gICAgICAgIGNvbnN0IHRvRGF0ZSA9IHRoaXMudG9DdHJsLnZhbHVlIGFzIERhdGU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbihbZnJvbURhdGUsIHRvRGF0ZV0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xXCIgW2NsYXNzLmZsZXgtY29sXT1cInZlcnRpY2FsKClcIj5cbiAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZnJvbUN0cmxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgIFt1c2VHcm91cGluZ109XCJ1c2VHcm91cGluZygpXCJcbiAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIm1pbkZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwibWF4RnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgIFttYXhdPVwidG9DdHJsLnZhbHVlXCJcbiAgICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgIDxwLWlucHV0TnVtYmVyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJ0b0N0cmxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgIFt1c2VHcm91cGluZ109XCJ1c2VHcm91cGluZygpXCJcbiAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIm1pbkZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwibWF4RnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgIFttaW5dPVwiZnJvbUN0cmwudmFsdWVcIlxuICAgICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiIC8+XG48L2Rpdj5cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\nexport class InputEmptyValueDirective {\n constructor() {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n this.mngInputEmptyValue = input('undefined', ...(ngDevMode ? [{ debugName: \"mngInputEmptyValue\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #afterNextRenderRef;\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, { emitEvent: false });\n }\n }\n }\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue() {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputEmptyValueDirective, isStandalone: true, selector: \"[mngInputEmptyValue]\", inputs: { mngInputEmptyValue: { classPropertyName: \"mngInputEmptyValue\", publicName: \"mngInputEmptyValue\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputEmptyValue]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZW1wdHktdmFsdWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZm9ybS9zcmMvZGlyZWN0aXZlcy9pbnB1dC1lbXB0eS12YWx1ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQUtJOzs7O1dBSUc7UUFDSSx1QkFBa0IsR0FBRyxLQUFLLENBQWlCLFdBQVcsOERBQUMsQ0FBQztRQUV0RCxRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2Qyx3QkFBbUIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNEIsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFL0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0tBdUNOO0lBbERZLEdBQUcsQ0FBc0I7SUFDekIsVUFBVSxDQUF1QztJQUNqRCxTQUFTLENBQXFCO0lBRXZDLG1CQUFtQixDQU9oQjtJQUVIOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV6QyxpRkFBaUY7WUFDakYsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYztRQUNWLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxJQUFJLENBQUM7WUFDaEIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sRUFBRSxDQUFDO1lBQ2QsS0FBSyxXQUFXLENBQUM7WUFDakI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7OEdBekRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RW1wdHlWYWx1ZVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGNvbnZlcnRzIGVtcHR5IHN0cmluZyB2YWx1ZXMgdG8gdW5kZWZpbmVkIG9yIG51bGwgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gKiBDYW4gYWxzbyBiZSBjb25maWd1cmVkIHRvIGxlYXZlIGVtcHR5IHN0cmluZ3MgYXMgaXMuXG4gKlxuICogVXNhZ2U6XG4gKiBgYGBodG1sXG4gKiA8aW5wdXQgbW5nSW5wdXRFbXB0eVZhbHVlPVwidW5kZWZpbmVkXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gdW5kZWZpbmVkIChkZWZhdWx0IGJlaGF2aW9yKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZSAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gbnVsbFxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm51bGxcIiAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMZWF2ZSBlbXB0eSBzdHJpbmdzIGFzIGlzIChubyBjb252ZXJzaW9uKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm5vbmVcIiAvPlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdJbnB1dEVtcHR5VmFsdWVdJyxcbiAgICBob3N0OiB7JyhibHVyKSc6ICdvbkJsdXIoKSd9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0RW1wdHlWYWx1ZURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogSW5wdXQgcHJvcGVydHkgdGhhdCBzcGVjaWZpZXMgaG93IGVtcHR5IHN0cmluZyB2YWx1ZXMgc2hvdWxkIGJlIGhhbmRsZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBtbmdJbnB1dEVtcHR5VmFsdWUgPSBpbnB1dDxFbXB0eVZhbHVlVHlwZT4oJ3VuZGVmaW5lZCcpO1xuXG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHJlYWRvbmx5ICNuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNyZW5kZXJlci5saXN0ZW4oaW5wdXRDaGlsZEVsZW1lbnQsICdibHVyJywgKCkgPT4gdGhpcy5vbkJsdXIoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXIgZm9yIHRoZSBibHVyIGV2ZW50LlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgYW4gZW1wdHkgc3RyaW5nIGFuZCBjb252ZXJ0cyBpdCB0byB1bmRlZmluZWQsIG51bGwsIG9yIGxlYXZlcyBpdCBhcyBpc1xuICAgICAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIG9uQmx1cigpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNuZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gdGhpcy4jZ2V0RW1wdHlWYWx1ZSgpO1xuXG4gICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdmFsdWUgaWYgd2UncmUgbm90IHVzaW5nICdub25lJyBvcHRpb24gKHdoaWNoIHdvdWxkIHJldHVybiAnJylcbiAgICAgICAgICAgIGlmIChlbXB0eVZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuI25nQ29udHJvbC5jb250cm9sLnNldFZhbHVlKGVtcHR5VmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBlbXB0eSB2YWx1ZSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHVuZGVmaW5lZCwgbnVsbCwgb3IgZW1wdHkgc3RyaW5nIGJhc2VkIG9uIHRoZSBtbmdJbnB1dEVtcHR5VmFsdWUgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgICNnZXRFbXB0eVZhbHVlKCk6IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubW5nSW5wdXRFbXB0eVZhbHVlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class InputTrimDirective {\n constructor() {\n this.mngInputTrim = input(...(ngDevMode ? [undefined, { debugName: \"mngInputTrim\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#inputEl = this.#el.nativeElement;\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#inputEl = inputChildElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #inputEl;\n #afterNextRenderRef;\n onBlur() {\n const control = this.#ngControl?.control;\n const value = control ? control.value : this.#inputEl.value;\n let trimmedValue;\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, { emitEvent: false });\n }\n else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n }\n #getTrimmedValue(value) {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputTrimDirective, isStandalone: true, selector: \"[mngInputTrim]\", inputs: { mngInputTrim: { classPropertyName: \"mngInputTrim\", publicName: \"mngInputTrim\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputTrim]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9mb3JtL3NyYy9kaXJlY3RpdmVzL2lucHV0LXRyaW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXpDLE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFLb0IsaUJBQVksR0FBRyxLQUFLLGtFQUFpQixDQUFDO1FBRTdDLFFBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLGFBQVEsR0FBcUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFpQyxDQUFDO1FBRXhFLHdCQUFtQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUE0QixDQUFDO1lBQzVELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUvRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQXFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FnQ047SUE5Q1ksR0FBRyxDQUFzQjtJQUN6QixVQUFVLENBQXVDO0lBQ2pELFNBQVMsQ0FBcUI7SUFFdkMsUUFBUSxDQUFnRTtJQUV4RSxtQkFBbUIsQ0FRaEI7SUFFTyxNQUFNO1FBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLFlBQW9CLENBQUM7UUFFekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVDLElBQUksWUFBWSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7Z0JBQ3ZDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLEtBQUssT0FBTztnQkFDUixPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0I7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7OEdBaERRLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21uZ0lucHV0VHJpbV0nLFxuICAgIGhvc3Q6IHsnKGJsdXIpJzogJ29uQmx1cigpJ31cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUcmltRGlyZWN0aXZlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW5nSW5wdXRUcmltID0gaW5wdXQ8SW5wdXRUcmltVHlwZT4oKTtcblxuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICByZWFkb25seSAjbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAjaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNpbnB1dEVsID0gaW5wdXRDaGlsZEVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLmxpc3RlbihpbnB1dENoaWxkRWxlbWVudCwgJ2JsdXInLCAoKSA9PiB0aGlzLm9uQmx1cigpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sID8gY29udHJvbC52YWx1ZSA6IHRoaXMuI2lucHV0RWwudmFsdWU7XG4gICAgICAgIGxldCB0cmltbWVkVmFsdWU6IHN0cmluZztcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJpbW1lZFZhbHVlID0gdGhpcy4jZ2V0VHJpbW1lZFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRyaW1tZWRWYWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodHJpbW1lZFZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2lucHV0RWwudmFsdWUgPSB0cmltbWVkVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldFRyaW1tZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm1uZ0lucHV0VHJpbSgpKSB7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSxhQUFhO0FBQ2IsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL251bWJlci1yYW5nZS9udW1iZXItcmFuZ2UuY29tcG9uZW50JztcblxuLy8gZGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2lucHV0LWVtcHR5LXZhbHVlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtdHJpbS5kaXJlY3RpdmUnO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["toObservable","commonsToObservable","map"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../tmp-esm2022/form/components/autocomplete/autocomplete.component.js","../tmp-esm2022/form/components/date-range/date-range.component.js","../tmp-esm2022/form/components/dropdown/dropdown.component.js","../tmp-esm2022/form/components/number-range/number-range.component.js","../tmp-esm2022/form/directives/input-empty-value.directive.js","../tmp-esm2022/form/directives/input-trim.directive.js","../tmp-esm2022/form/components/autocomplete/autocomplete-template.directive.js","../tmp-esm2022/form/components/date-range/date-range-template.directive.js","../tmp-esm2022/form/components/dropdown/dropdown-template.directive.js","../tmp-esm2022/form/components/number-range/number-range-template.directive.js","../tmp-esm2022/form/index.js","../tmp-esm2022/form/mediusinc-mng-commons-form.js"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { ReplaySubject, of, switchMap, take } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation, toObservable } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\nexport class AutocompleteComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.logger = inject(LoggerService).create('AutocompleteComponent');\n this.dataProvider = input.required(...(ngDevMode ? [{ debugName: \"dataProvider\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsValuePropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInit\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.openOnFocus = input(false, ...(ngDevMode ? [{ debugName: \"openOnFocus\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.autoClear = input(false, ...(ngDevMode ? [{ debugName: \"autoClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirst = input(false, ...(ngDevMode ? [{ debugName: \"selectFirst\", transform: booleanAttribute }] : [{ transform: booleanAttribute }])); //on every input field change return first given value (or null)\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", transform: booleanAttribute, alias: 'disabled' }] : [{ transform: booleanAttribute, alias: 'disabled' }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeAutocomplete = viewChild(AutoComplete, ...(ngDevMode ? [{ debugName: \"primeAutocomplete\" }] : []));\n this.isInited = false;\n this.searchSubscription = null;\n this.dataProviderService = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.disabled = computed(() => this._disabled() || this.disabledInput(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.suggestions = signal([], ...(ngDevMode ? [{ debugName: \"suggestions\" }] : []));\n this.isPanelShown = false;\n this.isFocused = false;\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsValuePropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n ngOnInit() {\n this.setItemsAndDataProvider();\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n onSearch(event, isInit = false) {\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n const params = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n selectFirstItem() {\n if (!this.selectFirst() || this.multiselect())\n return;\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n }\n else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n }\n else if (this.multiselect()) {\n newValue = [newValue];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n }\n else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event) {\n this.isFocused = true;\n }\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n }\n else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onShow() {\n this.isPanelShown = true;\n }\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n onClear() {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n this.setItemsAndDataProvider();\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem = { [optionsValuePropertyInit]: value };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n }\n else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n }\n else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n }\n else {\n this.setValueFromWrite(value);\n }\n }\n setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n this.isInited = true;\n }\n setValueFromWrite(value) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n }\n else {\n this.ngModelValue.set(value);\n }\n }\n getLookup(params, query) {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n return this.translate.stream(translatedItems).pipe(map((translations) => this.i18nPopulateItems(items, translations)));\n }\n else {\n return of(items);\n }\n }));\n }\n i18nGetItemsKeys(items) {\n return items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n }\n i18nPopulateItems(items, i18nMap) {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(i18nMap, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = narrowI18nToTranslation(i18nMap, item);\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n });\n }\n setSuggestionsFromItems(items, query) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n }\n else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n setValue(value, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n }\n else {\n this.ngModelValue.set(value);\n }\n this.propagateValueChange(value);\n }\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n propagateValueChange(value) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n convertValueWithOptionsValuePropSetting(value) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n }\n else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n }\n else {\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: AutocompleteComponent, isStandalone: true, selector: \"mng-autocomplete\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: true, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInit: { classPropertyName: \"optionsValuePropertyInit\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: \"openOnFocus\", publicName: \"openOnFocus\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, autoClear: { classPropertyName: \"autoClear\", publicName: \"autoClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirst: { classPropertyName: \"selectFirst\", publicName: \"selectFirst\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeAutocomplete\", first: true, predicate: AutoComplete, descendants: true, isSignal: true }], ngImport: i0, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n <p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n </p-autoComplete>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AutoComplete, selector: \"p-autoComplete, p-autocomplete, p-auto-complete\", inputs: [\"minLength\", \"minQueryLength\", \"delay\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"readonly\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"autoHighlight\", \"forceSelection\", \"type\", \"autoZIndex\", \"baseZIndex\", \"ariaLabel\", \"dropdownAriaLabel\", \"ariaLabelledBy\", \"dropdownIcon\", \"unique\", \"group\", \"completeOnFocus\", \"showClear\", \"dropdown\", \"showEmptyMessage\", \"dropdownMode\", \"multiple\", \"tabindex\", \"dataKey\", \"emptyMessage\", \"showTransitionOptions\", \"hideTransitionOptions\", \"autofocus\", \"autocomplete\", \"optionGroupChildren\", \"optionGroupLabel\", \"overlayOptions\", \"suggestions\", \"optionLabel\", \"optionValue\", \"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"selectOnFocus\", \"searchLocale\", \"optionDisabled\", \"focusOnHover\", \"typeahead\", \"appendTo\"], outputs: [\"completeMethod\", \"onSelect\", \"onUnselect\", \"onFocus\", \"onBlur\", \"onDropdownClick\", \"onClear\", \"onKeyUp\", \"onShow\", \"onHide\", \"onLazyLoad\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-autocomplete', providers: [AUTOCOMPLETE_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, AutoComplete, InputGroup, InputGroupAddon, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n <p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n </p-autoComplete>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQXVCLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBb0IsYUFBYSxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQzFHLE9BQU8sRUFBQyxZQUFZLEVBQWdGLE1BQU0sc0JBQXNCLENBQUM7QUFDakksT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQWEsYUFBYSxFQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILG9CQUFvQixFQUVwQixlQUFl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Q0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQzs4R0E1Y1EscUJBQXFCO2tHQUFyQixxQkFBcUIsd2lGQUpuQixDQUFDLDJCQUEyQixDQUFDLDZFQStCRixZQUFZLGdFQ25GdEQsdWtEQXlDQSwyQ0RZNkIsV0FBVywrVkFBRSxZQUFZLGtvQ0FBRSxVQUFVLDhHQUFFLGVBQWUsbUhBQUUsZ0JBQWdCLCtJQUF2RixhQUFhOzsyRkFHZCxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksa0JBQWtCLGFBRWpCLENBQUMsMkJBQTJCLENBQUMsV0FDL0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLG1CQUNqRix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtTdHJpY3RUcmFuc2xhdGlvbiwgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRpb25PYmplY3R9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGUsIEF1dG9Db21wbGV0ZUNvbXBsZXRlRXZlbnQsIEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50LCBBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50fSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0lucHV0R3JvdXB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XG5pbXBvcnQge0lucHV0R3JvdXBBZGRvbn0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBEYXRhTGlzdFBhcmFtcyxcbiAgICBGaWx0ZXJNYXRjaE1vZGUsXG4gICAgSUxvb2t1cERhdGFQcm92aWRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIGZyb21TdWJzY3JpYmVFcnJvcixcbiAgICBnZXRFcnJvckxvZ0xldmVsLFxuICAgIG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uLFxuICAgIHRvT2JzZXJ2YWJsZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJbnB1dFRyaW1UeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcblxuaW1wb3J0IHtBdXRvY29tcGxldGVUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9hdXRvY29tcGxldGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0FVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZVBpcGUsIEZvcm1zTW9kdWxlLCBBdXRvQ29tcGxldGUsIElucHV0R3JvdXAsIElucHV0R3JvdXBBZGRvbiwgTmdUZW1wbGF0ZU91dGxldF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnQXV0b2NvbXBsZXRlQ29tcG9uZW50Jyk7XG5cbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQucmVxdWlyZWQ8SUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueSwgYW55LCBhbnk+PigpO1xuICAgIHB1YmxpYyBvcHRpb25zVHJhY2tQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNWYWx1ZVByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge2FsaWFzOiAnb3B0aW9uc0xhYmVsUHJvcGVydHknfSk7XG4gICAgcHVibGljIG9wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGlubGluZVNlYXJjaCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIG9wZW5PbkZvY3VzID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBkcm9wZG93bkNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgc2hvd0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgYXV0b0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2VsZWN0Rmlyc3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pOyAvL29uIGV2ZXJ5IGlucHV0IGZpZWxkIGNoYW5nZSByZXR1cm4gZmlyc3QgZ2l2ZW4gdmFsdWUgKG9yIG51bGwpXG4gICAgcHVibGljIHNlYXJjaFRyaW0gPSBpbnB1dDxJbnB1dFRyaW1UeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHB1YmxpYyBkaXNhYmxlZElucHV0ID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsIGFsaWFzOiAnZGlzYWJsZWQnfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlcyA9IGlucHV0PEF1dG9jb21wbGV0ZVRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIHB1YmxpYyBibHVyID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSBwcmltZUF1dG9jb21wbGV0ZSA9IHZpZXdDaGlsZChBdXRvQ29tcGxldGUpO1xuXG4gICAgcHJpdmF0ZSBpc0luaXRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGRhdGFQcm92aWRlclNlcnZpY2U6IGFueSA9IG51bGw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25DaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25Ub3VjaGVkRm46IGFueSA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfdmFsdWU/OiBhbnkgfCBudWxsO1xuICAgIHByaXZhdGUgX3Jhd1ZhbHVlPzogYW55IHwgbnVsbDtcbiAgICBwdWJsaWMgbmdNb2RlbFZhbHVlID0gc2lnbmFsPHVuZGVmaW5lZCB8IG51bGwgfCBhbnk+KHVuZGVmaW5lZCk7XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHVibGljIGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGlzYWJsZWQoKSB8fCB0aGlzLmRpc2FibGVkSW5wdXQoKSk7XG5cbiAgICBwdWJsaWMgc3VnZ2VzdGlvbnMgPSBzaWduYWw8QXJyYXk8YW55Pj4oW10pO1xuICAgIHByaXZhdGUgaXNQYW5lbFNob3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHVzZXJTZWxlY3RlZEl0ZW0/OiBhbnkgfCBhbnlbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0PzogUmVwbGF5U3ViamVjdDxhbnk+O1xuICAgIHByaXZhdGUgY3VycmVudFF1ZXJ5Pzogc3RyaW5nO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHByZXBlbmRUZW1wbGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRlbXBsYXRlcygpLmZpbHRlcih0ID0+IHQubmFtZSgpID09PSAncHJlcGVuZCcpKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ2FwcGVuZCcpKTtcblxuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9X2kxOG5gO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGl0bGVfaTE4bic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpO1xuICAgIH0pO1xuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVQcm9wZXJ0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZVdpdGhPcHRpb25zVmFsdWVQcm9wU2V0dGluZyh0aGlzLm5nTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gdGhpcy5uZ01vZGVsVmFsdWUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbXNBbmREYXRhUHJvdmlkZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RGaXJzdCgpICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vblNlYXJjaCh1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWFyY2goZXZlbnQ/OiBBdXRvQ29tcGxldGVDb21wbGV0ZUV2ZW50LCBpc0luaXQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIXRoaXMuaW5saW5lU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMudHJpbVZhbHVlKGV2ZW50Py5xdWVyeSk7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXJ5ID0gcXVlcnk7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zOiBEYXRhTGlzdFBhcmFtcyA9IHtcbiAgICAgICAgICAgIGxpbWl0OiA1MFxuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0aW9uc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gW3twcm9wZXJ0eTogb3B0aW9uc0xhYmVsUHJvcGVydHl9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiBvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgW29wdGlvbnNMYWJlbFByb3BlcnR5XToge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0IHx8ICF0aGlzLmlubGluZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSZXN1bHRDYWNoZVN1YmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5nZXRMb29rdXAocGFyYW1zLCBxdWVyeSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdD8ubmV4dChpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN1Z2dlc3Rpb25zRnJvbUl0ZW1zKGl0ZW1zLCBxdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbml0ICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RJdGVtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhbXSwgcXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGZyb21TdWJzY3JpYmVFcnJvcihlcnIsICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhlcnJvciwgZ2V0RXJyb3JMb2dMZXZlbChlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhyZXN1bHQsIHF1ZXJ5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RGaXJzdCgpIHx8IHRoaXMubXVsdGlzZWxlY3QoKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucygpO1xuICAgICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy51c2VyU2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHN1Z2dlc3Rpb25zWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VyU2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAvLyBoYW5kbGVzIHRoZSBjYXNlIGlmIHRoZSB1c2VyIHByb3ZpZGVzIGFuIGlucHV0IGFuZCBkZS1mb2N1c2VzIHRoZSBpbnB1dCBmaWVsZCBiZWZvcmUgc3VnZ2VzdGlvbnMgYXJlIGxvYWRlZCBvciBpZiB0aGVyZSBhcmUgbm8gc3VnZ2VzdGlvbnMgYXQgYWxsXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGJ5IHVzZXIgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBmcm9tIGFuIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3QuXG4gICAgICovXG4gICAgb25TZWxlY3QoZXZlbnQ6IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpICYmIHRoaXMuX3Jhd1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gWy4uLnRoaXMuX3Jhd1ZhbHVlLCBuZXdWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXNlbGVjdCgpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IFtuZXdWYWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYnkgdXNlciB3aGVuIHNlbGVjdGluZyBhbiBpdGVtIGZyb20gYW4gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdC5cbiAgICAgKi9cbiAgICBvblVuc2VsZWN0KGV2ZW50OiBBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KCkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9yYXdWYWx1ZSkgJiYgdGhpcy5fcmF3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY21wUHJvcCA9IHRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSA/PyB0aGlzLm9wdGlvbnNUcmFja1Byb3BlcnR5KCk7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX3Jhd1ZhbHVlLmZpbHRlcihpID0+IChjbXBQcm9wID8gaVtjbXBQcm9wXSAhPT0gZXZlbnQudmFsdWVbY21wUHJvcF0gOiBpICE9PSBldmVudC52YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlzZWxlY3QoKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBzZWxlY3RGaXJzdCBpdGVtIGFueXRpbWUgdGhlIGlucHV0IGZpZWxkIGdvZXMgb3V0IG9mIGZvY3VzIGFuZCBpZiB0aGUgc3VnZ2VzdGlvbnMgcGFuZWwgaXMgbm90IGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGlucHV0U2VhcmNoVmFsID0gdGhpcy5wcmltZUF1dG9jb21wbGV0ZSgpPy5pbnB1dEVMPy5uYXRpdmVFbGVtZW50Py52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0NsZWFyKCkgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbCAmJiAoaW5wdXRTZWFyY2hWYWwgPT0gbnVsbCB8fCBpbnB1dFNlYXJjaFZhbCA9PT0gJycpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzUGFuZWxTaG93bikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNob3coKSB7XG4gICAgICAgIHRoaXMuaXNQYW5lbFNob3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxscyB0aGUgc2VsZWN0Rmlyc3QgaXRlbSBhbnl0aW1lIHRoZSBzdWdnZXN0aW9ucyBwYW5lbCBpcyBjbG9zZWQgYW5kIGlucHV0IGZpZWxkIGlzbid0IGZvY3VzZWQuXG4gICAgICovXG4gICAgb25IaWRlKCkge1xuICAgICAgICB0aGlzLmlzUGFuZWxTaG93biA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh0aGlzLm11bHRpc2VsZWN0KCkgPyBbXSA6IG51bGwpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCkpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEl0ZW1zQW5kRGF0YVByb3ZpZGVyKCk7XG5cbiAgICAgICAgLy8gd3JpdGUgdmFsdWUgaW1tZWRpYXRlbHkgLSBpdCBpcyBpbXBvcnRhbnQgc28gdGhhdCBmaXJzdCBzZWxlY3QgaXMgbm90IHRyaWdnZXJlZCFcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCBvcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpO1xuICAgICAgICBpZiAob3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0ICYmIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEl0ZW06IGFueSA9IHtbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XTogdmFsdWV9O1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICBpZiAob3B0aW9uc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0SXRlbVtvcHRpb25zTGFiZWxQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW0gPSB0aGlzLnN1Z2dlc3Rpb25zKCkuZmluZChpID0+IGlbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XSA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Xcml0ZShtYXRjaGVkSXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9va3VwKHtcbiAgICAgICAgICAgICAgICAgICAgbGltaXQ6IDUwLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKGl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBsb29rdXAgZGF0YSBwcm92aWRlcnMgbm90IHVzaW5nIHF1ZXJ5IHBhcmFtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkSXRlbSA9IGl0ZW1zLmZpbmQoaSA9PiBpW29wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdF0gPT09IHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKG1hdGNoZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUoZGVmYXVsdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUoZGVmYXVsdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJdGVtc0FuZERhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IHRoaXMuZGF0YVByb3ZpZGVyKCk7XG4gICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyU2VydmljZSA9IGRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSA/IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4oZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlKSA6IG51bGw7XG5cbiAgICAgICAgdGhpcy5pc0luaXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZUZyb21Xcml0ZSh2YWx1ZTogYW55IHwgYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMuaTE4blBvcHVsYXRlSXRlbXMoW3ZhbHVlXSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmkxOG5HZXRJdGVtc0tleXMoW3ZhbHVlXSkpKVswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZ01vZGVsVmFsdWUoKSA9PSBudWxsICYmIHRoaXMuX3Jhd1ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIHZhbHVlIG11c3QgZmlyc3QgYmUgc2V0IHRvIHN5bmNocm9uaXNlIHN0YXRlcywgdGhlbiBpbiBuZXh0IGFzeW5jIGN5Y2xlIHNldCB0byB3YW50ZWQgbnVsbCB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHRoaXMuX3Jhd1ZhbHVlKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvb2t1cChwYXJhbXM6IERhdGFMaXN0UGFyYW1zLCBxdWVyeT86IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8YW55Pj4ge1xuICAgICAgICByZXR1cm4gdG9PYnNlcnZhYmxlKHRoaXMuZGF0YVByb3ZpZGVyKCkubG9va3VwKHBhcmFtcywgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlLCBxdWVyeSkpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRJdGVtcyA9IHRoaXMuaTE4bkdldEl0ZW1zS2V5cyhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnN0cmVhbSh0cmFuc2xhdGVkSXRlbXMpLnBpcGUobWFwKCh0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0KSA9PiB0aGlzLmkxOG5Qb3B1bGF0ZUl0ZW1zKGl0ZW1zLCB0cmFuc2xhdGlvbnMpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaTE4bkdldEl0ZW1zS2V5cyhpdGVtczogQXJyYXk8YW55Pik6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMubWFwKFxuICAgICAgICAgICAgaXRlbSA9PiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgPyAoaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nKSA6IGl0ZW0pIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaTE4blBvcHVsYXRlSXRlbXMoaXRlbXM6IEFycmF5PGFueT4sIGkxOG5NYXA6IFN0cmljdFRyYW5zbGF0aW9uKTogQXJyYXk8YW55PiB7XG4gICAgICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGl0ZW1bdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSBhcyBrZXlvZiBvYmplY3RdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gbmFycm93STE4blRvVHJhbnNsYXRpb24oaTE4bk1hcCwgbGFiZWwpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIFt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCkhXTogdHJhbnNsYXRpb259O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW19O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uKGkxOG5NYXAsIGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCkhXTogdHJhbnNsYXRpb24gPz8gaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSFdOiBpdGVtXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhpdGVtczogQXJyYXk8YW55PiwgcXVlcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5ICE9PSB0aGlzLmN1cnJlbnRRdWVyeSkge1xuICAgICAgICAgICAgLy8gU2tpcCBwcm9jZXNzaW5nIHRvIGF2b2lkIG91dGRhdGVkIHF1ZXJpZXMgZHVyaW5nIGlubGluZSBzZWFyY2ggdXBkYXRlcy5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgY29uc3QgcXVlcnlMb3dlckNhc2UgPSBxdWVyeT8udG9Mb3dlckNhc2UoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoaSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1MYWJlbCA9IGk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnNMYWJlbFByb3BlcnR5ICYmIHR5cGVvZiBpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtTGFiZWwgPSBpW29wdGlvbnNMYWJlbFByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1MYWJlbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeUxvd2VyQ2FzZSA9PSBudWxsIHx8ICFxdWVyeUxvd2VyQ2FzZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbUxhYmVsICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtTGFiZWwgPSBpdGVtTGFiZWwudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocXVlcnlMb3dlckNhc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zLnNldChbLi4uZmlsdGVyZWRJdGVtc10pO1xuICAgICAgICAgICAgdGhpcy51c2VyU2VsZWN0ZWRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucy5zZXQoWy4uLml0ZW1zXSk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIGFuZCBzZXRzIG5ldyB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBSZXByZXNlbnRzIHRoZSBvYmplY3QgdmFsdWUuXG4gICAgICogQHBhcmFtIGZyb21Vc2VyIElmIHNldCB2YWx1ZSBpcyB0cmlnZ2VyZWQgZnJvbSB1c2VyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IGFueSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCwgZnJvbVVzZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZnJvbVVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlbSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJpbVZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNlYXJjaFRyaW0oKSkge1xuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbVN0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbUVuZCgpO1xuICAgICAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3BhZ2F0ZXMgZmluYWwgdmFsdWUgdG8gX3ZhbHVlLCBvbiBjaGFuZ2UgZm4gYW5kIG91dHB1dHMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVWYWx1ZUNoYW5nZSh2YWx1ZTogYW55IHwgYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWVXaXRoT3B0aW9uc1ZhbHVlUHJvcFNldHRpbmcodmFsdWUpO1xuICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFZhbHVlV2l0aE9wdGlvbnNWYWx1ZVByb3BTZXR0aW5nKHZhbHVlOiBhbnkgfCBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1ZhbHVlUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCk7XG4gICAgICAgIGlmICghb3B0aW9uc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bb3B0aW9uc1ZhbHVlUHJvcGVydHldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVtvcHRpb25zVmFsdWVQcm9wZXJ0eV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8cC1pbnB1dGdyb3VwPlxuICAgIEBmb3IgKHB0IG9mIHByZXBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuICAgIDxwLWF1dG9Db21wbGV0ZVxuICAgICAgICBbbmdNb2RlbF09XCJuZ01vZGVsVmFsdWUoKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICBbZGF0YUtleV09XCJvcHRpb25zVHJhY2tQcm9wZXJ0eSgpXCJcbiAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbnNMYWJlbFByb3BlcnR5KClcIlxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXNlbGVjdCgpXCJcbiAgICAgICAgW3Nob3dFbXB0eU1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlbXB0eU1lc3NhZ2VdPVwiJ21uZ0F1dG9jb21wbGV0ZS5ub01hdGNoZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiY2xhc3NOYW1lKClcIlxuICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgICAgICBbaW5wdXRTdHlsZV09XCJ7Ym9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICcwJ31cIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIm9wZW5PbkZvY3VzKCkgPyAwIDogMVwiXG4gICAgICAgIFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIlxuICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwiYXV0b0NsZWFyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtjb21wbGV0ZU9uRm9jdXNdPVwib3Blbk9uRm9jdXMoKVwiXG4gICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25Gb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAob25CbHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xlYXIpPVwib25DbGVhcigpXCJcbiAgICAgICAgKG9uU2hvdyk9XCJvblNob3coKVwiXG4gICAgICAgIChvbkhpZGUpPVwib25IaWRlKClcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICBkcm9wZG93bk1vZGU9XCJjdXJyZW50XCI+XG4gICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICBAZm9yIChhdCBvZiBhcHBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9wLWlucHV0Z3JvdXA+XG4iXX0=","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Injector, ViewEncapsulation, booleanAttribute, computed, effect, forwardRef, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DatePicker } from 'primeng/datepicker';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DATE_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport const DATE_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport class DateRangeComponent {\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showTime = input(false, ...(ngDevMode ? [{ debugName: \"showTime\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.showSeconds = input(false, ...(ngDevMode ? [{ debugName: \"showSeconds\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.dateFormat = input(...(ngDevMode ? [undefined, { debugName: \"dateFormat\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n }\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange');\n }\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n effect(() => {\n this.setDisabledState(this.disabled());\n }, { injector: this.injector });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n registerOnValidatorChange(fn) {\n this.onValidatorChangeFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n onBlur() {\n this.onTouchedFn();\n }\n writeValue(obj) {\n let startDate = null;\n let endDate = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n }\n else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, { emitEvent: false });\n this.toCtrl.setValue(endDate, { emitEvent: false });\n }\n else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], { emitEvent: false });\n }\n else {\n this.dateRangeCtrl.setValue(null, { emitEvent: false });\n }\n }\n validate() {\n if (!this.required())\n return null;\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n return null;\n }\n onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n else {\n const date = this.dateRangeCtrl.value;\n this.onChangeFn(date);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DateRangeComponent, isStandalone: true, selector: \"mng-date-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: \"showTime\", publicName: \"showTime\", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: \"showSeconds\", publicName: \"showSeconds\", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: \"dateFormat\", publicName: \"dateFormat\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"class\": \"className()\" } }, providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], ngImport: i0, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n </div>\\n} @else {\\n <p-input-group>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-input-group>\\n}\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: DatePicker, selector: \"p-datePicker, p-datepicker, p-date-picker\", inputs: [\"iconDisplay\", \"styleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"ariaLabel\", \"iconAriaLabel\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"readonlyInput\", \"shortYearCutoff\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"showOnFocus\", \"showWeek\", \"startWeekFromFirstDayOfYear\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autofocus\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"view\", \"defaultDate\", \"appendTo\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-date-range', providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, DatePicker, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n '[class]': 'className()'\n }, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n </div>\\n} @else {\\n <p-input-group>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-input-group>\\n}\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUVILFdBQVcsRUFHWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUkzQixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBcUI7SUFDdkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFB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O1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFhLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFlLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQzs4R0EzSVEsa0JBQWtCO2tHQUFsQixrQkFBa0Isa3lDQVJoQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLDBCQ3hEaEUsa3lGQWtFQSxxTURUYyxXQUFXLHNJQUFFLG1CQUFtQixrTkFBRSxVQUFVLGdyQ0FBRSxVQUFVLDhHQUFFLGVBQWUsbUhBQUUsZ0JBQWdCLCtJQUFFLGFBQWE7OzJGQU8zRyxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksZ0JBQWdCLGFBR2YsQ0FBQyx5QkFBeUIsRUFBRSxvQkFBb0IsQ0FBQyxXQUNuRCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsbUJBQ3BHLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsU0FBUyxFQUFFLGFBQWE7cUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJ3ByaW1lbmcvZGF0ZXBpY2tlcic7XG5pbXBvcnQge0lucHV0R3JvdXB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XG5pbXBvcnQge0lucHV0R3JvdXBBZGRvbn0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7RGF0ZVJhbmdlVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4vZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxJREFUT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50LmNzcycsXG4gICAgcHJvdmlkZXJzOiBbREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUiwgREFURV9SQU5HRV9WQUxJREFUT1JdLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRGF0ZVBpY2tlciwgSW5wdXRHcm91cCwgSW5wdXRHcm91cEFkZG9uLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVQaXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzc10nOiAnY2xhc3NOYW1lKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHNob3dUaW1lID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2hvd1NlY29uZHMgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBkYXRlRm9ybWF0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlcXVpcmVkID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgICB9KTtcbiAgICBwdWJsaWMgdmVydGljYWwgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxEYXRlUmFuZ2VUZW1wbGF0ZURpcmVjdGl2ZVtdPihbXSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdwcmVwZW5kJykpO1xuICAgIHB1YmxpYyByZWFkb25seSBhcHBlbmRUZW1wbGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRlbXBsYXRlcygpLmZpbHRlcih0ID0+IHQubmFtZSgpID09PSAnYXBwZW5kJykpO1xuXG4gICAgcHJpdmF0ZSBmcm9tVG9Gb3JtQ29udHJvbCE6IEZvcm1Hcm91cDtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueSA9ICgpID0+IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uVG91Y2hlZEZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblZhbGlkYXRvckNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBnZXQgZnJvbUN0cmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmdldCgnZnJvbScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ3RvJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUmFuZ2VDdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ2RhdGVSYW5nZScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBmcm9tOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB0bzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZGF0ZVJhbmdlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtpbmplY3RvcjogdGhpcy5pbmplY3Rvcn1cbiAgICAgICAgKTtcblxuICAgICAgICBtZXJnZSh0aGlzLmZyb21DdHJsLnZhbHVlQ2hhbmdlcywgdGhpcy50b0N0cmwudmFsdWVDaGFuZ2VzLCB0aGlzLmRhdGVSYW5nZUN0cmwudmFsdWVDaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25WYWx1ZUNoYW5nZSgpKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkICYmIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2w/LmVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0Rpc2FibGVkICYmIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2w/LmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBlbmREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwICYmIChvYmpbMF0gaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiBvYmpbMF0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmpbMF0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKG9ialswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDEgJiYgKG9ialsxXSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIG9ialsxXSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9ialsxXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgZW5kRGF0ZSA9IG5ldyBEYXRlKG9ialsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3RhcnREYXRlID0gbmV3IERhdGUob2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbUN0cmwuc2V0VmFsdWUoc3RhcnREYXRlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgdGhpcy50b0N0cmwuc2V0VmFsdWUoZW5kRGF0ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERhdGUgfHwgZW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VDdHJsLnNldFZhbHVlKFtzdGFydERhdGUsIGVuZERhdGVdLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VDdHJsLnNldFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5yZXF1aXJlZCgpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mcm9tQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSB8fCB0aGlzLnRvQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVSYW5nZUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gdGhpcy5mcm9tQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gdGhpcy50b0N0cmwudmFsdWUgYXMgRGF0ZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbihbZnJvbURhdGUsIHRvRGF0ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZVJhbmdlQ3RybC52YWx1ZSBhcyBEYXRlW107XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKHNob3dUaW1lKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiIFtjbGFzcy5mbGV4LWNvbF09XCJ2ZXJ0aWNhbCgpXCI+XG4gICAgICAgIDxwLWlucHV0Z3JvdXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmcm9tQ3RybFwiXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwidG9DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VGcm9tJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXQoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJzaG93U2Vjb25kcygpXCJcbiAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwie2JvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCd9XCJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiXG4gICAgICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXA+XG4gICAgICAgIDxwLWlucHV0Z3JvdXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0b0N0cmxcIlxuICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImZyb21DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VUbycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHMoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlXT1cIntib3JkZXJUb3BSaWdodFJhZGl1czogJzAnLCBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnfVwiXG4gICAgICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIj48L3AtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwPlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPHAtaW5wdXQtZ3JvdXA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVSYW5nZUN0cmxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdCgpXCJcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7Ym9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICcwJ31cIlxuICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvcC1pbnB1dC1ncm91cD5cbn1cblxuPG5nLXRlbXBsYXRlICNwcmVwZW5kQWRkb25zPlxuICAgIEBmb3IgKHB0IG9mIHByZXBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYXBwZW5kQWRkb25zPlxuICAgIEBmb3IgKGF0IG9mIGFwcGVuZFRlbXBsYXRlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHAtaW5wdXRncm91cC1hZGRvbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhdC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3AtaW5wdXRncm91cC1hZGRvbj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { MultiSelect } from 'primeng/multiselect';\nimport { Select } from 'primeng/select';\nimport { Subject, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap } from 'rxjs';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, toObservable as commonsToObservable, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DROPDOWN_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\nexport class DropdownComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.logger = inject(LoggerService).create('DropdownComponent');\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.dataProvider = input(...(ngDevMode ? [undefined, { debugName: \"dataProvider\" }] : []));\n this.options = input([], ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.optionsValuePropertyInput = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInput\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsDisabledProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsDisabledProperty\" }] : []));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirstItemInput = input(false, ...(ngDevMode ? [{ debugName: \"selectFirstItemInput\", transform: booleanAttribute, alias: 'selectFirstItem' }] : [{ transform: booleanAttribute, alias: 'selectFirstItem' }]));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.changeValueOnBlur = input(false, ...(ngDevMode ? [{ debugName: \"changeValueOnBlur\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.loadingInput = input(false, ...(ngDevMode ? [{ debugName: \"loadingInput\", alias: 'loading', transform: booleanAttribute }] : [{ alias: 'loading', transform: booleanAttribute }]));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", alias: 'disabled', transform: booleanAttribute }] : [{ alias: 'disabled', transform: booleanAttribute }]));\n this.allowInput = input(false, ...(ngDevMode ? [{ debugName: \"allowInput\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.appendTo = input('body', ...(ngDevMode ? [{ debugName: \"appendTo\" }] : []));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeSelect = viewChild(Select, ...(ngDevMode ? [{ debugName: \"primeSelect\" }] : []));\n this.primeMultiselect = viewChild(MultiSelect, ...(ngDevMode ? [{ debugName: \"primeMultiselect\" }] : []));\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._loading = signal(false, ...(ngDevMode ? [{ debugName: \"_loading\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.loading = computed(() => this.loadingInput() || this._loading(), ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.disabled = computed(() => this.disabledInput() || this._disabled(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.dataProviderService = null;\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.firstTimeSettingItems = true;\n this.isDropdownPanelShown = false;\n // used with custom input functionality\n this.fetchedItems = [];\n this.customInputSubject = new Subject();\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsValuePropertyInput();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.ngModelValue();\n });\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n this.fetchItems();\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`);\n }\n }\n });\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n onDropdownBlur(event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onDropdownChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value);\n this.customInputSubject.next(query);\n }\n }\n searchItems(query) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n }\n else {\n this.fetchItems(query);\n }\n }\n fetchItems(query) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, { injector: this.injector }), toObservable(this.options, { injector: this.injector })])\n .pipe(tap(() => this._loading.set(true)), switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n }\n const params = {\n limit: this.allowInput() ? 10 : 50\n };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n }\n else {\n return of(options ?? []);\n }\n }), switchMap(items => this.transformItems(items)), takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n setItems(items, query) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`);\n }\n if (typeof items[0]?.[this.optionsValueProperty()] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n }\n else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(`'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`);\n }\n }\n }\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n }\n else {\n this.items.set([...items]);\n }\n }\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n onFocus() {\n this.onTouchedFn();\n }\n onMultiselectChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n onMultiselectBlur(event) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n transformItems(items) {\n if (this.optionsLabelTranslate()) {\n const translationKeys = items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n if (translationKeys.length === 0) {\n return of([]);\n }\n return this.translate.stream(translationKeys).pipe(map(translations => items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(translations, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n })));\n }\n else {\n return of(items);\n }\n }\n adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n }\n else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n propagateValueChange(value) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DropdownComponent, isStandalone: true, selector: \"mng-dropdown\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInput: { classPropertyName: \"optionsValuePropertyInput\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsDisabledProperty: { classPropertyName: \"optionsDisabledProperty\", publicName: \"optionsDisabledProperty\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirstItemInput: { classPropertyName: \"selectFirstItemInput\", publicName: \"selectFirstItem\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, changeValueOnBlur: { classPropertyName: \"changeValueOnBlur\", publicName: \"changeValueOnBlur\", isSignal: true, isRequired: false, transformFunction: null }, loadingInput: { classPropertyName: \"loadingInput\", publicName: \"loading\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, allowInput: { classPropertyName: \"allowInput\", publicName: \"allowInput\", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: \"appendTo\", publicName: \"appendTo\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeSelect\", first: true, predicate: Select, descendants: true, isSignal: true }, { propertyName: \"primeMultiselect\", first: true, predicate: MultiSelect, descendants: true, isSignal: true }], ngImport: i0, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n @if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n } @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n }\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"component\", type: MultiSelect, selector: \"p-multiSelect, p-multiselect, p-multi-select\", inputs: [\"id\", \"ariaLabel\", \"styleClass\", \"panelStyle\", \"panelStyleClass\", \"inputId\", \"readonly\", \"group\", \"filter\", \"filterPlaceHolder\", \"filterLocale\", \"overlayVisible\", \"tabindex\", \"dataKey\", \"ariaLabelledBy\", \"displaySelectedLabel\", \"maxSelectedLabels\", \"selectionLimit\", \"selectedItemsLabel\", \"showToggleAll\", \"emptyFilterMessage\", \"emptyMessage\", \"resetFilterOnHide\", \"dropdownIcon\", \"chipIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"showHeader\", \"filterBy\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"loading\", \"virtualScrollItemSize\", \"loadingIcon\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"display\", \"autocomplete\", \"showClear\", \"autofocus\", \"placeholder\", \"options\", \"filterValue\", \"selectAll\", \"focusOnHover\", \"filterFields\", \"selectOnFocus\", \"autoOptionFocus\", \"highlightOnSelect\", \"size\", \"variant\", \"fluid\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onClear\", \"onPanelShow\", \"onPanelHide\", \"onLazyLoad\", \"onRemove\", \"onSelectAllChange\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-dropdown', providers: [DROPDOWN_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, Select, MultiSelect, InputGroup, InputGroupAddon, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n @if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n } @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n }\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZm9ybS9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFFVixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBK0MsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQUMsTUFBTSxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FB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VyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDeEYsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXhpc3RpbmdQcm92aWRlcixcbiAgICBJbmplY3RvcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHtJbnB1dEdyb3VwQWRkb259IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7TXVsdGlTZWxlY3QsIE11bHRpU2VsZWN0Qmx1ckV2ZW50LCBNdWx0aVNlbGVjdENoYW5nZUV2ZW50fSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcbmltcG9ydCB7U2VsZWN0LCBTZWxlY3RDaGFuZ2VFdmVudH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgb2YsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBEYXRhTGlzdFBhcmFtcyxcbiAgICBGaWx0ZXJNYXRjaE1vZGUsXG4gICAgSUxvb2t1cERhdGFQcm92aWRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIHRvT2JzZXJ2YWJsZSBhcyBjb21tb25zVG9PYnNlcnZhYmxlLFxuICAgIGZyb21TdWJzY3JpYmVFcnJvcixcbiAgICBnZXRFcnJvckxvZ0xldmVsLFxuICAgIG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lucHV0VHJpbVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuXG5pbXBvcnQge0Ryb3Bkb3duVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IERST1BET1dOX1ZBTFVFX0FDQ0VTU09SOiBFeGlzdGluZ1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbRFJPUERPV05fVkFMVUVfQUNDRVNTT1JdLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVQaXBlLCBGb3Jtc01vZHVsZSwgU2VsZWN0LCBNdWx0aVNlbGVjdCwgSW5wdXRHcm91cCwgSW5wdXRHcm91cEFkZG9uLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ0Ryb3Bkb3duQ29tcG9uZW50Jyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQ8SUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueSwgYW55LCBhbnk+PigpO1xuICAgIHB1YmxpYyBvcHRpb25zID0gaW5wdXQ8QXJyYXk8YW55Pj4oW10pO1xuICAgIHB1YmxpYyBvcHRpb25zVHJhY2tQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHlJbml0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNMYWJlbFByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxUcmFuc2xhdGUgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVQcm9wZXJ0eUlucHV0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNWYWx1ZVByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgc2hvd0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2VsZWN0Rmlyc3RJdGVtSW5wdXQgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdzZWxlY3RGaXJzdEl0ZW0nfSk7XG4gICAgcHVibGljIGNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgZHJvcGRvd25DbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIGNoYW5nZVZhbHVlT25CbHVyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgbG9hZGluZ0lucHV0ID0gaW5wdXQoZmFsc2UsIHthbGlhczogJ2xvYWRpbmcnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWRJbnB1dCA9IGlucHV0KGZhbHNlLCB7YWxpYXM6ICdkaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBhbGxvd0lucHV0ID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgYXBwZW5kVG8gPSBpbnB1dDxzdHJpbmcgfCBudWxsPignYm9keScpO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxEcm9wZG93blRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcblxuICAgIHB1YmxpYyBpbmxpbmVTZWFyY2ggPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBzZWFyY2hUcmltID0gaW5wdXQ8SW5wdXRUcmltVHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgcHVibGljIGJsdXIgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgcHJpbWVTZWxlY3QgPSB2aWV3Q2hpbGQoU2VsZWN0KTtcbiAgICBwdWJsaWMgcHJpbWVNdWx0aXNlbGVjdCA9IHZpZXdDaGlsZChNdWx0aVNlbGVjdCk7XG5cbiAgICBwcml2YXRlIF92YWx1ZT86IGFueSB8IG51bGw7XG4gICAgcHVibGljIG5nTW9kZWxWYWx1ZSA9IHNpZ25hbDx1bmRlZmluZWQgfCBudWxsIHwgYW55Pih1bmRlZmluZWQpO1xuXG4gICAgcHJpdmF0ZSBfbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nSW5wdXQoKSB8fCB0aGlzLl9sb2FkaW5nKCkpO1xuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGlzYWJsZWRJbnB1dCgpIHx8IHRoaXMuX2Rpc2FibGVkKCkpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25DaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25Ub3VjaGVkRm46IGFueSA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBkYXRhUHJvdmlkZXJTZXJ2aWNlOiBhbnkgPSBudWxsO1xuICAgIHB1YmxpYyBpdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICAgIHByaXZhdGUgZmlyc3RUaW1lU2V0dGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgaXNEcm9wZG93blBhbmVsU2hvd24gPSBmYWxzZTtcblxuICAgIC8vIHVzZWQgd2l0aCBjdXN0b20gaW5wdXQgZnVuY3Rpb25hbGl0eVxuICAgIHByaXZhdGUgZmV0Y2hlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgb3B0aW9uc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGN1c3RvbUlucHV0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwcmVwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ3ByZXBlbmQnKSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGFwcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdhcHBlbmQnKSk7XG5cbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBzZXR1cCB0cmFuc2xhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfV9pMThuYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgJiYgIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0aXRsZV9pMThuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBJbnZhbGlkIHVzZSB3aXRoIHZhbHVlICgke3RoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdEcm9wZG93bkNvbXBvbmVudEVycm9yJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCk7XG4gICAgfSk7XG4gICAgcHVibGljIG9wdGlvbnNWYWx1ZVByb3BlcnR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgLy8gc2V0dXAgdHJhbnNsYXRpb24gcHJvcGVydGllc1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKX0pIGFuZCBsYWJlbCAoJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfSkgcHJvcGVydHkgc2V0dXAuYCwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRHJvcGRvd25Db21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ01vZGVsVmFsdWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21JbnB1dFN1YmplY3RcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2ID0+IHRoaXMuc2VhcmNoSXRlbXModikpO1xuXG4gICAgICAgIHRoaXMuZmV0Y2hJdGVtcygpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYGFsbG93SW5wdXQgaXMgbm90IHN1cHBvcnRlZCB3aGVuIG9wdGlvbnNMYWJlbFByb3BlcnR5IGlzIGRlZmluZWQgYnV0IG9wdGlvbnNWYWx1ZVByb3BlcnR5IGlzIG1pc3NpbmcuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcyBjaGVjayBpcyByZXF1aXJlZCBiZWNhdXNlIGFuZ3VsYXIgaW4gc29tZSBjYXNlcyB3cml0ZXMgbnVsbCB2YWx1ZVxuICAgICAgICAvLyBiZWZvcmUgdmFsdWUgYWNjZXNzb3IgaXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgLy8gaWYgZm9ybSBjb250cm9sIHZhbHVlIGlzIG9mIHByaW1pdGl2ZSB0eXBlIChleDogZW51bXMpIHRoZW4gd3JpdGUgdmFsdWUgaXMgbm90IGNhbGxlZCAod2UgdGhpbmspXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB3cml0ZSB2YWx1ZSBpbW1lZGlhdGVseSAtIGl0IGlzIGltcG9ydGFudCBzbyB0aGF0IGZpcnN0IHNlbGVjdCBpcyBub3QgdHJpZ2dlcmVkIVxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmFkanVzdFZhbHVlT25JdGVtc1ZhbHVlUHJvcGVydHlUeXBlTWlzbWF0Y2godHJ1ZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGlmIGFsbG93Q3VzdG9tSW5wdXQgaXMgZW5hYmxlZCwgdGhlIGlucHV0IGVsZW1lbnQgbWlnaHQgc3RpbGwgYmUgaW4gZm9jdXMgd2l0aCB0aGVcbiAgICAgICAgLy8gZHJvcGRvd24gcGFuZWwgaGlkZGVuIC0gdGhhdCdzIHdoeSB0aGUgIXRoaXMuYWxsb3dDdXN0b21JbnB1dCgpIGNoZWNrIGlzIG5lZWRlZFxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biAmJiAhdGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIGJsdXIgZXZlbnRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmltZURyb3Bkb3duID0gdGhpcy5wcmltZVNlbGVjdCgpO1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpICYmIHByaW1lRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UocHJpbWVEcm9wZG93bi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkNoYW5nZShldmVudDogU2VsZWN0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKCkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UoZXZlbnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHR5cGVvZiBldmVudC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgZXZlbnQudmFsdWUubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy50cmltVmFsdWUoZXZlbnQudmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hJdGVtcyhxdWVyeT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byByZWZldGNoLCBqdXN0IHNldCBpdGVtcyBmcm9tIGNhY2hlZCBmZXRjaGVkIGl0ZW1zXG4gICAgICAgICAgICB0aGlzLnNldEl0ZW1zKHRoaXMuZmV0Y2hlZEl0ZW1zLCBxdWVyeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoSXRlbXMocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaEl0ZW1zKHF1ZXJ5Pzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuZGF0YVByb3ZpZGVyLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KSwgdG9PYnNlcnZhYmxlKHRoaXMub3B0aW9ucywge2luamVjdG9yOiB0aGlzLmluamVjdG9yfSldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtkYXRhUHJvdmlkZXIsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlID0gZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlID8gdGhpcy5pbmplY3Rvci5nZXQ8YW55PihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBEYXRhTGlzdFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogdGhpcy5hbGxvd0lucHV0KCkgPyAxMCA6IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gW3twcm9wZXJ0eTogb3B0aW9uc0xhYmVsUHJvcGVydHl9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeSAhPSBudWxsICYmIG9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zTGFiZWxQcm9wZXJ0eV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21tb25zVG9PYnNlcnZhYmxlKGRhdGFQcm92aWRlci5sb29rdXAocGFyYW1zLCB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UsIHF1ZXJ5KSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yob3B0aW9ucyA/PyBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy50cmFuc2Zvcm1JdGVtcyhpdGVtcykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWRJdGVtcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhyZXMsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpOyAvLyBvbmx5IHNlbGVjdHMgZmlyc3QgaXRlbSBpZiBzZWxlY3RGaXJzdEl0ZW1JbnB1dCBpcyBzZXQgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZU9uSXRlbXNWYWx1ZVByb3BlcnR5VHlwZU1pc21hdGNoKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhbXSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZnJvbVN1YnNjcmliZUVycm9yKGVyciwgJ0Ryb3Bkb3duQ29tcG9uZW50RXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGVycm9yLCBnZXRFcnJvckxvZ0xldmVsKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXRlbXMgaW4gdGhlIGRyb3Bkb3duLiBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkLCB0aGUgaXRlbXMgd2lsbCBiZSBmaWx0ZXJlZCBieSB0aGUgcXVlcnkgKHVzaW5nIGEgJ3N0YXJ0cyB3aXRoJyBmaWx0ZXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBzZXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtczogQXJyYXk8YW55PiwgcXVlcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICAvLyBqdXN0IHZhbGlkYXRlIHRoYXQgaXRlbXMgYXJlIGFzIGV4cGVjdGVkIGluIGNhc2Ugb2YgYWxsb3dpbmcgaW5wdXRcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbXMgY2FuIGVpdGhlciBiZSBvYmplY3RzICh3aXRoIG9wdGlvbnNWYWx1ZVByb3BlcnR5IHNwZWNpZnlpbmcgYSBzdHJpbmcgcHJvcGVydHkpIG9yIHN0cmluZ3NcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1zWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhbGxvd0lucHV0IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBvcHRpb25WYWx1ZVByb3BlcnR5IGlzIG5vdCBzZXQgYW5kIHRoZSBkcm9wZG93biBpdGVtcyBhcmUgb2YgdHlwZSBvYmplY3QuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbXNbMF0/Llt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkhXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgYWxsb3dJbnB1dCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSB2YWx1ZSBwcm9wZXJ0eSAoc3BlY2lmaWVkIHdpdGggb3B0aW9uc1ZhbHVlUHJvcGVydHkpIGlzIG9mIHR5cGUgc3RyaW5nLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKHR5cGVvZiBpdGVtc1swXSA9PT0gJ3N0cmluZycgJiYgIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJ2FsbG93SW5wdXQnIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBpdGVtcyBvZiB0eXBlIHN0cmluZyBvciBvYmplY3QuIEZvciBvYmplY3QgdHlwZXMsIGVuc3VyZSB0aGF0IHRoZSAnb3B0aW9uc1ZhbHVlUHJvcGVydHknIGlzIHNwZWNpZmllZCBhbmQgcmVwcmVzZW50cyBhIHByb3BlcnR5IG9mIHR5cGUgc3RyaW5nLmBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiAodGhpcy5pbmxpbmVTZWFyY2goKSB8fCB0aGlzLmFsbG93SW5wdXQoKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TG93ZXJDYXNlID0gcXVlcnk/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKGkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtTGFiZWwgPSBpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSAmJiB0eXBlb2YgaSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaVtvcHRpb25zTGFiZWxQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtTGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlMb3dlckNhc2UgPT0gbnVsbCB8fCAhcXVlcnlMb3dlckNhc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1MYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaXRlbUxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHF1ZXJ5TG93ZXJDYXNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5zZXQoWy4uLmZpbHRlcmVkSXRlbXNdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFsuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsU2hvdygpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsSGlkZSgpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG5cbiAgICBvbk11bHRpc2VsZWN0Q2hhbmdlKGV2ZW50OiBNdWx0aVNlbGVjdENoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTXVsdGlzZWxlY3RCbHVyKGV2ZW50OiBNdWx0aVNlbGVjdEJsdXJFdmVudCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xuICAgIH1cblxuICAgIG9uTXVsdGlzZWxlY3RQYW5lbEhpZGUoKSB7XG4gICAgICAgIGNvbnN0IHByaW1lTXVsdGlzZWxlY3QgPSB0aGlzLnByaW1lTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVPbkJsdXIoKSAmJiBwcmltZU11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKHByaW1lTXVsdGlzZWxlY3QudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmZpcnN0VGltZVNldHRpbmdJdGVtcyAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdEZpcnN0SXRlbUlucHV0KCkgJiYgIXRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zVmFsdWVQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1ZhbHVlUHJvcGVydHkgPyB0aGlzLml0ZW1zKClbMF1bb3B0aW9uc1ZhbHVlUHJvcGVydHldIDogdGhpcy5pdGVtcygpWzBdO1xuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHZhbHVlKTsgLy8gc2V0IHRvIHdyaXRlIGZvciBpbnB1dFxuICAgICAgICAgICAgdGhpcy5maXJzdFRpbWVTZXR0aW5nSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1JdGVtcyhpdGVtczogYW55W10pIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBpdGVtcy5tYXAoXG4gICAgICAgICAgICAgICAgaXRlbSA9PiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgPyAoaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nKSA6IGl0ZW0pIGFzIHN0cmluZ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuc3RyZWFtKHRyYW5zbGF0aW9uS2V5cykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodHJhbnNsYXRpb25zID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBuYXJyb3dJMThuVG9UcmFuc2xhdGlvbih0cmFuc2xhdGlvbnMsIGxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtLCBbdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpIV06IHRyYW5zbGF0aW9ufTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnNbaXRlbV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKSFdOiB0cmFuc2xhdGlvbiA/PyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpIV06IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGp1c3RWYWx1ZU9uSXRlbXNWYWx1ZVByb3BlcnR5VHlwZU1pc21hdGNoKHNldE5nTW9kZWxWYWx1ZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNWYWx1ZVByb3AgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCk7XG4gICAgICAgIGlmIChvcHRpb25zVmFsdWVQcm9wICYmIHRoaXMuX3ZhbHVlICE9IG51bGwgJiYgdGhpcy5pdGVtcygpLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcygpWzBdW29wdGlvbnNWYWx1ZVByb3BdICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZS5sZW5ndGggPiAwICYmIHR5cGVvZiB0aGlzLml0ZW1zKClbMF1bb3B0aW9uc1ZhbHVlUHJvcF0gIT09IHR5cGVvZiB0aGlzLl92YWx1ZVswXSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdWYWx1ZXMgPSB0aGlzLl92YWx1ZS5tYXAodiA9PiB2LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB0aGlzLml0ZW1zKCkuZmlsdGVyKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wXSAhPSBudWxsICYmIHN0cmluZ1ZhbHVlcy5pbmNsdWRlcyhpW29wdGlvbnNWYWx1ZVByb3BdLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQoc2VsZWN0ZWRPcHRpb25zLm1hcChpID0+IGlbb3B0aW9uc1ZhbHVlUHJvcF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaXRlbXMoKVswXVtvcHRpb25zVmFsdWVQcm9wXSAhPT0gdHlwZW9mIHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gdHlwZXMgZG9uJ3QgbWF0Y2gsIHNlYXJjaCBhbmQgY29tcGFyZSBieSBzdHJpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuaXRlbXMoKS5maW5kKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wXSAhPSBudWxsICYmIGlbb3B0aW9uc1ZhbHVlUHJvcF0udG9TdHJpbmcoKSA9PT0gdGhpcy5fdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldChzZWxlY3RlZE9wdGlvbltvcHRpb25zVmFsdWVQcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2V0TmdNb2RlbFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBmb3JjZSB3cml0ZSB0byBuZ01vZGVsVmFsdWUgYW55d2F5XG4gICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQodGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVWYWx1ZUNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbih2YWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpbXMgdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSB0aGUgZ2l2ZW4gdmFsdWUgYmFzZWQgb24gdGhlIHNlYXJjaCB0cmltbWluZyBtb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHRyaW1tZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0cmltVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VhcmNoVHJpbSgpKSB7XG4gICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltRW5kKCk7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW0oKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHAtaW5wdXRncm91cD5cbiAgICBAZm9yIChwdCBvZiBwcmVwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInB0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbiAgICBAaWYgKCFtdWx0aXNlbGVjdCgpKSB7XG4gICAgICAgIDxwLXNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZ01vZGVsVmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwib3B0aW9uc0xhYmVsUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwib3B0aW9uc1ZhbHVlUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uRGlzYWJsZWRdPVwib3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJpdGVtcygpXCJcbiAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIlxuICAgICAgICAgICAgW2VkaXRhYmxlXT1cImFsbG93SW5wdXQoKVwiXG4gICAgICAgICAgICBbc3R5bGVDbGFzc109XCJjbGFzc05hbWUoKVwiXG4gICAgICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgW2ZpbHRlcl09XCJpbmxpbmVTZWFyY2goKSAmJiAhYWxsb3dJbnB1dCgpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJvcHRpb25zTGFiZWxQcm9wZXJ0eSgpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25Ecm9wZG93bkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwib25Ecm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvblNob3cpPVwib25Ecm9wZG93blBhbmVsU2hvdygpXCJcbiAgICAgICAgICAgIChvbkhpZGUpPVwib25Ecm9wZG93blBhbmVsSGlkZSgpXCJcbiAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgICBbZHJvcGRvd25JY29uXT1cImxvYWRpbmcoKSA/ICdwaSBwaS1zcGlubmVyIHBpLXNwaW4nIDogJ3BpIHBpLWNoZXZyb24tZG93bidcIlxuICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIj5cbiAgICAgICAgPC9wLXNlbGVjdD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm5nTW9kZWxWYWx1ZSgpXCJcbiAgICAgICAgICAgIFttYXhTZWxlY3RlZExhYmVsc109XCIxXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zTGFiZWxdPVwiJ21uZ0Ryb3Bkb3duLm11bHRpc2VsZWN0T3Zlck1heERpc3BsYXlMaW1pdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwib3B0aW9uc0xhYmVsUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwib3B0aW9uc1ZhbHVlUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uRGlzYWJsZWRdPVwib3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJpdGVtcygpXCJcbiAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImNsYXNzTmFtZSgpXCJcbiAgICAgICAgICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiZHJvcGRvd25DbGFzc05hbWUoKVwiXG4gICAgICAgICAgICBbZmlsdGVyXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTXVsdGlzZWxlY3RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25QYW5lbEhpZGUpPVwib25NdWx0aXNlbGVjdFBhbmVsSGlkZSgpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25NdWx0aXNlbGVjdEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XG4gICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICB9XG4gICAgQGZvciAoYXQgb2YgYXBwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImF0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbjwvcC1pbnB1dGdyb3VwPlxuIl19","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, booleanAttribute, computed, effect, forwardRef, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const NUMBER_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport const NUMBER_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport class NumberRangeComponent {\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.useGrouping = input(true, ...(ngDevMode ? [{ debugName: \"useGrouping\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.minFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"minFractionDigits\" }] : []));\n this.maxFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"maxFractionDigits\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.keyDown = output();\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n writeValue(obj) {\n let start = null;\n let end = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n }\n else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n this.fromCtrl.setValue(start, { emitEvent: false });\n this.toCtrl.setValue(end, { emitEvent: false });\n }\n validate() {\n if (!this.required())\n return null;\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n return null;\n }\n onKeyDown(event) {\n this.keyDown.emit(event);\n }\n onBlur() {\n this.onTouchedFn();\n }\n toNumber(val) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n onValueChange() {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: NumberRangeComponent, isStandalone: true, selector: \"mng-number-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: \"useGrouping\", publicName: \"useGrouping\", isSignal: true, isRequired: false, transformFunction: null }, minFractionDigits: { classPropertyName: \"minFractionDigits\", publicName: \"minFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: \"maxFractionDigits\", publicName: \"maxFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: \"keyDown\" }, providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], ngImport: i0, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n</div>\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: InputNumber, selector: \"p-inputNumber, p-inputnumber, p-input-number\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"placeholder\", \"tabindex\", \"title\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"ariaLabel\", \"ariaRequired\", \"autocomplete\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"autofocus\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-number-range', providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, InputNumber, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n</div>\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL251bWJlci1yYW5nZS9udW1iZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUVILFdBQVcsRUFHWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQU0zQixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBcUI7SUFDekQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXhpc3RpbmdQcm92aWRlcixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHtJbnB1dEdyb3VwQWRkb259IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7SW5wdXROdW1iZXJ9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TnVsbGFibGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TnVtYmVyUmFuZ2VUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9udW1iZXItcmFuZ2UtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5VTUJFUl9SQU5HRV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJSYW5nZUNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfUkFOR0VfVkFMSURBVE9SOiBFeGlzdGluZ1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVyUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1udW1iZXItcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9udW1iZXItcmFuZ2UuY29tcG9uZW50LmNzcycsXG4gICAgcHJvdmlkZXJzOiBbTlVNQkVSX1JBTkdFX1ZBTFVFX0FDQ0VTU09SLCBOVU1CRVJfUkFOR0VfVkFMSURBVE9SXSxcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElucHV0TnVtYmVyLCBJbnB1dEdyb3VwLCBJbnB1dEdyb3VwQWRkb24sIE5nVGVtcGxhdGVPdXRsZXQsIFRyYW5zbGF0ZVBpcGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHVzZUdyb3VwaW5nID0gaW5wdXQodHJ1ZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBtaW5GcmFjdGlvbkRpZ2l0cyA9IGlucHV0PG51bWJlcj4oKTtcbiAgICBwdWJsaWMgbWF4RnJhY3Rpb25EaWdpdHMgPSBpbnB1dDxudW1iZXI+KCk7XG4gICAgcHVibGljIHJlcXVpcmVkID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgICB9KTtcbiAgICBwdWJsaWMgdmVydGljYWwgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxOdW1iZXJSYW5nZVRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgcHVibGljIGtleURvd24gPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwcmVwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ3ByZXBlbmQnKSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGFwcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdhcHBlbmQnKSk7XG5cbiAgICBwcml2YXRlIGZyb21Ub0Zvcm1Db250cm9sOiBGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgZnJvbTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB0bzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZ2V0IGZyb21DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ2Zyb20nKSBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvQ3RybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZ2V0KCd0bycpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKHRoaXMuZnJvbUN0cmwudmFsdWVDaGFuZ2VzLCB0aGlzLnRvQ3RybC52YWx1ZUNoYW5nZXMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQgJiYgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbD8uZW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzRGlzYWJsZWQgJiYgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbD8uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCBzdGFydDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBlbmQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCAmJiAodHlwZW9mIG9ialswXSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9ialswXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLnRvTnVtYmVyKG9ialswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDEgJiYgKHR5cGVvZiBvYmpbMV0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmpbMV0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMudG9OdW1iZXIob2JqWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLnRvTnVtYmVyKG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZyb21DdHJsLnNldFZhbHVlKHN0YXJ0LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB0aGlzLnRvQ3RybC5zZXRWYWx1ZShlbmQsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMucmVxdWlyZWQoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuZnJvbUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgdGhpcy50b0N0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5rZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9OdW1iZXIodmFsOiBOdWxsYWJsZTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbCA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgICAgICBjb25zdCBudW1WYWwgPSBwYXJzZUZsb2F0KHZhbCk7XG4gICAgICAgIHJldHVybiBpc05hTihudW1WYWwpID8gbnVsbCA6IG51bVZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIGNvbnN0IGZyb21EYXRlID0gdGhpcy5mcm9tQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICBjb25zdCB0b0RhdGUgPSB0aGlzLnRvQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oW2Zyb21EYXRlLCB0b0RhdGVdKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiIFtjbGFzcy5mbGV4LWNvbF09XCJ2ZXJ0aWNhbCgpXCI+XG4gICAgPHAtaW5wdXRncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmcm9tQ3RybFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VGcm9tJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3VzZUdyb3VwaW5nXT1cInVzZUdyb3VwaW5nKClcIlxuICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIm1pbkZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIm1heEZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICAgICAgW21heF09XCJ0b0N0cmwudmFsdWVcIlxuICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJjbGFzc05hbWUoKVwiXG4gICAgICAgICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9wLWlucHV0Z3JvdXA+XG4gICAgPHAtaW5wdXRncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0b0N0cmxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKCkgKyAnICcgKyAoJ21uZ1RhYmxlLmZpbHRlclJhbmdlVG8nIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdXNlR3JvdXBpbmddPVwidXNlR3JvdXBpbmcoKVwiXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwibWluRnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwibWF4RnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgICAgICBbbWluXT1cImZyb21DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiY2xhc3NOYW1lKClcIlxuICAgICAgICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAob25CbHVyKT1cIm9uQmx1cigpXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvcC1pbnB1dGdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcHJlcGVuZEFkZG9ucz5cbiAgICBAZm9yIChwdCBvZiBwcmVwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInB0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FwcGVuZEFkZG9ucz5cbiAgICBAZm9yIChhdCBvZiBhcHBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\nexport class InputEmptyValueDirective {\n constructor() {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n this.mngInputEmptyValue = input('undefined', ...(ngDevMode ? [{ debugName: \"mngInputEmptyValue\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #afterNextRenderRef;\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, { emitEvent: false });\n }\n }\n }\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue() {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputEmptyValueDirective, isStandalone: true, selector: \"[mngInputEmptyValue]\", inputs: { mngInputEmptyValue: { classPropertyName: \"mngInputEmptyValue\", publicName: \"mngInputEmptyValue\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputEmptyValue]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZW1wdHktdmFsdWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZm9ybS9zcmMvZGlyZWN0aXZlcy9pbnB1dC1lbXB0eS12YWx1ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQUtJOzs7O1dBSUc7UUFDSSx1QkFBa0IsR0FBRyxLQUFLLENBQWlCLFdBQVcsOERBQUMsQ0FBQztRQUV0RCxRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2Qyx3QkFBbUIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNEIsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFL0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0tBdUNOO0lBbERZLEdBQUcsQ0FBc0I7SUFDekIsVUFBVSxDQUF1QztJQUNqRCxTQUFTLENBQXFCO0lBRXZDLG1CQUFtQixDQU9oQjtJQUVIOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV6QyxpRkFBaUY7WUFDakYsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYztRQUNWLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxJQUFJLENBQUM7WUFDaEIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sRUFBRSxDQUFDO1lBQ2QsS0FBSyxXQUFXLENBQUM7WUFDakI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7OEdBekRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RW1wdHlWYWx1ZVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGNvbnZlcnRzIGVtcHR5IHN0cmluZyB2YWx1ZXMgdG8gdW5kZWZpbmVkIG9yIG51bGwgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gKiBDYW4gYWxzbyBiZSBjb25maWd1cmVkIHRvIGxlYXZlIGVtcHR5IHN0cmluZ3MgYXMgaXMuXG4gKlxuICogVXNhZ2U6XG4gKiBgYGBodG1sXG4gKiA8aW5wdXQgbW5nSW5wdXRFbXB0eVZhbHVlPVwidW5kZWZpbmVkXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gdW5kZWZpbmVkIChkZWZhdWx0IGJlaGF2aW9yKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZSAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gbnVsbFxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm51bGxcIiAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMZWF2ZSBlbXB0eSBzdHJpbmdzIGFzIGlzIChubyBjb252ZXJzaW9uKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm5vbmVcIiAvPlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdJbnB1dEVtcHR5VmFsdWVdJyxcbiAgICBob3N0OiB7JyhibHVyKSc6ICdvbkJsdXIoKSd9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0RW1wdHlWYWx1ZURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogSW5wdXQgcHJvcGVydHkgdGhhdCBzcGVjaWZpZXMgaG93IGVtcHR5IHN0cmluZyB2YWx1ZXMgc2hvdWxkIGJlIGhhbmRsZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBtbmdJbnB1dEVtcHR5VmFsdWUgPSBpbnB1dDxFbXB0eVZhbHVlVHlwZT4oJ3VuZGVmaW5lZCcpO1xuXG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHJlYWRvbmx5ICNuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNyZW5kZXJlci5saXN0ZW4oaW5wdXRDaGlsZEVsZW1lbnQsICdibHVyJywgKCkgPT4gdGhpcy5vbkJsdXIoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXIgZm9yIHRoZSBibHVyIGV2ZW50LlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgYW4gZW1wdHkgc3RyaW5nIGFuZCBjb252ZXJ0cyBpdCB0byB1bmRlZmluZWQsIG51bGwsIG9yIGxlYXZlcyBpdCBhcyBpc1xuICAgICAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIG9uQmx1cigpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNuZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gdGhpcy4jZ2V0RW1wdHlWYWx1ZSgpO1xuXG4gICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdmFsdWUgaWYgd2UncmUgbm90IHVzaW5nICdub25lJyBvcHRpb24gKHdoaWNoIHdvdWxkIHJldHVybiAnJylcbiAgICAgICAgICAgIGlmIChlbXB0eVZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuI25nQ29udHJvbC5jb250cm9sLnNldFZhbHVlKGVtcHR5VmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBlbXB0eSB2YWx1ZSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHVuZGVmaW5lZCwgbnVsbCwgb3IgZW1wdHkgc3RyaW5nIGJhc2VkIG9uIHRoZSBtbmdJbnB1dEVtcHR5VmFsdWUgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgICNnZXRFbXB0eVZhbHVlKCk6IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubW5nSW5wdXRFbXB0eVZhbHVlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class InputTrimDirective {\n constructor() {\n this.mngInputTrim = input(...(ngDevMode ? [undefined, { debugName: \"mngInputTrim\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#inputEl = this.#el.nativeElement;\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#inputEl = inputChildElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #inputEl;\n #afterNextRenderRef;\n onBlur() {\n const control = this.#ngControl?.control;\n const value = control ? control.value : this.#inputEl.value;\n let trimmedValue;\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, { emitEvent: false });\n }\n else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n }\n #getTrimmedValue(value) {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputTrimDirective, isStandalone: true, selector: \"[mngInputTrim]\", inputs: { mngInputTrim: { classPropertyName: \"mngInputTrim\", publicName: \"mngInputTrim\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputTrim]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9mb3JtL3NyYy9kaXJlY3RpdmVzL2lucHV0LXRyaW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXpDLE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFLb0IsaUJBQVksR0FBRyxLQUFLLGtFQUFpQixDQUFDO1FBRTdDLFFBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLGFBQVEsR0FBcUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFpQyxDQUFDO1FBRXhFLHdCQUFtQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUE0QixDQUFDO1lBQzVELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUvRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQXFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FnQ047SUE5Q1ksR0FBRyxDQUFzQjtJQUN6QixVQUFVLENBQXVDO0lBQ2pELFNBQVMsQ0FBcUI7SUFFdkMsUUFBUSxDQUFnRTtJQUV4RSxtQkFBbUIsQ0FRaEI7SUFFTyxNQUFNO1FBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLFlBQW9CLENBQUM7UUFFekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVDLElBQUksWUFBWSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7Z0JBQ3ZDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLEtBQUssT0FBTztnQkFDUixPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0I7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7OEdBaERRLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21uZ0lucHV0VHJpbV0nLFxuICAgIGhvc3Q6IHsnKGJsdXIpJzogJ29uQmx1cigpJ31cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUcmltRGlyZWN0aXZlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW5nSW5wdXRUcmltID0gaW5wdXQ8SW5wdXRUcmltVHlwZT4oKTtcblxuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICByZWFkb25seSAjbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAjaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNpbnB1dEVsID0gaW5wdXRDaGlsZEVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLmxpc3RlbihpbnB1dENoaWxkRWxlbWVudCwgJ2JsdXInLCAoKSA9PiB0aGlzLm9uQmx1cigpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sID8gY29udHJvbC52YWx1ZSA6IHRoaXMuI2lucHV0RWwudmFsdWU7XG4gICAgICAgIGxldCB0cmltbWVkVmFsdWU6IHN0cmluZztcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJpbW1lZFZhbHVlID0gdGhpcy4jZ2V0VHJpbW1lZFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRyaW1tZWRWYWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodHJpbW1lZFZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2lucHV0RWwudmFsdWUgPSB0cmltbWVkVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldFRyaW1tZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm1uZ0lucHV0VHJpbSgpKSB7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class AutocompleteTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: AutocompleteTemplateDirective, isStandalone: true, selector: \"[mngAutocompleteTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngAutocompleteTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngAutocompleteTemplate]',\n exportAs: 'mngAutocompleteTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxpQkFBMkI7SUFKOUU7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdBdXRvY29tcGxldGVUZW1wbGF0ZV0nLFxuICAgIGV4cG9ydEFzOiAnbW5nQXV0b2NvbXBsZXRlVGVtcGxhdGUnXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class DateRangeTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: DateRangeTemplateDirective, isStandalone: true, selector: \"[mngDateRangeTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngDateRangeTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngDateRangeTemplate]',\n exportAs: 'mngDateRangeTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBMkI7SUFKM0U7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdEYXRlUmFuZ2VUZW1wbGF0ZV0nLFxuICAgIGV4cG9ydEFzOiAnbW5nRGF0ZVJhbmdlVGVtcGxhdGUnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class DropdownTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: DropdownTemplateDirective, isStandalone: true, selector: \"[mngDropdownTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngDropdownTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngDropdownTemplate]',\n exportAs: 'mngDropdownTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZm9ybS9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxpQkFBMkI7SUFKMUU7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdEcm9wZG93blRlbXBsYXRlXScsXG4gICAgZXhwb3J0QXM6ICdtbmdEcm9wZG93blRlbXBsYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93blRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class NumberRangeTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: NumberRangeTemplateDirective, isStandalone: true, selector: \"[mngNumberRangeTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngNumberRangeTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngNumberRangeTemplate]',\n exportAs: 'mngNumberRangeTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxpQkFBMkI7SUFKN0U7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdOdW1iZXJSYW5nZVRlbXBsYXRlXScsXG4gICAgZXhwb3J0QXM6ICdtbmdOdW1iZXJSYW5nZVRlbXBsYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJSYW5nZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\nexport * from './components/autocomplete/autocomplete-template.directive';\nexport * from './components/date-range/date-range-template.directive';\nexport * from './components/dropdown/dropdown-template.directive';\nexport * from './components/number-range/number-range-template.directive';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSxhQUFhO0FBQ2IsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsMkRBQTJELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS5jb21wb25lbnQnO1xuXG4vLyBkaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtZW1wdHktdmFsdWUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pbnB1dC10cmltLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9udW1iZXItcmFuZ2UvbnVtYmVyLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["toObservable","commonsToObservable","map"],"mappings":"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"}