@skyux/lookup 12.22.0 → 13.0.0-alpha.0

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 (95) hide show
  1. package/fesm2022/skyux-lookup-testing.mjs +8 -8
  2. package/fesm2022/skyux-lookup-testing.mjs.map +1 -1
  3. package/fesm2022/skyux-lookup.mjs +73 -73
  4. package/fesm2022/skyux-lookup.mjs.map +1 -1
  5. package/index.d.ts +1239 -41
  6. package/package.json +17 -17
  7. package/testing/index.d.ts +742 -3
  8. package/lib/modules/autocomplete/autocomplete-adapter.service.d.ts +0 -26
  9. package/lib/modules/autocomplete/autocomplete-default-search-function.d.ts +0 -3
  10. package/lib/modules/autocomplete/autocomplete-input.directive.d.ts +0 -51
  11. package/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.d.ts +0 -11
  12. package/lib/modules/autocomplete/autocomplete.component.d.ts +0 -202
  13. package/lib/modules/autocomplete/autocomplete.module.d.ts +0 -16
  14. package/lib/modules/autocomplete/types/autocomplete-default-search-function-options.d.ts +0 -10
  15. package/lib/modules/autocomplete/types/autocomplete-input-text-change.d.ts +0 -6
  16. package/lib/modules/autocomplete/types/autocomplete-message-type.d.ts +0 -13
  17. package/lib/modules/autocomplete/types/autocomplete-message.d.ts +0 -10
  18. package/lib/modules/autocomplete/types/autocomplete-search-args.d.ts +0 -4
  19. package/lib/modules/autocomplete/types/autocomplete-search-async-args.d.ts +0 -35
  20. package/lib/modules/autocomplete/types/autocomplete-search-async-function.d.ts +0 -4
  21. package/lib/modules/autocomplete/types/autocomplete-search-async-result-display-type.d.ts +0 -1
  22. package/lib/modules/autocomplete/types/autocomplete-search-async-result.d.ts +0 -25
  23. package/lib/modules/autocomplete/types/autocomplete-search-context.d.ts +0 -1
  24. package/lib/modules/autocomplete/types/autocomplete-search-function-filter.d.ts +0 -2
  25. package/lib/modules/autocomplete/types/autocomplete-search-function-response.d.ts +0 -1
  26. package/lib/modules/autocomplete/types/autocomplete-search-function.d.ts +0 -3
  27. package/lib/modules/autocomplete/types/autocomplete-selection-change.d.ts +0 -6
  28. package/lib/modules/autocomplete/types/autocomplete-show-more-args.d.ts +0 -9
  29. package/lib/modules/country-field/clone-country-data.d.ts +0 -7
  30. package/lib/modules/country-field/country-field.component.d.ts +0 -97
  31. package/lib/modules/country-field/country-field.module.d.ts +0 -13
  32. package/lib/modules/country-field/types/country-field-context-token.d.ts +0 -6
  33. package/lib/modules/country-field/types/country-field-context.d.ts +0 -6
  34. package/lib/modules/country-field/types/country.d.ts +0 -29
  35. package/lib/modules/lookup/lookup-adapter.service.d.ts +0 -10
  36. package/lib/modules/lookup/lookup-autocomplete-adapter.d.ts +0 -78
  37. package/lib/modules/lookup/lookup-show-more-modal.component.d.ts +0 -57
  38. package/lib/modules/lookup/lookup.component.d.ts +0 -161
  39. package/lib/modules/lookup/lookup.module.d.ts +0 -13
  40. package/lib/modules/lookup/types/lookup-add-click-callback-args.d.ts +0 -16
  41. package/lib/modules/lookup/types/lookup-add-click-event-args.d.ts +0 -11
  42. package/lib/modules/lookup/types/lookup-select-mode-type.d.ts +0 -1
  43. package/lib/modules/lookup/types/lookup-select-mode.d.ts +0 -14
  44. package/lib/modules/lookup/types/lookup-show-more-config.d.ts +0 -18
  45. package/lib/modules/lookup/types/lookup-show-more-custom-picker-context.d.ts +0 -18
  46. package/lib/modules/lookup/types/lookup-show-more-custom-picker.d.ts +0 -7
  47. package/lib/modules/lookup/types/lookup-show-more-native-picker-config.d.ts +0 -26
  48. package/lib/modules/lookup/types/lookup-show-more-native-picker-context.d.ts +0 -18
  49. package/lib/modules/search/search-adapter.service.d.ts +0 -15
  50. package/lib/modules/search/search.component.d.ts +0 -90
  51. package/lib/modules/search/search.module.d.ts +0 -14
  52. package/lib/modules/selection-modal/selection-modal-item-selected.pipe.d.ts +0 -10
  53. package/lib/modules/selection-modal/selection-modal.component.d.ts +0 -46
  54. package/lib/modules/selection-modal/selection-modal.module.d.ts +0 -10
  55. package/lib/modules/selection-modal/selection-modal.service.d.ts +0 -18
  56. package/lib/modules/selection-modal/types/selection-modal-add-click-callback-args.d.ts +0 -9
  57. package/lib/modules/selection-modal/types/selection-modal-add-click-event-args.d.ts +0 -11
  58. package/lib/modules/selection-modal/types/selection-modal-close-args.d.ts +0 -14
  59. package/lib/modules/selection-modal/types/selection-modal-context.d.ts +0 -19
  60. package/lib/modules/selection-modal/types/selection-modal-instance.d.ts +0 -33
  61. package/lib/modules/selection-modal/types/selection-modal-open-args.d.ts +0 -70
  62. package/lib/modules/selection-modal/types/selection-modal-result.d.ts +0 -14
  63. package/lib/modules/selection-modal/types/selection-modal-search-args.d.ts +0 -21
  64. package/lib/modules/selection-modal/types/selection-modal-search-result.d.ts +0 -25
  65. package/lib/modules/shared/sky-lookup-resources.module.d.ts +0 -10
  66. package/lib/modules/shared/sky-lookup-string-utils.d.ts +0 -5
  67. package/testing/legacy/country-field/country-field-fixture.d.ts +0 -37
  68. package/testing/legacy/country-field/country-field-testing.module.d.ts +0 -10
  69. package/testing/legacy/search/search-fixture.d.ts +0 -29
  70. package/testing/legacy/search/search-testing.module.d.ts +0 -11
  71. package/testing/modules/autocomplete/autocomplete-harness-filters.d.ts +0 -6
  72. package/testing/modules/autocomplete/autocomplete-harness.d.ts +0 -104
  73. package/testing/modules/autocomplete/autocomplete-input-harness.d.ts +0 -14
  74. package/testing/modules/autocomplete/autocomplete-search-result-harness-filters.d.ts +0 -10
  75. package/testing/modules/autocomplete/autocomplete-search-result-harness.d.ts +0 -30
  76. package/testing/modules/country-field/country-field-harness-filters.d.ts +0 -6
  77. package/testing/modules/country-field/country-field-harness.d.ts +0 -92
  78. package/testing/modules/country-field/country-field-search-result-harness-filters.d.ts +0 -6
  79. package/testing/modules/country-field/country-field-search-result-harness.d.ts +0 -20
  80. package/testing/modules/lookup/lookup-harness-filters.d.ts +0 -6
  81. package/testing/modules/lookup/lookup-harness.d.ts +0 -114
  82. package/testing/modules/lookup/lookup-search-result-harness-filters.d.ts +0 -6
  83. package/testing/modules/lookup/lookup-search-result-harness.d.ts +0 -17
  84. package/testing/modules/lookup/lookup-selection-harness.d.ts +0 -6
  85. package/testing/modules/lookup/lookup-selections-list-harness.d.ts +0 -20
  86. package/testing/modules/lookup/lookup-show-more-picker-harness-filters.d.ts +0 -6
  87. package/testing/modules/lookup/lookup-show-more-picker-harness.d.ts +0 -23
  88. package/testing/modules/lookup/lookup-show-more-picker-search-result-harness-filters.d.ts +0 -6
  89. package/testing/modules/lookup/lookup-show-more-picker-search-result-harness.d.ts +0 -6
  90. package/testing/modules/search/search-harness-filters.d.ts +0 -6
  91. package/testing/modules/search/search-harness.d.ts +0 -78
  92. package/testing/modules/selection-modal/selection-modal-harness.d.ts +0 -85
  93. package/testing/modules/selection-modal/selection-modal-search-result-harness-filters.d.ts +0 -6
  94. package/testing/modules/selection-modal/selection-modal-search-result-harness.d.ts +0 -6
  95. package/testing/public-api.d.ts +0 -28
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-lookup.mjs","sources":["../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-string-utils.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-default-search-function.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/types/autocomplete-message-type.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.html","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.module.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/clone-country-data.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/types/country-field-context-token.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.module.ts","../../../../../libs/components/lookup/src/lib/modules/search/search-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.html","../../../../../libs/components/lookup/src/lib/modules/search/search.module.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal-item-selected.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-instance.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-select-mode.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-custom-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.module.ts","../../../../../libs/components/lookup/src/skyux-lookup.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_multiple_results: { message: '{0} results available.' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_one_result: { message: 'One result available.' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_dropdown_hint_text: {\n message: 'Type to search for a country',\n },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Add {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: 'Showing {1} items, with {0} selected.',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Select all {0}',\n },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Clear all selected {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_aria_label: {\n message: 'Show only selected {0}',\n },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title: { message: 'Select {0}' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_show_more_select_context: { message: 'Select {0}' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_aria_label_descriptor: { message: 'Search {0}' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n 'FR-CA': {\n skyux_autocomplete_add: { message: 'Nouveau' },\n skyux_autocomplete_multiple_results: {\n message: '{0} résultats disponibles.',\n },\n skyux_autocomplete_no_results: { message: 'Aucune correspondance trouvée' },\n skyux_autocomplete_one_result: { message: 'Un résultat disponible.' },\n skyux_autocomplete_show_all: { message: 'Afficher tout' },\n skyux_autocomplete_show_all_count: { message: 'Afficher tout {0}' },\n skyux_autocomplete_show_matches_count: {\n message: 'Afficher les correspondances ({0})',\n },\n skyux_country_field_search_placeholder: { message: 'Rechercher un pays' },\n skyux_lookup_search_button_show_more: {\n message: 'Afficher tous les résultats de la recherche',\n },\n skyux_lookup_show_more_add: { message: 'Nouveau' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Ajouter {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: '{1} éléments affichés, avec {0} sélectionné(s).',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Sélectionner tout {0}',\n },\n skyux_lookup_show_more_select_all_button_title: {\n message: 'Sélectionner tout',\n },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Supprimer tous les éléments sélectionnés {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Effacer tout' },\n skyux_lookup_show_more_show_selected_option_aria_label: {\n message: 'Montrer seulement ce qui est sélectionné {0}',\n },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Montrer seulement les éléments sélectionnés',\n },\n skyux_lookup_show_more_cancel: { message: 'Annuler' },\n skyux_lookup_show_more_modal_title: { message: 'Sélectionner {0}' },\n skyux_lookup_show_more_no_results: {\n message: 'Aucune correspondance trouvée',\n },\n skyux_lookup_show_more_select: { message: 'Sélectionner' },\n skyux_lookup_show_more_select_context: { message: 'Sélectionner {0}' },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n skyux_search_aria_label_descriptor: { message: 'Rechercher {0}' },\n skyux_search_dismiss: { message: 'Omettre la recherche' },\n skyux_search_label: { message: 'Rechercher des articles' },\n skyux_search_open: { message: 'Ouvrir la recherche' },\n skyux_search_placeholder: { message: 'Trouver dans cette liste' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputTextChange } from './types/autocomplete-input-text-change';\n\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\n@Directive({\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n standalone: false,\n})\nexport class SkyAutocompleteInputDirective\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /**\n * The value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public set autocompleteAttribute(value: string | undefined) {\n if (!value) {\n this.#_autocompleteAttribute = 'off';\n } else {\n this.#_autocompleteAttribute = value;\n }\n\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'autocomplete',\n this.#_autocompleteAttribute,\n );\n }\n\n public get autocompleteAttribute(): string {\n return this.#_autocompleteAttribute || 'off';\n }\n\n /**\n * Whether to disable the autocomplete field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value ?? false;\n this.#renderer.setProperty(\n this.#elementRef.nativeElement,\n 'disabled',\n value,\n );\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n public get blur(): Observable<void> {\n return this.#blurObs;\n }\n\n public get displayWith(): string {\n return this.#_displayWith;\n }\n\n public set displayWith(value: string) {\n this.#_displayWith = value;\n this.inputTextValue = this.#getValueByKey();\n }\n\n public get focus(): Observable<void> {\n return this.#focusObs;\n }\n\n public get inputTextValue(): string {\n return this.#elementRef.nativeElement.value;\n }\n\n public set inputTextValue(value: string) {\n this.#elementRef.nativeElement.value = value || '';\n }\n\n public get textChanges(): Observable<SkyAutocompleteInputTextChange> {\n return this.#textChangesObs;\n }\n\n public get value(): any {\n return this.#_value;\n }\n\n public set value(value: any) {\n const isNewValue = value !== this.#_value;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this.#_value = value;\n this.inputTextValue = this.#getValueByKey();\n this.onChange(this.#_value);\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n }\n\n if (this.#isFirstChange && this.#_value) {\n this.#isFirstChange = false;\n }\n }\n }\n\n #blur: Subject<void>;\n\n #blurObs: Observable<void>;\n\n #control: AbstractControl | undefined;\n\n #elementRef: ElementRef;\n\n #focus: Subject<void>;\n\n #focusObs: Observable<void>;\n\n #isFirstChange = true;\n\n #ngUnsubscribe = new Subject<void>();\n\n #renderer: Renderer2;\n\n #textChanges: Subject<SkyAutocompleteInputTextChange>;\n\n #textChangesObs: Observable<SkyAutocompleteInputTextChange>;\n\n #_autocompleteAttribute: string | undefined;\n\n #_disabled = false;\n\n #_displayWith = '';\n\n #_value: any;\n\n constructor(elementRef: ElementRef, renderer: Renderer2) {\n this.#elementRef = elementRef;\n this.#renderer = renderer;\n\n this.#blur = new Subject<void>();\n this.#focus = new Subject<void>();\n this.#textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n this.#blurObs = this.#blur.asObservable();\n this.#focusObs = this.#focus.asObservable();\n this.#textChangesObs = this.#textChanges.asObservable();\n }\n\n public ngOnInit(): void {\n const element = this.#elementRef.nativeElement;\n\n this.#setAttributes(this.#elementRef);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#textChanges.next({\n value: this.#elementRef.nativeElement.value,\n });\n }\n });\n\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (!this.disabled) {\n this.#isFirstChange = false;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#blur.complete();\n this.#textChanges.complete();\n\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public writeValue(value: any): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n public restoreInputTextValueToPreviousState(): void {\n const modelValue = this.#getValueByKey();\n\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n\n this.onTouched();\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (!this.#control) {\n this.#control = control;\n }\n return null;\n }\n\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n public setActiveDescendant(descendantId: string | null): void {\n if (descendantId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-activedescendant',\n descendantId,\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-activedescendant',\n );\n }\n }\n\n /**\n * Used to connect the input to the overlay.\n */\n public setAriaControls(overlayId: string | null): void {\n if (overlayId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-controls',\n overlayId,\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-controls',\n );\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange(value: any): void {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched(): void {}\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onValidatorChange = (): void => {};\n\n #setAttributes(elementRef: ElementRef): void {\n const element = elementRef.nativeElement;\n\n this.#renderer.setAttribute(\n element,\n 'autocomplete',\n this.autocompleteAttribute,\n );\n this.#renderer.setAttribute(element, 'autocapitalize', 'none');\n this.#renderer.setAttribute(element, 'autocorrect', 'off');\n this.#renderer.setAttribute(element, 'spellcheck', 'false');\n this.#renderer.addClass(element, 'sky-form-control');\n }\n\n #getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : undefined;\n }\n}\n","import { EventEmitter, Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyAutocompleteSearchAsyncDisabled',\n standalone: false,\n})\nexport class SkyAutocompleteSearchAsyncDisabledPipe implements PipeTransform {\n public transform(\n searchAsync: EventEmitter<SkyAutocompleteSearchAsyncArgs>,\n searchAsyncDisabled: boolean | undefined,\n ): boolean {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n}\n","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyOverlayInstance } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAutocompleteAdapterService {\n #coreAdapterService: SkyCoreAdapterService;\n\n #renderer: Renderer2;\n\n constructor(\n coreAdapterService: SkyCoreAdapterService,\n rendererFactory: RendererFactory2,\n ) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Adds the className for the provided element.\n */\n public addCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.addClass(element, className);\n }\n }\n\n public getOverlayFocusableElements(\n overlay: SkyOverlayInstance,\n ): HTMLElement[] {\n return this.#coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement,\n { ignoreTabIndex: true },\n );\n }\n\n /**\n * Removes the className for the provided element.\n */\n public removeCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.removeClass(element, className);\n }\n }\n\n public setDropdownWidth(\n elementRef: ElementRef,\n dropdownRef: ElementRef,\n isInputBox: boolean,\n ): void {\n // `setTimeout` ensures that the input box size is correct when grabbing the width. When the input is initially focused a parent's `overflow-y: auto` value can cause the width to be incorrect during initial rendering.\n setTimeout(() => {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.#renderer.setStyle(\n dropdownRef.nativeElement,\n 'width',\n `${width}px`,\n );\n }\n });\n }\n\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n public setTabIndex(element: HTMLElement, tabIndex: number): void {\n element.tabIndex = tabIndex;\n }\n}\n","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteDefaultSearchFunctionOptions } from './types/autocomplete-default-search-function-options';\nimport { SkyAutocompleteSearchArgs } from './types/autocomplete-search-args';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSearchFunctionResponse } from './types/autocomplete-search-function-response';\n\nexport function skyAutocompleteDefaultSearchFunction(\n options: SkyAutocompleteDefaultSearchFunctionOptions,\n): SkyAutocompleteSearchFunction {\n const filterData = function (\n searchText: string,\n data: any[],\n args?: SkyAutocompleteSearchArgs,\n ): any[] {\n return data.filter((item: any) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find(\n (filter: SkyAutocompleteSearchFunctionFilter) => {\n return !filter.call({}, searchText, item, args);\n },\n );\n\n return failedFilter === undefined;\n });\n };\n\n const search = function (\n searchText: string,\n data: any[],\n args?: SkyAutocompleteSearchArgs,\n ): SkyAutocompleteSearchFunctionResponse {\n const results: any[] = [];\n\n /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data, args);\n\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property: string) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n\n if (isMatch) {\n results.push(result);\n }\n }\n\n return results;\n };\n\n return search;\n}\n","/**\n * @internal\n */\nexport enum SkyAutocompleteMessageType {\n /**\n * Closes the dropdown.\n */\n CloseDropdown = 0,\n\n /**\n * Repositions the dropdown.\n */\n RepositionDropdown = 1,\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyLiveAnnouncerService,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyStackingContext,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n from,\n fromEvent as observableFromEvent,\n of,\n} from 'rxjs';\nimport {\n debounceTime,\n delay,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from './types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchAsyncResult } from './types/autocomplete-search-async-result';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSelectionChange } from './types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from './types/autocomplete-show-more-args';\n\n/**\n * @internal\n */\ninterface SkyAutocompleteSearchResult {\n elementId: string;\n data: any;\n}\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [SkyAutocompleteAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyAutocompleteComponent implements OnDestroy, AfterViewInit {\n //#region public_api\n\n /**\n * The HTML element ID of the element that labels\n * the autocomplete text input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n */\n @Input()\n public set data(value: any[] | undefined) {\n this.#_data = value ?? [];\n }\n\n public get data(): any[] {\n return this.#_data;\n }\n\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number | undefined) {\n this.#_debounceTime = value ?? 0;\n }\n\n public get debounceTime(): number {\n return this.#_debounceTime;\n }\n\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string | undefined) {\n this.#_descriptorProperty = value || 'name';\n }\n\n public get descriptorProperty(): string {\n return this.#_descriptorProperty;\n }\n\n /**\n * Hint text to show in the dropdown\n * @internal\n */\n @Input()\n public dropdownHintText: string | undefined;\n\n /**\n * @internal\n * Whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n @Input()\n public set enableShowMore(value: boolean | undefined) {\n this.#_enableShowMore = !!value;\n this.#updateIsResultsVisible();\n }\n public get enableShowMore(): boolean {\n return this.#_enableShowMore;\n }\n\n /**\n * The observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n @Input()\n public set messageStream(value: Subject<SkyAutocompleteMessage> | undefined) {\n this.#_messageStream = value ?? new Subject<SkyAutocompleteMessage>();\n this.#initMessageStream();\n }\n\n public get messageStream(): Subject<SkyAutocompleteMessage> {\n return this.#_messageStream;\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass: string | undefined;\n\n /**\n * The object properties to search.\n * @default [\"name\"]\n * @deprecated We recommend against using this property. To search specific properties, use the `searchAsync` event instead.\n */\n @Input()\n public set propertiesToSearch(value: string[] | undefined) {\n this.#_propertiesToSearch = value ?? ['name'];\n\n this.#updateDefaultSearchOptions();\n }\n\n public get propertiesToSearch(): string[] {\n return this.#_propertiesToSearch;\n }\n\n /**\n * The function that dynamically manages the data source when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated We recommend against using this property. To call a remote data source, use the `searchAsync` event instead.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction | undefined) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n\n public get search(): SkyAutocompleteSearchFunction | undefined {\n return this.#_search;\n }\n\n /**\n * The template that formats each search result in the dropdown list.\n * The autocomplete component injects search result values into the template\n * as `item` variables that reference all of the object properties of the search results.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n /**\n * The minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number | undefined) {\n this.#_searchTextMinimumCharacters = value && value > 0 ? value : 1;\n }\n\n public get searchTextMinimumCharacters(): number {\n return this.#_searchTextMinimumCharacters;\n }\n\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated We recommend against using this property. To filter results, use the `searchAsync` event instead.\n */\n @Input()\n public set searchFilters(\n value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n ) {\n this.#_searchFilters = value;\n\n this.#updateDefaultSearchOptions();\n }\n\n public get searchFilters():\n | SkyAutocompleteSearchFunctionFilter[]\n | undefined {\n return this.#_searchFilters;\n }\n\n /**\n * The maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n @Input()\n public set searchResultsLimit(value: number | undefined) {\n this.#_searchResultsLimit = value || 0;\n }\n\n public get searchResultsLimit(): number {\n return this.#_searchResultsLimit;\n }\n\n /**\n * @internal\n * Whether to display a button that lets users add options to the data source.\n * @default false\n */\n @Input()\n public set showAddButton(value: boolean | undefined) {\n this.#_showAddButton = !!value;\n this.#updateIsResultsVisible();\n }\n public get showAddButton(): boolean {\n return this.#_showAddButton;\n }\n\n /**\n * The text to display when no search results are found.\n * @default \"No matches found\"\n */\n @Input()\n public noResultsFoundText: string | undefined;\n\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n * @default false\n */\n @Input()\n public searchAsyncDisabled: boolean | undefined = false;\n\n /**\n * Allows the user to specify arbitrary values not in the search results.\n * @default false\n */\n public allowAnyValue = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the search text in each search result. Set this to false\n * when your search finds results that are not exact text matches, e.g.\n * returning \"Bob\" for the term \"Robert.\"\n * @default true\n */\n public highlightSearchText = input(true, { transform: booleanAttribute });\n\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n @Output()\n public addClick = new EventEmitter<void>();\n\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n @Output()\n public showMoreClick = new EventEmitter<SkyAutocompleteShowMoreArgs>();\n\n /**\n * Fires when users select items in the dropdown list.\n */\n @Output()\n public selectionChange = new EventEmitter<SkyAutocompleteSelectionChange>();\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n /**\n * @internal\n */\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n //#endregion\n\n //#region template_properties\n\n public get searchResults(): SkyAutocompleteSearchResult[] {\n return this.#_searchResults || [];\n }\n\n public set searchResults(value: SkyAutocompleteSearchResult[]) {\n this.#_searchResults = value;\n }\n\n public get highlightText(): string[] {\n return this.#_highlightText || [];\n }\n\n public set highlightText(value: string[]) {\n this.#_highlightText = value;\n }\n\n public isOpen = false;\n\n public resultsListId: string;\n\n public resultsWrapperId: string;\n\n public searchText = '';\n\n public get showActionsArea(): boolean {\n return !!this.showAddButton || !!this.enableShowMore;\n }\n\n public isSearchingAsync = false;\n\n public searchResultsCount: number | undefined;\n\n //#endregion\n\n @ContentChild(SkyAutocompleteInputDirective)\n public set inputDirective(\n directive: SkyAutocompleteInputDirective | undefined,\n ) {\n if (!directive) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' '),\n );\n }\n\n if (this.#_inputDirective !== directive) {\n // Unsubscribe from old subscriptions on any previous input directive\n this.#inputDirectiveUnsubscribe.next();\n\n this.#_inputDirective = directive;\n\n this.#_inputDirective.displayWith = this.descriptorProperty;\n\n this.#_inputDirective.textChanges\n .pipe(\n takeUntil(this.#inputDirectiveUnsubscribe),\n debounceTime(this.debounceTime),\n switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n }),\n )\n .subscribe((change) => {\n this.#searchTextChanged(change.value);\n });\n\n // We delay this listener by 25ms to give things watching the value time to respond (such as the search button).\n this.#_inputDirective.blur\n .pipe(delay(25), takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n directive.restoreInputTextValueToPreviousState();\n this.#closeDropdown();\n this.#cancelCurrentSearch();\n directive.onTouched();\n this.#hasFocus = false;\n this.#liveAnnounceService.clear();\n });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea || this.dropdownHintText) {\n this.#openDropdown();\n }\n });\n }\n }\n\n public get inputDirective(): SkyAutocompleteInputDirective | undefined {\n return this.#_inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', { read: TemplateRef })\n public resultsTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('resultsRef', { read: ElementRef })\n public set resultsRef(value: ElementRef | undefined) {\n if (value) {\n this.#_resultsRef = value;\n this.#destroyAffixer();\n this.#createAffixer();\n }\n }\n\n public get resultsRef(): ElementRef | undefined {\n return this.#_resultsRef;\n }\n\n public searchOrDefault: SkyAutocompleteSearchFunction;\n\n protected isResultsVisible: Observable<boolean>;\n\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n #activeElementIndex = -1;\n\n #adapterService: SkyAutocompleteAdapterService;\n\n #affixer: SkyAffixer | undefined;\n\n #affixService: SkyAffixService;\n\n #changeDetector: ChangeDetectorRef;\n\n #elementRef: ElementRef;\n\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n readonly #liveAnnounceService = inject(SkyLiveAnnouncerService);\n\n readonly #libResourceService = inject(SkyLibResourcesService);\n\n #hasFocus = false;\n\n #inputBoxHostSvc: SkyInputBoxHostService | undefined;\n\n #inputDirectiveUnsubscribe = new Subject<void>();\n\n #messageStreamSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #overlay: SkyOverlayInstance | undefined;\n\n #overlayService: SkyOverlayService;\n\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n #overlayFocusableElements: HTMLElement[] = [];\n\n #currentSearchSub: Subscription | undefined;\n\n #isResultsVisible = new BehaviorSubject<boolean>(false);\n\n #zIndex: Observable<number> | undefined;\n\n #_data: any[] = [];\n\n #_debounceTime = 0;\n\n #_descriptorProperty = 'name';\n\n #_enableShowMore = false;\n\n #_highlightText: string[] | undefined;\n\n #_inputDirective: SkyAutocompleteInputDirective | undefined;\n\n #_messageStream = new Subject<SkyAutocompleteMessage>();\n\n #_propertiesToSearch = ['name'];\n\n #_resultsRef: ElementRef | undefined;\n\n #_search: SkyAutocompleteSearchFunction | undefined;\n\n #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n #_searchResults: SkyAutocompleteSearchResult[] | undefined;\n\n #_searchResultsLimit = 0;\n\n #_searchTextMinimumCharacters = 1;\n\n #_showAddButton = false;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elementRef: ElementRef,\n affixService: SkyAffixService,\n adapterService: SkyAutocompleteAdapterService,\n overlayService: SkyOverlayService,\n @Optional() inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional()\n @Inject(SKY_STACKING_CONTEXT)\n stackingContext?: SkyStackingContext,\n ) {\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n this.#adapterService = adapterService;\n this.#overlayService = overlayService;\n this.#inputBoxHostSvc = inputBoxHostSvc;\n this.#zIndex = stackingContext?.zIndex;\n\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n this.isResultsVisible = this.#isResultsVisible.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#addInputEventListeners();\n }\n\n public ngOnDestroy(): void {\n this.#cancelCurrentSearch();\n this.#inputDirectiveUnsubscribe.next();\n this.#inputDirectiveUnsubscribe.complete();\n this.#isResultsVisible.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.openChange.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit();\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n\n public handleKeydown(event: KeyboardEvent): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.#getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find(\n (r) => r.elementId === activeElementId,\n );\n\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'tab':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n } else {\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n }\n\n this.#closeDropdown();\n break;\n\n case 'escape':\n this.#closeDropdown();\n break;\n\n case 'arrowdown':\n case 'down':\n this.#removeFocusedClass();\n if (\n this.#activeElementIndex ===\n this.#overlayFocusableElements.length - 1 ||\n this.#activeElementIndex === -1\n ) {\n this.#activeElementIndex = 0;\n } else {\n this.#activeElementIndex = this.#activeElementIndex + 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'arrowup':\n case 'up':\n this.#removeFocusedClass();\n if (this.#activeElementIndex <= 0) {\n this.#activeElementIndex =\n this.#overlayFocusableElements.length - 1;\n } else {\n this.#activeElementIndex = this.#activeElementIndex - 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n\n #announceResults(): void {\n this.#libResourceService\n .getStrings({\n noResults: 'skyux_autocomplete_no_results',\n singleCountResult: 'skyux_autocomplete_one_result',\n multipleCountResults: [\n 'skyux_autocomplete_multiple_results',\n this.searchResultsCount,\n ],\n })\n .pipe(take(1))\n .subscribe((localizedStrings) => {\n let announcementString = '';\n if (this.searchResultsCount && this.searchResultsCount > 0) {\n announcementString =\n this.searchResultsCount === 1\n ? localizedStrings.singleCountResult\n : localizedStrings.multipleCountResults;\n this.#liveAnnounceService.announce(announcementString);\n } else if (this.searchResultsCount === 0) {\n this.#liveAnnounceService.announce(localizedStrings.noResults);\n }\n });\n }\n\n public moreButtonClicked(): void {\n this.showMoreClick.emit({ inputValue: this.searchText });\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n\n public onResultClick(id: string, event: MouseEvent): void {\n this.#selectSearchResultById(id);\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onResultMouseMove(id: number): void {\n if (id !== this.#activeElementIndex) {\n this.#removeFocusedClass();\n this.#activeElementIndex = id;\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n }\n }\n\n public isElementFocused(ref: HTMLElement): boolean {\n return ref === this.#overlayFocusableElements[this.#activeElementIndex];\n }\n\n #searchTextChanged(searchText: string | undefined): void {\n if (this.#hasFocus) {\n this.#openDropdown();\n if (!searchText?.trim()) {\n this.#handleEmptySearchText();\n return;\n }\n\n const isLongEnough =\n searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n\n this.searchText = searchText.trim();\n this.#updateIsResultsVisible();\n\n if (isLongEnough && isDifferent) {\n this.#performSearchAndUpdateResults();\n } else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n } else {\n this.isSearchingAsync = false;\n }\n }\n\n #handleEmptySearchText(): void {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({ selectedItem: undefined });\n }\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n\n #performSearchAndUpdateResults(): void {\n this.#cancelCurrentSearch();\n\n this.#currentSearchSub = this.#performSearch().subscribe({\n next: (result) => {\n const items = (\n result?.items as Record<string, unknown>[] | undefined\n )?.filter((item) => {\n return item && this.descriptorProperty in item;\n });\n\n this.searchResults =\n items?.map((r, i) => {\n const result: SkyAutocompleteSearchResult = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n }) || [];\n\n this.searchResultsCount = result?.totalCount || 0;\n\n this.#displayResultsDropdown();\n },\n complete: () => {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n },\n });\n }\n\n #displayResultsDropdown(): void {\n this.highlightText = this.#getHighlightText(this.searchText);\n this.#removeFocusedClass();\n this.#removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.#activeElementIndex = 0;\n } else {\n this.#activeElementIndex = -1;\n }\n\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n\n // Safety check\n /* istanbul ignore else */\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n if (this.#affixer) {\n this.#affixer.reaffix();\n this.#changeDetector.detectChanges();\n this.#initOverlayFocusableElements();\n }\n });\n } else {\n this.#openDropdown();\n this.#changeDetector.markForCheck();\n }\n }\n\n #performSearch(): Observable<SkyAutocompleteSearchAsyncResult | undefined> {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return this.allowAnyValue()\n ? this.#combineSearchTextWithResult(searchAsyncArgs)\n : searchAsyncArgs.result?.pipe(take(1)) || of(undefined);\n }\n\n const result = this.searchOrDefault(this.searchText, this.data, {\n context: 'popover',\n });\n\n if (result instanceof Array) {\n return of({ items: result, totalCount: result.length });\n }\n\n return from(result).pipe(\n map((items) => {\n return { items, totalCount: items.length };\n }),\n );\n }\n\n #combineSearchTextWithResult(\n searchAsyncArgs: SkyAutocompleteSearchAsyncArgs,\n ): Observable<SkyAutocompleteSearchAsyncResult> {\n const searchTextItem = { [this.descriptorProperty]: this.searchText };\n const searchTextResult = { items: [searchTextItem], totalCount: 1 };\n\n if (searchAsyncArgs.result) {\n return searchAsyncArgs.result.pipe(\n take(1),\n map((result) => {\n if (\n (result.items as Record<string, string>[]).some(\n (item) => item[this.descriptorProperty] === this.searchText,\n )\n ) {\n return result;\n }\n\n // Include a result for the current search text as the first option\n // if no exact match is found in the results.\n return { ...result, items: [searchTextItem, ...result.items] };\n }),\n // Display the current search text immediately while async results load.\n startWith<SkyAutocompleteSearchAsyncResult>(searchTextResult),\n );\n }\n\n return of(searchTextResult);\n }\n\n #cancelCurrentSearch(): void {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n }\n }\n\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n #getHighlightText(searchText: string): string[] {\n if (this.highlightSearchText()) {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n\n let matchesToHighlight: string[] = [];\n for (let i = 0, n = this.searchResults.length; i < n; i++) {\n const value = this.searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase() as string;\n const normalizedDataValue = normalizeDiacritics(value);\n\n let offset = 0;\n let index: number;\n while (\n (index = normalizedDataValue.indexOf(normalizedSearchText, offset)) >\n -1\n ) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n\n return [];\n }\n\n #selectSearchResultById(id: string): void {\n const result = this.searchResults.find((r) => r.elementId === id);\n /* istanbul ignore else */\n if (result) {\n const data = result.data;\n this.searchText = data[this.descriptorProperty];\n if (this.inputDirective) {\n this.inputDirective.value = data;\n }\n this.selectionChange.emit({ selectedItem: data });\n }\n }\n\n #openDropdown(): void {\n if (!this.#overlay && this.resultsTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n wrapperClass: this.wrapperClass,\n });\n\n if (this.#zIndex) {\n this.#zIndex.pipe(takeUntil(overlay.closed)).subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n\n overlay.attachTemplate(this.resultsTemplateRef);\n\n this.#overlay = overlay;\n this.isOpen = true;\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n this.#updateAriaControls();\n this.#initOverlayFocusableElements();\n this.#announceResults();\n this.openChange.emit(true);\n }\n }\n\n #closeDropdown(): void {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaControls();\n this.#changeDetector.markForCheck();\n this.openChange.emit(false);\n }\n\n #setActiveDescendant(): void {\n const activeElement =\n this.#overlayFocusableElements[this.#activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement && this.inputDirective) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n\n #removeActiveDescendant(): void {\n if (this.inputDirective) {\n this.inputDirective.setActiveDescendant(null);\n }\n }\n\n #updateAriaControls(): void {\n if (this.inputDirective) {\n this.inputDirective.setAriaControls(this.#overlay?.id || null);\n }\n }\n\n #resetSearch(): void {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#removeFocusedClass();\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n }\n\n #addInputEventListeners(): void {\n const element = this.#elementRef.nativeElement;\n\n observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n this.handleKeydown(event);\n });\n\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen && this.resultsRef) {\n this.#adapterService.setDropdownWidth(\n this.#elementRef,\n this.resultsRef,\n !!this.#inputBoxHostSvc,\n );\n }\n });\n }\n\n #destroyOverlay(): void {\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n\n #createAffixer(): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.#affixer && this.resultsRef) {\n const affixer = this.#affixService.createAffixer(this.resultsRef);\n\n this.#adapterService.setDropdownWidth(\n this.#elementRef,\n this.resultsRef,\n !!this.#inputBoxHostSvc,\n );\n\n affixer.affixTo(this.#elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n\n this.#affixer = affixer;\n }\n }\n\n #destroyAffixer(): void {\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n\n #initMessageStream(): void {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n this.#messageStreamSub = undefined;\n }\n\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.#closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.#affixer) {\n this.#affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n\n #initOverlayFocusableElements(): void {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.#overlay) {\n this.#overlayFocusableElements =\n this.#adapterService.getOverlayFocusableElements(this.#overlay);\n this.#overlayFocusableElements.forEach((el) => {\n this.#adapterService.setTabIndex(el, -1);\n });\n this.#addFocusedClass();\n this.#announceResults();\n }\n });\n }\n\n #getActiveElement(): HTMLElement {\n return this.#overlayFocusableElements[this.#activeElementIndex];\n }\n\n #removeFocusedClass(): void {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.removeCSSClass(\n this.#overlayFocusableElements[this.#activeElementIndex],\n 'sky-autocomplete-descendant-focus',\n );\n }\n }\n\n #addFocusedClass(): void {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.addCSSClass(\n this.#overlayFocusableElements[this.#activeElementIndex],\n 'sky-autocomplete-descendant-focus',\n );\n this.#setActiveDescendant();\n }\n }\n\n #updateDefaultSearchOptions(): void {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n\n #updateIsResultsVisible(): void {\n const isResultsVisible =\n !!this.searchText &&\n (!this.showActionsArea || this.searchResults.length > 0);\n if (isResultsVisible !== this.#isResultsVisible.getValue()) {\n this.#isResultsVisible.next(isResultsVisible);\n }\n }\n}\n","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"\n isOpen &&\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-controls]=\"\n isOpen &&\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\n ? resultsListId\n : null\n \"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content />\n</div>\n\n<ng-template #resultsTemplateRef>\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\n <div\n #resultsRef\n class=\"sky-autocomplete-results-container\"\n [attr.id]=\"resultsListId\"\n [skyThemeClass]=\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (isSearchingAsync && !allowAnyValue()) {\n <div class=\"sky-autocomplete-results-waiting\">\n <sky-wait [isWaiting]=\"true\" />\n </div>\n } @else {\n @if (isResultsVisible | async) {\n <div\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n >\n @for (result of searchResults; track result.data; let i = $index) {\n @if (\n (!searchResultsLimit || i < searchResultsLimit) &&\n !(enableShowMore && i >= 5)\n ) {\n <div\n #searchResultEl\n class=\"sky-autocomplete-result\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"isElementFocused(searchResultEl)\"\n [attr.data-descriptor-value]=\"result.data[descriptorProperty]\"\n [attr.id]=\"result.elementId\"\n [skyHighlight]=\"highlightText\"\n (click)=\"onResultClick(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate || defaultSearchResultTemplate;\n context: { item: result.data }\n \"\n />\n </div>\n }\n }\n @if (isSearchingAsync && allowAnyValue()) {\n <div class=\"sky-autocomplete-results-waiting\">\n <sky-wait [isWaiting]=\"true\" />\n </div>\n }\n @if (searchResults.length === 0) {\n <div class=\"sky-font-deemphasized sky-autocomplete-no-results\">\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n }\n </div>\n } @else if (dropdownHintText) {\n <div class=\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\">\n {{ dropdownHintText }}\n </div>\n }\n @if (showActionsArea) {\n <div class=\"sky-autocomplete-actions\">\n @if (enableShowMore && (!searchText || searchResults.length > 0)) {\n <button\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (click)=\"moreButtonClicked()\"\n >\n @if (\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText\n ) {\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n }\n @if (\n (searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\n !searchText\n ) {\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources\n : (data.length | skyNumeric: { truncate: false })\n }}\n }\n @if (searchText) {\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount\n | skyNumeric: { truncate: false }))\n }}\n }\n </button>\n }\n @if (searchText && searchResults.length === 0) {\n <div\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n }\n @if (showAddButton) {\n <button\n #addButtonEl\n class=\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\"\n tabindex=\"0\"\n type=\"button\"\n [class.focused]=\"isElementFocused(addButtonEl)\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n }\n </div>\n }\n }\n </div>\n</ng-template>\n\n<ng-template #defaultSearchResultTemplate let-item=\"item\">\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyIdModule, SkyNumericModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\n","import { type Country } from 'intl-tel-input/data';\n\nimport type { SkyCountryFieldCountry } from './types/country';\n\n/**\n * Clone the country data for each component instance to avoid overwriting\n * the global country data.\n */\nexport function cloneCountryData(data: Country[]): SkyCountryFieldCountry[] {\n const clone = [...data];\n\n return clone.map((country) => {\n const mapped: SkyCountryFieldCountry = {\n iso2: country.iso2,\n dialCode: country.dialCode,\n name: country.name,\n priority: country.priority,\n };\n\n if (country.areaCodes) {\n mapped.areaCodes = [...country.areaCodes];\n }\n\n return mapped;\n });\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyCountryFieldContext } from './country-field-context';\n\n/**\n * @internal\n */\nexport const SKY_COUNTRY_FIELD_CONTEXT =\n new InjectionToken<SkyCountryFieldContext>('SkyCountryFieldContext');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NgControl,\n NgModel,\n UntypedFormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport intlTelInput from 'intl-tel-input';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\n\nimport { cloneCountryData } from './clone-country-data';\nimport { SkyCountryFieldCountry } from './types/country';\nimport { SkyCountryFieldContext } from './types/country-field-context';\nimport { SKY_COUNTRY_FIELD_CONTEXT } from './types/country-field-context-token';\n\nconst DEFAULT_COUNTRY_CODE = 'us';\n\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-country-field',\n templateUrl: './country-field.component.html',\n styleUrls: ['./country-field.component.scss'],\n providers: [SKY_COUNTRY_FIELD_VALIDATOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkyCountryFieldComponent\n implements ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * The value for the HTML `autocomplete` attribute on the form input.\n * @default 'off'\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public autocompleteAttribute: string | undefined;\n\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n @Input()\n public set defaultCountry(value: string | undefined) {\n if (!value) {\n value = DEFAULT_COUNTRY_CODE;\n }\n\n if (value !== this.#_defaultCountry) {\n this.#_defaultCountry = value.toLowerCase();\n\n this.#defaultCountryData = this.countries.find(\n (country) => country.iso2 === this.#_defaultCountry,\n );\n\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n\n public get defaultCountry(): string | undefined {\n return this.#_defaultCountry;\n }\n\n /**\n * Whether to disable the country field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean | undefined) {\n this.#_disabled = isDisabled ?? false;\n\n if (isDisabled) {\n this.countrySearchFormControl.disable();\n } else {\n this.countrySearchFormControl.enable();\n }\n\n this.#changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n @Input()\n public set supportedCountryISOs(value: string[] | undefined) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n\n this.#_supportedCountryISOs = value;\n this.#setupCountries();\n }\n\n public get supportedCountryISOs(): string[] {\n return this.#_supportedCountryISOs || [];\n }\n\n /**\n * Fires when the selected country changes.\n */\n @Output()\n public selectedCountryChange: EventEmitter<SkyCountryFieldCountry> =\n new EventEmitter<SkyCountryFieldCountry>();\n\n /**\n * Fires when the country field is focused out.\n * @internal\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n @Output()\n public countryFieldFocusout: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n\n public countries: SkyCountryFieldCountry[] = [];\n\n public countrySearchFormControl: UntypedFormControl;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective:\n | SkyAutocompleteInputDirective\n | undefined;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry | undefined) {\n if (!this.#countriesAreEqual(this.selectedCountry, newCountry)) {\n const newCountryIso = newCountry?.iso2;\n if (newCountryIso) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountryIso,\n );\n\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n\n this.#_selectedCountry = newCountry;\n\n this.#sortCountriesWithSelectedAndDefault(newCountry);\n\n this.#internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n\n if (!this.#isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n\n this.selectedCountryChange.emit(newCountry);\n } else if (this.#ngControl?.control) {\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n this.#ngControl.control.markAsPristine();\n }\n\n this.#isInitialChange = false;\n\n /**\n * The if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n } else if (!(this.#ngControl instanceof NgModel) || newCountry !== null) {\n this.#isInitialChange = false;\n }\n }\n\n public get selectedCountry(): SkyCountryFieldCountry | undefined {\n return this.#_selectedCountry;\n }\n\n public context: SkyCountryFieldContext | null = inject(\n SKY_COUNTRY_FIELD_CONTEXT,\n {\n optional: true,\n },\n );\n\n public inputId: string;\n protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #defaultCountryData: SkyCountryFieldCountry | undefined;\n\n #injector: Injector;\n\n #internalFormChange = false;\n\n #isInitialChange = true;\n\n #ngControl: NgControl | null = null;\n\n #ngUnsubscribe = new Subject<void>();\n\n #_defaultCountry: string | undefined;\n\n #_disabled = false;\n\n #_selectedCountry: SkyCountryFieldCountry | undefined;\n\n #_supportedCountryISOs: string[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n ) {\n this.#changeDetector = changeDetector;\n this.#injector = injector;\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n\n this.#setupCountries();\n\n this.countrySearchFormControl = new UntypedFormControl();\n }\n\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n public ngOnInit(): void {\n this.#updateInputBox();\n\n this.#ngControl = this.#injector.get<NgControl | null>(\n NgControl as unknown as Type<NgControl>,\n null,\n );\n\n if (this.#ngControl) {\n this.#ngControl.valueAccessor = this;\n } else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.#isInitialChange = false;\n }\n\n if (!this.defaultCountry) {\n this.defaultCountry = DEFAULT_COUNTRY_CODE;\n }\n\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.#internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n this.#changeDetector.markForCheck();\n }\n\n /**\n * Angular lifecycle hook for when the component is destructed.\n * @internal\n */\n public ngOnDestroy(): void {\n this.selectedCountryChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n public onCountrySelected(newCountry: SkyAutocompleteSelectionChange): void {\n if (newCountry.selectedItem) {\n this.writeValue(\n this.countries.find(\n (countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2,\n ),\n );\n } else {\n this.writeValue(undefined);\n }\n }\n\n /**\n * Called when the Autocomplete textarea loses focus\n * @internal\n */\n public onAutocompleteFocusout(e: FocusEvent): void {\n this.countryFieldFocusout.emit(e);\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n public onChange = (value: SkyCountryFieldCountry | undefined): void => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = (): void => {};\n\n public registerOnChange(\n fn: (value: SkyCountryFieldCountry | undefined) => void,\n ): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (control.value) {\n if (\n (this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)\n ) {\n return { unsupportedCountry: true };\n }\n }\n\n return null;\n }\n\n public writeValue(value: SkyCountryFieldCountry | undefined): void {\n this.selectedCountry = value;\n this.#changeDetector.markForCheck();\n }\n\n protected onFocus($event: FocusEvent): void {\n ($event.target as HTMLTextAreaElement).select();\n }\n\n #countriesAreEqual(\n country1: SkyCountryFieldCountry | undefined,\n country2: SkyCountryFieldCountry | undefined,\n ): boolean {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n\n #countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry,\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n #setupCountries(): void {\n this.countries = cloneCountryData(intlTelInput.getCountryData());\n\n /* istanbul ignore else */\n if (!this.context?.inPhoneField) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter(\n (country: SkyCountryFieldCountry) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n },\n );\n }\n }\n\n #sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry | undefined,\n ): void {\n let selectedCountryIndex: number;\n let selectedCountryData: SkyCountryFieldCountry;\n\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (\n ((this.#defaultCountryData &&\n this.#countriesEqual(a, this.#defaultCountryData)) ||\n (a.name && b.name && a.name < b.name)) &&\n (!this.#defaultCountryData ||\n !this.#countriesEqual(this.#defaultCountryData, b))\n ) {\n return -1;\n } else {\n return 1;\n }\n });\n\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the official data from the\n // library and not the data provided by the user on initialization of the component\n const foundCountry = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase(),\n );\n\n if (foundCountry) {\n selectedCountryData = foundCountry;\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n }\n\n this.countries = sortedNewCountries;\n }\n\n #updateInputBox(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n });\n }\n }\n}\n","@if (!inputBoxHostSvc) {\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n <span\n class=\"sky-country-field-container\"\n [ngClass]=\"{\n 'sky-country-field-disabled': disabled\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"inputBoxHostSvc?.labelId ?? inputId\"\n [data]=\"countries\"\n [dropdownHintText]=\"\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\n \"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div class=\"sky-country-field-input\">\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"\n context?.inPhoneField\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n : inputBoxHostSvc?.labelText\n ? undefined\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n \"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onAutocompleteFocusout($event)\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template #countrySearchResultTemplate let-item=\"item\">\n <div class=\"sky-country-field-search-result-flag\">\n <div [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"></div>\n </div>\n <div class=\"sky-country-field-search-result-info\">\n {{ item.name }}\n @if (context?.inPhoneField) {\n <span\n class=\"sky-font-deemphasized sky-country-field-search-result-dial-code\"\n >\n {{ item.dialCode }}\n </span>\n }\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n})\nexport class SkyCountryFieldModule {}\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySearchAdapterService {\n #renderer: Renderer2;\n\n constructor(renderer: Renderer2) {\n this.#renderer = renderer;\n }\n\n public selectInput(searchEl: ElementRef): void {\n this.#getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef): void {\n this.#getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef): void {\n const buttonWidth = this.#getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.#getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n\n this.#getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n minWidth.toString() + 'px',\n );\n }\n\n public endInputAnimation(searchEl: ElementRef): void {\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n '',\n );\n }\n\n #getInputContainerEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n #getSearchOpenButtonEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n #getSearchContainerEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n #getInputEl(searchEl: ElementRef): HTMLInputElement {\n return searchEl.nativeElement.querySelector('input');\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n SkyBreakpoint,\n SkyContentInfo,\n SkyContentInfoProvider,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SkySearchAdapterService } from './search-adapter.service';\n\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\n\n@Component({\n selector: 'sky-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('inputState', [\n state(\n INPUT_HIDDEN_STATE,\n style({\n opacity: 0,\n width: 0,\n }),\n ),\n state(\n INPUT_SHOWN_STATE,\n style({\n opacity: 1,\n width: '100%',\n }),\n ),\n transition('* <=> *', animate('150ms')),\n ]),\n ],\n providers: [SkySearchAdapterService],\n standalone: false,\n})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * The ARIA label for the search input. This sets the search input's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * Use a context-sensitive label, such as \"Search constituents.\" Context is especially important when multiple search inputs are in close proximity.\n * In toolbars, search inputs use the `listDescriptor` to provide context, and the ARIA label defaults to \"Search <listDescriptor>.\"\n * If the box includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the search. This sets the search's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the box does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * Fires when the search text is applied.\n */\n @Output()\n public searchApply = new EventEmitter<string>();\n\n /**\n * Fires when the search text is changed.\n */\n @Output()\n public searchChange = new EventEmitter<string>();\n\n /**\n * Fires when the search text is cleared.\n */\n @Output()\n public searchClear = new EventEmitter<void>();\n\n /**\n * Default search criteria for the input.\n */\n @Input()\n public searchText: string | undefined;\n\n /**\n * The expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n @Input()\n public set expandMode(value: string | undefined) {\n this.#_expandMode = value ?? EXPAND_MODE_RESPONSIVE;\n }\n\n public get expandMode(): string {\n return this.#_expandMode;\n }\n\n /**\n * How many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number | undefined) {\n this.#_debounceTime = value ?? 0;\n this.#setupSearchChangedEvent();\n }\n\n public get debounceTime(): number {\n return this.#_debounceTime;\n }\n\n /**\n * Whether to disable the filter button.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value ?? false;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Placeholder text to display in the search input until users\n * enter search criteria.\n * @default \"Find in this list\"\n */\n @Input()\n public placeholderText: string | undefined;\n\n public clearButtonShown = false;\n\n public dismissButtonShown = false;\n\n public inputAnimate: string = INPUT_SHOWN_STATE;\n\n public isCollapsible = true;\n\n public isFullWidth = false;\n\n public mobileSearchShown = false;\n\n public searchButtonShown = false;\n\n protected contentInfoObs: Observable<SkyContentInfo> | undefined;\n\n #changeRef: ChangeDetectorRef;\n\n #contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });\n\n #elRef: ElementRef;\n\n #manualFocus = false;\n\n #searchAdapter: SkySearchAdapterService;\n\n #searchUpdated = new Subject<string>();\n\n #searchUpdatedSub: Subscription | undefined;\n\n #_debounceTime = 0;\n\n #_disabled = false;\n\n #_expandMode = EXPAND_MODE_RESPONSIVE;\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #mediaQuerySvc = inject(SkyMediaQueryService);\n readonly #breakpoint = toSignal(this.#mediaQuerySvc.breakpointChange);\n\n constructor(\n elRef: ElementRef,\n searchAdapter: SkySearchAdapterService,\n changeRef: ChangeDetectorRef,\n ) {\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n\n this.contentInfoObs = this.#contentInfoProvider?.getInfo();\n }\n\n public ngOnInit(): void {\n if (this.#searchShouldCollapse()) {\n this.#mediaQuerySvc.breakpointChange\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((breakpoint) => {\n this.#mediaQueryCallback(breakpoint);\n });\n }\n\n this.#setupSearchChangedEvent();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.#expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n\n if (this.#searchBindingChanged(changes)) {\n this.#searchUpdated.next(this.searchText ?? '');\n this.clearButtonShown = !!(this.searchText && this.searchText !== '');\n if (this.#shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.#changeRef.detectChanges();\n }\n\n public clearSearchText(): void {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.#searchAdapter.focusInput(this.#elRef);\n this.#searchUpdated.next(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(\n event: KeyboardEvent,\n searchText: string | undefined,\n ): void {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string | undefined): void {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = !!(searchText && searchText !== '');\n if (searchText && searchText !== '') {\n this.#searchAdapter.selectInput(this.#elRef);\n }\n\n this.searchApply.emit(searchText);\n }\n\n public searchTextChanged(searchText: string): void {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean): void {\n if (this.#searchShouldCollapse()) {\n this.#manualFocus = true;\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n\n public inputAnimationStart(event: AnimationEvent): void {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n\n if (event.toState === INPUT_SHOWN_STATE && this.#breakpoint() === 'xs') {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent): void {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n\n const breakpoint = this.#breakpoint();\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs';\n\n if (\n (event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs') ||\n breakpoint !== 'xs'\n ) {\n this.mobileSearchShown = false;\n }\n\n setTimeout(() => {\n if (this.#manualFocus && !this.searchButtonShown) {\n this.#searchAdapter.focusInput(this.#elRef);\n this.#manualFocus = false;\n }\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n\n #searchBindingChanged(changes: SimpleChanges): boolean {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n #expandModeBindingChanged(changes: SimpleChanges): boolean {\n return (\n changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue\n );\n }\n\n #shouldOpenInput(): boolean {\n return (\n this.searchText !== '' &&\n this.#breakpoint() === 'xs' &&\n this.#searchShouldCollapse()\n );\n }\n\n #mediaQueryCallback(breakpoint: SkyBreakpoint): void {\n if (this.#searchShouldCollapse()) {\n if (breakpoint === 'xs') {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n } else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.mobileSearchShown = false;\n }\n }\n this.#changeRef.markForCheck();\n }\n\n #searchShouldCollapse(): boolean {\n return (\n (this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true\n );\n }\n\n #setupSearchChangedEvent(): void {\n this.#searchUpdatedSub?.unsubscribe();\n\n this.#searchUpdatedSub = this.#searchUpdated\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n}\n","<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n #searchInput=\"skyId\"\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n skyId\n [attr.aria-label]=\"\n ariaLabelledBy\n ? undefined\n : ariaLabel ||\n ((contentInfoObs | async)?.descriptor?.type === 'text'\n ? ('skyux_search_aria_label_descriptor'\n | skyLibResources\n : (contentInfoObs | async)?.descriptor?.value)\n : ('skyux_search_label' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon iconName=\"close\" />\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n @if (mobileSearchShown) {\n <button\n class=\"sky-btn sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" iconName=\"chevron-left\" />\n <sky-icon *skyThemeIf=\"'modern'\" iconName=\"chevron-double-left\" />\n </button>\n }\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon iconName=\"search\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySearchComponent } from './search.component';\n\n@NgModule({\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n})\nexport class SkySearchModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n standalone: true,\n name: 'skySelectionModalItemSelected',\n})\nexport class SkySelectionModalItemSelectedPipe implements PipeTransform {\n public transform(id: unknown, selectedIdMap: Map<unknown, unknown>): boolean {\n return selectedIdMap.has(id);\n }\n}\n","import { SkyAutocompleteSearchAsyncFunction } from '../../autocomplete/types/autocomplete-search-async-function';\nimport { SkyLookupSelectModeType } from '../../lookup/types/lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from '../../lookup/types/lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the selection modal. These values are provided by the selection modal service.\n */\nexport class SkySelectionModalContext {\n public descriptorProperty: string;\n\n public idProperty: string;\n\n public initialSearch: string;\n\n public initialValue: unknown[];\n\n public searchAsync: SkyAutocompleteSearchAsyncFunction;\n\n public selectionDescriptor: string;\n\n public selectMode: SkyLookupSelectModeType;\n\n public showAddButton: boolean;\n\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n constructor(\n descriptorProperty: string,\n idProperty: string,\n initialSearch: string,\n initialValue: unknown[],\n searchAsync: SkyAutocompleteSearchAsyncFunction,\n selectMode: SkyLookupSelectModeType,\n selectionDescriptor: string,\n showAddButton: boolean,\n userConfig: SkyLookupShowMoreNativePickerConfig,\n ) {\n this.descriptorProperty = descriptorProperty;\n this.idProperty = idProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.searchAsync = searchAsync;\n this.selectMode = selectMode;\n this.selectionDescriptor = selectionDescriptor;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n SkyIdService,\n SkyLiveAnnouncerService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalSearchResult } from './types/selection-modal-search-result';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-selection-modal',\n templateUrl: './selection-modal.component.html',\n styleUrls: ['./selection-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalItemSelectedPipe,\n SkyThemeModule,\n SkyToolbarModule,\n SkyWaitModule,\n SkyViewkeeperModule,\n ],\n})\nexport class SkySelectionModalComponent implements OnInit, OnDestroy {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick = new Subject<void>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public displayedItems: any[] = [];\n\n public hasMoreItems = false;\n\n /**\n * Used to associate this modal with its owning lookup component.\n */\n public id: string;\n\n public isLoadingMore = false;\n\n public isSearching = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public items: any[] = [];\n\n public onlyShowSelected = false;\n\n public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n public searchText: string | undefined;\n\n public selectedIdMap = new Map<unknown, unknown>();\n\n #continuationData: unknown;\n\n #currentSearchSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #offset = 0;\n\n protected readonly context = inject(SkySelectionModalContext);\n protected readonly modalInstance = inject(SkyModalInstance);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #idSvc = inject(SkyIdService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n constructor() {\n this.id = this.#idSvc.generateId();\n }\n\n public ngOnInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n\n this.#createInitialSelectedItemsMap();\n this.#loadSearchResults();\n }\n\n public ngOnDestroy(): void {\n this.#cancelCurrentSearch();\n\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public clearAll(): void {\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n\n this.updateDisplayedItems();\n\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addItem(itemToAdd: any): void {\n // Add the selected item, then perform the search again in case the\n // newly-added item should be displayed as a search results.\n this.#offset = 0;\n this.onItemSelect(true, itemToAdd);\n this.#loadSearchResults();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const itemId = itemToSelect[this.context.idProperty];\n\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n } else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n } else {\n this.selectedIdMap.delete(itemId);\n }\n }\n\n this.updateDisplayedItems();\n }\n\n public searchApplied(searchText: string): void {\n this.#offset = 0;\n this.searchText = searchText;\n\n this.#loadSearchResults();\n }\n\n public selectAll(): void {\n this.selectedIdMap = new Map();\n\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n\n this.updateDisplayedItems();\n }\n\n public infiniteScrollEnd(): void {\n this.#cancelCurrentSearch();\n\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n\n this.#performSearch((result) => {\n this.items = this.items.concat(result.items);\n\n this.updateDisplayedItems();\n\n this.isLoadingMore = false;\n });\n }\n }\n\n public save(): void {\n const selectedItems = Array.from(\n this.selectedIdMap.values(),\n (itemData, index) => ({\n index,\n itemData,\n }),\n ).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n\n this.modalInstance.save(selectedItems);\n }\n\n public updateDisplayedItems(): void {\n const selectedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty]),\n );\n\n if (this.onlyShowSelected) {\n this.displayedItems = selectedItems;\n } else {\n this.displayedItems = this.items;\n }\n\n setTimeout(() => {\n this.#announceSelectionState(\n selectedItems.length,\n this.displayedItems.length,\n );\n this.#changeDetector.markForCheck();\n });\n }\n\n #loadSearchResults(): void {\n this.#cancelCurrentSearch();\n\n this.isSearching = true;\n\n this.#performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n\n this.#changeDetector.markForCheck();\n }\n\n #createInitialSelectedItemsMap(): void {\n this.selectedIdMap = new Map(\n this.context.initialValue.map((item) => [\n (item as Record<string, unknown>)[this.context.idProperty],\n item,\n ]),\n );\n }\n\n #performSearch(\n processResults: (result: SkySelectionModalSearchResult) => void,\n ): void {\n this.#currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.#offset,\n searchText: this.searchText || '',\n continuationData: this.#continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n\n this.#continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore || false;\n this.#offset = this.items.length;\n\n this.updateDisplayedItems();\n\n this.#changeDetector.markForCheck();\n });\n }\n\n #cancelCurrentSearch(): void {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n\n #announceSelectionState(\n selectedItemCount: number,\n displayedItemCount: number,\n ): void {\n this.#resourcesSvc\n .getString(\n 'skyux_lookup_show_more_displayed_items_updated',\n selectedItemCount.toString(),\n displayedItemCount.toString(),\n )\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n}\n","<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n @if (context.userConfig?.title) {\n {{ context.userConfig.title }}\n } @else {\n {{\n 'skyux_lookup_show_more_modal_title'\n | skyLibResources: context.selectionDescriptor\n }}\n }\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <sky-wait [isWaiting]=\"isSearching\" />\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar\n class=\"sky-lookup-show-more-modal-toolbar\"\n [listDescriptor]=\"context.selectionDescriptor\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n />\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n @if (context.showAddButton) {\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_add_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n }\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n @if (context.selectMode === 'multiple') {\n <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_all_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_clear_all_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [label]=\"\n 'skyux_lookup_show_more_show_selected_option_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n }\n </div>\n @if (!isSearching && displayedItems.length === 0) {\n <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n }\n <sky-repeater\n class=\"sky-lookup-show-more-repeater\"\n expandMode=\"none\"\n [ngClass]=\"{ 'hover-rows': context.selectMode === 'single' }\"\n >\n @for (item of displayedItems; track item) {\n <sky-repeater-item\n [isSelected]=\"\n item[context.idProperty]\n | skySelectionModalItemSelected: selectedIdMap\n \"\n [selectable]=\"context.selectMode === 'multiple'\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item }\n \"\n />\n </sky-repeater-item-content>\n </sky-repeater-item>\n }\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n />\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_context'\n | skyLibResources: context.selectionDescriptor\n \"\n [disabled]=\"isSearching\"\n (click)=\"save()\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\">\n {{ item[context.descriptorProperty] }}\n</ng-template>\n","import { Observable, Subject } from 'rxjs';\n\nimport { SkySelectionModalCloseArgs } from './selection-modal-close-args';\n\n/**\n * Represents an instance of a selection modal.\n */\nexport class SkySelectionModalInstance {\n /**\n * An event that the selection modal instance emits when it closes.\n * It emits a `SkySelectionModalCloseArgs` object with a `selectedItems` property that includes\n * items selected by users on close or save and a `reason` property that indicates\n * whether the selection modal was saved or closed without saving.\n * The `reason` property accepts `\"cancel\"`, `\"close\"`, and `\"save\"`.\n */\n public get closed(): Observable<SkySelectionModalCloseArgs> {\n return this.#closedObs;\n }\n\n /**\n * @internal\n */\n public get itemAdded(): Observable<unknown> {\n return this.#itemAddedObs;\n }\n\n /**\n * @internal\n */\n public id: string;\n\n #closed = new Subject<SkySelectionModalCloseArgs>();\n #closedObs: Observable<SkySelectionModalCloseArgs>;\n #itemAdded = new Subject<unknown>();\n #itemAddedObs: Observable<unknown>;\n\n constructor(id: string) {\n this.id = id;\n\n this.#closedObs = this.#closed.asObservable();\n this.#itemAddedObs = this.#itemAdded.asObservable();\n }\n\n /**\n * @internal\n */\n public close(args: SkySelectionModalCloseArgs): void {\n this.#closed.next(args);\n this.#closed.complete();\n }\n\n /**\n * @internal\n */\n public addItem(itemToAdd: unknown): void {\n this.#itemAdded.next(itemToAdd);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyModalService } from '@skyux/modals';\n\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteSearchAsyncResult } from '../autocomplete/types/autocomplete-search-async-result';\n\nimport { SkySelectionModalComponent } from './selection-modal.component';\nimport { SkySelectionModalAddClickEventArgs } from './types/selection-modal-add-click-event-args';\nimport { SkySelectionModalCloseArgs } from './types/selection-modal-close-args';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalInstance } from './types/selection-modal-instance';\nimport { SkySelectionModalOpenArgs } from './types/selection-modal-open-args';\n\n/**\n * Displays a modal for selecting one or more values.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkySelectionModalService {\n #modalSvc: SkyModalService;\n\n constructor(modalSvc: SkyModalService) {\n this.#modalSvc = modalSvc;\n }\n\n /**\n * Opens the selection modal.\n * @param args Parameters for the selection modal.\n */\n public open(args: SkySelectionModalOpenArgs): SkySelectionModalInstance {\n const initialValue = args.value;\n\n const context = new SkySelectionModalContext(\n args.descriptorProperty,\n args.idProperty,\n args.initialSearch || '',\n initialValue || [],\n (searchArgs) => {\n return args.searchAsync({\n offset: searchArgs.offset,\n searchText: searchArgs.searchText,\n continuationData: searchArgs.continuationData,\n }) as Observable<SkyAutocompleteSearchAsyncResult>;\n },\n args.selectMode,\n args.selectionDescriptor ||\n (args.selectMode === 'single' ? 'item' : 'items'),\n args.showAddButton || false,\n {\n itemTemplate: args.itemTemplate,\n title: args.title,\n },\n );\n\n const modalInstance = this.#modalSvc.open(SkySelectionModalComponent, {\n providers: [\n {\n provide: SkySelectionModalContext,\n useValue: context,\n },\n ],\n size: 'large',\n wrapperClass: args.wrapperClass,\n });\n\n const instance = new SkySelectionModalInstance(\n modalInstance.componentInstance.id,\n );\n\n instance.itemAdded\n .pipe(takeUntil(modalInstance.closed))\n .subscribe((item) => {\n modalInstance.componentInstance.addItem(item);\n });\n\n modalInstance.closed.subscribe((modalCloseArgs) => {\n let closeArgs: SkySelectionModalCloseArgs;\n\n switch (modalCloseArgs.reason) {\n case 'save':\n closeArgs = {\n reason: 'save',\n selectedItems: modalCloseArgs.data.map(\n (item: { itemData: unknown }) => item.itemData,\n ),\n };\n break;\n case 'cancel':\n closeArgs = { reason: 'cancel' };\n break;\n default:\n closeArgs = { reason: 'close' };\n }\n\n instance.close(closeArgs);\n });\n\n const selectionModal = modalInstance.componentInstance;\n\n selectionModal.addClick\n .pipe(takeUntil(modalInstance.closed))\n .subscribe(() => {\n if (args.addClick) {\n const addArgs: SkySelectionModalAddClickEventArgs = {\n itemAdded(args) {\n selectionModal.addItem(args.item);\n },\n };\n\n args.addClick(addArgs);\n }\n });\n\n return instance;\n }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLookupAdapterService {\n public focusInput(elRef: ElementRef): void {\n const inputEl: HTMLElement =\n elRef.nativeElement.querySelector('.sky-lookup-input');\n\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchFunction } from '../autocomplete/types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from '../autocomplete/types/autocomplete-search-function-filter';\n\n/**\n * @internal\n */\n@Directive()\nexport class SkyLookupAutocompleteAdapter {\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the lookup field.\n * @default 0\n */\n @Input()\n public debounceTime: number | undefined;\n\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string | undefined) {\n this.#_descriptorProperty = value || 'name';\n }\n\n public get descriptorProperty(): string {\n return this.#_descriptorProperty;\n }\n\n /**\n * The array of object properties to search when utilizing the `data` property and the built-in search function.\n * @default [\"name\"]\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n @Input()\n public set propertiesToSearch(value: string[] | undefined) {\n this.#_propertiesToSearch = value ?? ['name'];\n\n this.#updateDefaultSearchOptions();\n }\n\n public get propertiesToSearch(): string[] {\n return this.#_propertiesToSearch;\n }\n\n /**\n * The function to dynamically manage the data source when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction | undefined) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n\n public get search(): SkyAutocompleteSearchFunction | undefined {\n return this.#_search;\n }\n\n /**\n * The template that formats each option in the dropdown list. The lookup component\n * injects values into the template as `item` variables that reference all the object\n * properties of the options.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n /**\n * The minimum number of characters that users must enter before\n * the lookup component searches the data source and displays search results\n * in the dropdown list.\n * @default 1\n */\n @Input()\n public searchTextMinimumCharacters: number | undefined;\n\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the `data` input and the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n @Input()\n public set searchFilters(\n value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n ) {\n this.#_searchFilters = value;\n\n this.#updateDefaultSearchOptions();\n }\n\n public get searchFilters():\n | SkyAutocompleteSearchFunctionFilter[]\n | undefined {\n return this.#_searchFilters;\n }\n\n /**\n * The maximum number of search results to display in the dropdown\n * list. By default, the lookup component displays all matching results.\n * This property has no effect on the results in the \"Show more\" picker.\n */\n @Input()\n public searchResultsLimit: number | undefined;\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable. The event is also fired with empty search text\n * when the \"Show more\" picker is opened without search text.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n public searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n\n #_descriptorProperty = 'name';\n\n #_propertiesToSearch = ['name'];\n\n #_search: SkyAutocompleteSearchFunction | undefined;\n\n #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n #updateDefaultSearchOptions(): void {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n}\n","import { SkyAutocompleteSearchFunction } from '../../autocomplete/types/autocomplete-search-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n public descriptorProperty: string;\n\n public initialSearch: string;\n\n public initialValue: any[];\n\n public items: any[];\n\n public search: SkyAutocompleteSearchFunction;\n\n public selectMode: SkyLookupSelectModeType;\n\n public showAddButton: boolean;\n\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n constructor(\n descriptorProperty: string,\n initialSearch: string,\n initialValue: any[],\n items: any[],\n search: SkyAutocompleteSearchFunction,\n selectMode: SkyLookupSelectModeType,\n showAddButton: boolean,\n userConfig: SkyLookupShowMoreNativePickerConfig,\n ) {\n this.descriptorProperty = descriptorProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.items = items;\n this.search = search;\n this.selectMode = selectMode;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n SkyIdService,\n SkyLiveAnnouncerService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, take } from 'rxjs';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n selector: 'sky-lookup-show-more-modal',\n templateUrl: './lookup-show-more-modal.component.html',\n styleUrls: ['./lookup-show-more-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n ],\n})\nexport class SkyLookupShowMoreModalComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick = new Subject<void>();\n\n /**\n * Used to associate this modal with its owning lookup component.\n */\n public id: string;\n\n public items: any[] = [];\n\n public itemsLoading = false;\n\n public dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public displayedItems: any[] = [];\n\n public itemsHaveMore = false;\n\n public onlyShowSelected = false;\n\n public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n public searchText = '';\n\n public selectedItems: { index: number; itemData: any }[] = [];\n\n #itemIndex = 0;\n #ngUnsubscribe = new Subject<void>();\n\n protected readonly modalInstance = inject(SkyModalInstance);\n protected readonly context = inject(SkyLookupShowMoreNativePickerContext);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #idSvc = inject(SkyIdService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n constructor() {\n this.id = this.#idSvc.generateId();\n }\n\n public ngAfterViewInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n void this.addItems();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public async addItems(): Promise<void> {\n this.itemsLoading = true;\n if (!this.items || this.items.length === 0) {\n const selectedItems: any[] = this.selectedItems.slice();\n\n this.items = this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n });\n\n this.items.forEach((item) => {\n const isInitialValue: boolean =\n this.context.initialValue === item.value;\n\n const initialIsArray: boolean = Array.isArray(\n this.context.initialValue,\n );\n const initialValueContainsItem: boolean =\n this.context.initialValue.findIndex(\n (initialItem: any) => initialItem === item.value,\n ) >= 0;\n\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === itemIndex,\n ) < 0\n ) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n // if onlyShowSelected is checked, then only iterate through the initial selection\n const items = this.onlyShowSelected\n ? this.items.filter((item) => item.selected)\n : this.items;\n\n this.#itemIndex = this.#itemIndex + 10;\n\n const searchedItems = await this.searchItems(items);\n\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n\n this.#announceSelectionState(\n this.selectedItems.length,\n this.displayedItems.length,\n );\n\n this.#changeDetector.markForCheck();\n }\n\n public async clearAll(): Promise<void> {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n void this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const items = this.items;\n\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = items.findIndex(\n (item) => item.value === itemToSelect.value,\n );\n this.selectedItems = [\n { index: itemIndex, itemData: items[itemIndex].value },\n ];\n }\n } else {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n const allItemsIndex = items.findIndex(\n (item) => item.value === itemToSelect.value,\n );\n const selectedItemsIndex = selectedItems.findIndex(\n (selectedItem) => selectedItem.index === allItemsIndex,\n );\n\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: items[allItemsIndex].value,\n });\n } else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n\n this.selectedItems = selectedItems;\n }\n\n void this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string): void {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n this.modalInstance.scrollContentToTop();\n }\n this.searchText = searchText;\n this.itemsLoading = true;\n this.#changeDetector.detectChanges();\n\n // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.\n // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.\n setTimeout(() => {\n void this.updateDataState();\n }, 100);\n }\n\n public searchItems(items: any[]): Promise<any[]> {\n const searchText = this.searchText;\n\n if (searchText) {\n const resultValues = this.context.search(\n searchText,\n items.map((item) => {\n return item.value;\n }),\n { context: 'modal' },\n );\n\n if (resultValues instanceof Array) {\n const result = items.filter(\n (item) => resultValues.indexOf(item.value) >= 0,\n );\n return Promise.resolve(result);\n } else {\n return resultValues.then((values) => {\n const result = items.filter(\n (item) => values.indexOf(item.value) >= 0,\n );\n return Promise.resolve(result);\n });\n }\n } else {\n return Promise.resolve(items);\n }\n }\n\n public async selectAll(): Promise<void> {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n this.displayedItems.forEach((item: any) => {\n if (!item.selected) {\n item.selected = true;\n\n const index = items.indexOf(item);\n\n /* istanbul ignore else */\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index,\n ) < 0\n ) {\n selectedItems.push({\n index: index,\n itemData: items[index].value,\n });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public async updateDataState(): Promise<void> {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n items?.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index,\n ) !== -1;\n });\n\n let searchedItems = await this.searchItems(items);\n\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n\n this.#announceSelectionState(\n selectedItems.length,\n this.displayedItems.length,\n );\n\n this.#changeDetector.markForCheck();\n }\n\n public async updateItemData(data: any[]): Promise<void> {\n this.context.items = data;\n this.items = [];\n this.#itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item: any, index: number) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n\n await this.addItems();\n\n this.#changeDetector.markForCheck();\n }\n\n #announceSelectionState(\n selectedItemCount: number,\n displayedItemCount: number,\n ): void {\n this.#resourcesSvc\n .getString(\n 'skyux_lookup_show_more_displayed_items_updated',\n selectedItemCount.toString(),\n displayedItemCount.toString(),\n )\n .pipe(take(1))\n .subscribe((resourcesString) => {\n this.#liveAnnouncerSvc.announce(resourcesString);\n });\n }\n}\n","<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n @if (context.userConfig?.title) {\n {{ context.userConfig.title }}\n } @else {\n {{\n 'skyux_lookup_show_more_modal_title'\n | skyLibResources: context.userConfig.selectionDescriptor\n }}\n }\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar\n class=\"sky-lookup-show-more-modal-toolbar\"\n [listDescriptor]=\"context.userConfig.selectionDescriptor\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n />\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n @if (context.showAddButton) {\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_add_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n }\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n @if (context.selectMode === 'multiple') {\n <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_all_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_clear_all_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [label]=\"\n 'skyux_lookup_show_more_show_selected_option_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n }\n </div>\n @if (displayedItems.length === 0) {\n <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n }\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n @for (item of displayedItems; track item) {\n <sky-repeater-item\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: { item: item.value }\n \"\n />\n </sky-repeater-item-content>\n </sky-repeater-item>\n }\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"itemsHaveMore\"\n [loading]=\"itemsLoading\"\n (scrollEnd)=\"addItems()\"\n />\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_context'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\">\n {{ item[context.descriptorProperty] }}\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef, SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport {\n SkyToken,\n SkyTokensMessage,\n SkyTokensMessageType,\n} from '@skyux/indicators';\nimport { SkyModalInstance, SkyModalService } from '@skyux/modals';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from '../autocomplete/types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from '../autocomplete/types/autocomplete-show-more-args';\nimport { SkySelectionModalService } from '../selection-modal/selection-modal.service';\nimport { SkySelectionModalInstance } from '../selection-modal/types/selection-modal-instance';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupAddCallbackArgs } from './types/lookup-add-click-callback-args';\nimport { SkyLookupAddClickEventArgs } from './types/lookup-add-click-event-args';\nimport { SkyLookupSelectModeType } from './types/lookup-select-mode-type';\nimport { SkyLookupShowMoreConfig } from './types/lookup-show-more-config';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n@Component({\n selector: 'sky-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.scss'],\n providers: [SkyLookupAdapterService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyLookupComponent\n extends SkyLookupAutocompleteAdapter\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n /**\n * The ARIA label for the typeahead search input. This sets the input's `aria-label` attribute to provide a text equivalent for\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use the input box `labelText` input instead.\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use the input box `labelText` input instead.\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The value for the `autocomplete` attribute on the form input.\n * @default 'off'\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public autocompleteAttribute: string | undefined;\n\n /**\n * The data source for the lookup component to search when users\n * enter text. You can specify static data such as an array of objects, or\n * you can pull data from a database.\n * @default []\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n @Input()\n public set data(value: any[] | undefined) {\n this.#_data = value;\n\n if (this.#openNativePicker && !this.#hasSearchAsync()) {\n this.#openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this.#_data || [];\n }\n\n /**\n * Whether to disable the lookup field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value ?? false;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Whether the lookup field is required.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set required(value: boolean) {\n this.#_required = value;\n this.inputBoxHostSvc?.setRequired(value);\n }\n\n public get required(): boolean {\n return this.#_required;\n }\n\n /**\n * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n @Input()\n public set enableShowMore(value: boolean | undefined) {\n this.#_enableShowMore = value ?? false;\n }\n\n public get enableShowMore(): boolean {\n return this.#_enableShowMore;\n }\n\n /**\n * Placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string | undefined;\n\n /**\n * The object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n * This property is required when using `enableShowMore` and `searchAsync` together.\n */\n @Input()\n public idProperty: string | undefined;\n\n /**\n * Whether to display a button that lets users add options to the list.\n * @default false\n */\n @Input()\n public set showAddButton(value: boolean | undefined) {\n this.#_showAddButton = value ?? false;\n }\n\n public get showAddButton(): boolean {\n return this.#_showAddButton;\n }\n\n /**\n * Configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig | undefined;\n\n /**\n * The ability for users to select one option or multiple options.\n * @default \"multiple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType | undefined) {\n const multipleToSingle: boolean =\n value === 'single' && this.selectMode === 'multiple';\n\n this.#_selectMode = value;\n this.#updateForSelectMode();\n\n if (multipleToSingle) {\n const value = this.#getValue();\n\n if (value?.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.#setValue([value[0]], { emitEvent: true });\n this.#changeDetector.detectChanges();\n });\n }\n }\n }\n\n public get selectMode(): SkyLookupSelectModeType {\n return this.#_selectMode || 'multiple';\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass: string | undefined;\n\n /**\n * Fires when users select the button to add options to the list.\n */\n @Output()\n public addClick = new EventEmitter<SkyLookupAddClickEventArgs>();\n\n /**\n * @internal\n */\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n /**\n * @internal\n */\n @Output()\n public selectionModalOpenChange = new EventEmitter<boolean>();\n\n public get tokens(): SkyToken[] | undefined {\n return this.#_tokens;\n }\n\n public set tokens(tokens: SkyToken[] | undefined) {\n const value = this.#getValue();\n\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this.#_tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.#changeDetector.markForCheck();\n });\n } else {\n this.#_tokens = tokens;\n this.#changeDetector.markForCheck();\n }\n }\n\n /**\n * @internal\n * @deprecated This is exposed for unit tests only; refactor unit tests to\n * derive the control value a different way.\n */\n public get value(): any[] {\n return this.#getValue();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public showMorePickerId: string | undefined;\n public tokensController = new Subject<SkyTokensMessage>();\n protected controlId: string | undefined;\n protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n public set autocompleteInputDirective(\n value: SkyAutocompleteInputDirective | undefined,\n ) {\n this.#_autocompleteInputDirective = value;\n this.#updateForSelectMode();\n }\n\n public get autocompleteInputDirective():\n | SkyAutocompleteInputDirective\n | undefined {\n return this.#_autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public showMoreButtonTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n public lookupWrapperRef: ElementRef | undefined;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public searchIconTemplateRef: TemplateRef<unknown> | undefined;\n\n #idle = new Subject<void>();\n #markForTokenFocusOnKeyUp = false;\n #ngUnsubscribe = new Subject<void>();\n #notifyChange: ((value: any[]) => void) | undefined;\n #notifyTouched: (() => void) | undefined;\n #openNativePicker: SkyModalInstance | undefined;\n #openSelectionModal: SkySelectionModalInstance | undefined;\n #_required = false;\n\n #_autocompleteInputDirective: SkyAutocompleteInputDirective | undefined;\n #_data: any[] | undefined;\n #_disabled = false;\n #_enableShowMore = false;\n #_selectMode: SkyLookupSelectModeType | undefined;\n #_showAddButton = false;\n #_tokens: SkyToken[] | undefined;\n #_value: any[] | undefined;\n\n readonly #adapter = inject(SkyLookupAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #elementRef = inject(ElementRef);\n readonly #idService = inject(SkyIdService);\n readonly #logSvc = inject(SkyLogService);\n readonly #modalService = inject(SkyModalService);\n readonly #resourcesService = inject(SkyLibResourcesService);\n readonly #selectionModalSvc = inject(SkySelectionModalService);\n readonly #windowRef = inject(SkyAppWindowRef);\n\n #getValue(): any[] {\n return this.#_value ? this.#_value : [];\n }\n\n #setValue(newValue: any[], options: { emitEvent: boolean }): void {\n this.#_value = newValue;\n\n if (this.selectMode === 'multiple' && !this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n\n if (options.emitEvent) {\n this.#notifyChange?.(this.#_value);\n }\n\n this.#updateForSelectMode();\n }\n\n constructor(\n @Self() @Optional() ngControl?: NgControl,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService,\n ) {\n super();\n\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.controlId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\n\n this.inputBoxHostSvc?.setRequired(this.required);\n } else {\n this.controlId = this.#idService.generateId();\n }\n\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n\n public ngOnDestroy(): void {\n this.#removeEventListeners();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.addClick.complete();\n this.openChange.complete();\n this.tokensController.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit({\n itemAdded: (args: SkyLookupAddCallbackArgs) =>\n this.#onAddButtonComplete(args),\n });\n }\n\n public onAutocompleteSelectionChange(\n change: SkyAutocompleteSelectionChange,\n ): void {\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n } else {\n this.#setValue([], { emitEvent: true });\n }\n }\n\n public onAutocompleteBlur(): void {\n this.#notifyTouched?.();\n }\n\n public onTokensChange(change: SkyToken[]): void {\n if (!change) {\n return;\n }\n\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.#focusInput();\n }\n\n this.tokens = change;\n const value = change.map((token) => {\n return token.value;\n });\n\n this.#setValue(value, { emitEvent: true });\n }\n }\n\n public onTokensFocusIndexOverRange(): void {\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#focusInput();\n });\n }\n\n public onTokensKeyUp(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n\n case 'Del':\n case 'Delete':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public onTokensRendered(): void {\n this.#sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown,\n );\n }\n\n public writeValue(value: any[]): void {\n // Since we are dealing with arrays - clone the array being sent in to ensure we aren't modifying a consumers outer array\n this.#setValue(value ? value.slice() : [], { emitEvent: false });\n }\n\n public registerOnChange(fn: (value: any[]) => void): void {\n this.#notifyChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#notifyTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.#removeEventListeners();\n\n if (!disabled) {\n this.#addEventListeners();\n }\n\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n\n public clearSearchText(): void {\n if (this.autocompleteInputDirective) {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = '';\n }\n }\n\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n public inputKeydown(event: KeyboardEvent): void {\n const value = (event.target as HTMLTextAreaElement).value;\n\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.#markForTokenFocusOnKeyUp = false;\n } else {\n this.#markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n\n public inputKeyup(event: KeyboardEvent): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.#markForTokenFocusOnKeyUp) {\n this.#sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n\n event.stopPropagation();\n }\n }\n\n public onSearchButtonClick(): void {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective?.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n\n let searchValue = '';\n\n if (!isValueInTextBox && this.autocompleteInputDirective) {\n searchValue = this.autocompleteInputDirective.inputTextValue;\n }\n\n this.openPicker(searchValue);\n this.autocompleteInputDirective?.restoreInputTextValueToPreviousState();\n }\n\n public onShowMoreClick(event: SkyAutocompleteShowMoreArgs): void {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMorePickerId = undefined;\n\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch,\n initialValue: this.#getValue(),\n });\n } else {\n const initialValue = this.#getValue();\n this.selectionModalOpenChange.emit(true);\n\n if (this.#hasSearchAsync()) {\n this.#openSelectionModal =\n this.#createSelectionModalInstance(initialSearch);\n\n this.showMorePickerId = this.#openSelectionModal.id;\n\n this.#openSelectionModal.closed.subscribe((closeArgs) => {\n this.#processPickerResult(\n closeArgs.reason === 'save'\n ? closeArgs.selectedItems\n : initialValue,\n );\n this.selectionModalOpenChange.emit(false);\n });\n } else {\n this.#openNativePicker =\n this.#createNativePickerInstance(initialSearch);\n\n this.showMorePickerId = this.#openNativePicker.componentInstance.id;\n\n this.#openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.#openNativePicker.closed.subscribe((closeArgs) => {\n let selectedItems: any[];\n\n if (closeArgs.reason === 'save') {\n selectedItems = [];\n\n this.data.forEach((item: any, dataIndex: number) => {\n if (\n closeArgs.data.some((savedItem: any) => {\n return savedItem.index === dataIndex;\n })\n ) {\n selectedItems.push(item);\n }\n });\n } else {\n selectedItems = initialValue;\n }\n\n this.#processPickerResult(selectedItems);\n this.selectionModalOpenChange.emit(false);\n });\n\n this.#changeDetector.markForCheck();\n }\n }\n }\n\n protected onAutocompleteOpenChange($event: boolean): void {\n if ($event) {\n this.openChange.emit(true);\n } else if (!this.#pickerModalOpen()) {\n this.openChange.emit(false);\n }\n }\n\n protected onFocus($event: FocusEvent): void {\n ($event.target as HTMLTextAreaElement).select();\n }\n\n #createSelectionModalInstance(\n initialSearch: string,\n ): SkySelectionModalInstance {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n if (this.idProperty === undefined) {\n this.#logSvc.error(\n \"The lookup component's 'idProperty' input is required when `enableShowMore` and 'searchAsync' are used together.\",\n );\n }\n\n return this.#selectionModalSvc.open({\n descriptorProperty: this.descriptorProperty,\n idProperty: this.idProperty!,\n searchAsync: (args) => {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'modal',\n offset: args.offset,\n searchText: args.searchText,\n continuationData: args.continuationData,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return searchAsyncArgs.result;\n },\n selectMode: this.selectMode,\n addClick: () => {\n this.addButtonClicked();\n },\n initialSearch,\n itemTemplate: modalConfig.itemTemplate,\n selectionDescriptor: modalConfig.selectionDescriptor,\n showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n wrapperClass: this.wrapperClass,\n });\n }\n\n #createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n if (!modalConfig.selectionDescriptor) {\n modalConfig.selectionDescriptor =\n this.selectMode === 'single' ? 'item' : 'items';\n }\n\n const contextProviderValue = new SkyLookupShowMoreNativePickerContext(\n this.descriptorProperty,\n initialSearch,\n initialValue,\n this.data,\n this.searchOrDefault,\n this.selectMode,\n this.showAddButton,\n modalConfig,\n );\n\n return this.#modalService.open(SkyLookupShowMoreModalComponent, {\n providers: [\n {\n provide: SkyLookupShowMoreNativePickerContext,\n useValue: contextProviderValue,\n },\n {\n provide: SkyLookupAdapterService,\n useValue: this.#adapter,\n },\n ],\n size: 'large',\n wrapperClass: this.wrapperClass,\n });\n }\n\n #processPickerResult(selectedItems: any[] | undefined): void {\n this.#openSelectionModal = undefined;\n this.#openNativePicker = undefined;\n this.showMorePickerId = undefined;\n\n /* istanbul ignore next */\n selectedItems = selectedItems || [];\n\n this.#setValue(selectedItems, { emitEvent: true });\n this.#focusInput();\n this.#changeDetector.markForCheck();\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n #addToSelected(item: any): void {\n const value = this.#getValue();\n\n let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = value;\n\n const idProperty = this.idProperty || '';\n\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (\n !this.idProperty ||\n !value.some(\n (existingItem) => existingItem[idProperty] === item[idProperty],\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.#setValue(selectedItems, { emitEvent: true });\n }\n\n #addEventListeners(): void {\n this.#idle = new Subject();\n this.#focusInputOnHostClick();\n }\n\n #removeEventListeners(): void {\n this.#idle.next();\n this.#idle.complete();\n }\n\n #focusInputOnHostClick(): void {\n let hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n const documentObj = this.#windowRef.nativeWindow.document;\n\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n\n observableFromEvent<MouseEvent>(documentObj, 'click')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n\n this.#changeDetector.markForCheck();\n });\n\n observableFromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n\n this.#changeDetector.markForCheck();\n });\n\n if (hostElement) {\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.#focusInput();\n }\n });\n }\n }\n\n #focusInput(): void {\n if (this.lookupWrapperRef) {\n this.#adapter.focusInput(this.lookupWrapperRef);\n }\n }\n\n #onAddButtonComplete(args: SkyLookupAddCallbackArgs): void {\n if (this.#openSelectionModal) {\n // Notify the selection modal of the new item. The selection\n // modal will decide whether the new item should be added\n // to the value when the user confirms or cancels the\n // selection modal.\n this.#openSelectionModal.addItem(args.item);\n } else {\n let addItemToValue: boolean | undefined;\n\n if (this.#hasSearchAsync()) {\n addItemToValue = true;\n } else {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.#openNativePicker) {\n // Notify the picker of the new item. The picker will\n // decide whether the new item should be added to the\n // value when the user confirms or cancels the picker.\n (\n this.#openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n addItemToValue = true;\n }\n }\n }\n\n if (addItemToValue) {\n const oldValue = this.#getValue();\n const newValue =\n this.selectMode === 'multiple'\n ? oldValue.concat(args.item)\n : [args.item];\n\n this.#setValue(newValue, { emitEvent: true });\n }\n }\n }\n\n #parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n #sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n #sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n #updateForSelectMode(): void {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n const value = this.#getValue();\n this.autocompleteInputDirective.value = value && value[0];\n } else {\n this.clearSearchText();\n }\n }\n }\n\n #hasSearchAsync(): boolean {\n return this.searchAsync.observers.length > 0;\n }\n\n #pickerModalOpen(): boolean {\n return !!(this.#openNativePicker || this.#openSelectionModal);\n }\n}\n","@if (!inputBoxHostSvc) {\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n <div\n #lookupWrapper\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy || inputBoxHostSvc?.labelId\"\n [attr.data-sky-lookup-show-more-picker-id]=\"showMorePickerId\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"searchOrDefault\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n @if (selectMode === 'multiple') {\n <sky-tokens\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokensRendered)=\"onTokensRendered()\"\n (tokenSelected)=\"enableShowMore ? openPicker('') : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n @if (!inputBoxHostSvc && !enableShowMore) {\n <ng-container *ngTemplateOutlet=\"searchIconTemplateRef\" />\n }\n </sky-tokens>\n } @else if (selectMode === 'single') {\n <div class=\"sky-lookup-single-control\">\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n ></textarea>\n @if (!inputBoxHostSvc && !enableShowMore) {\n <ng-container *ngTemplateOutlet=\"searchIconTemplateRef\" />\n }\n </div>\n }\n </div>\n @if (!inputBoxHostSvc && enableShowMore) {\n <ng-container *ngTemplateOutlet=\"showMoreButtonTemplateRef\" />\n }\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon iconName=\"search\" iconSize=\"l\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon iconName=\"search\" iconSize=\"l\" />\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTokensModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [SkyLookupComponent],\n imports: [\n CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule,\n ],\n exports: [SkyLookupComponent],\n})\nexport class SkyLookupModule {}\n","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport enum SkyLookupSelectMode {\n /**\n * Restricts users to a single selection.\n */\n single = 'single',\n\n /**\n * Allows users to select multiple items.\n */\n multiple = 'multiple',\n}\n","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n /**\n * The options that users can select in the custom picker.\n */\n public items!: any[];\n /**\n * Search text to filter the contents of the custom picker.\n */\n public initialSearch!: string;\n /**\n * The current selections in the lookup field.\n */\n public initialValue!: any;\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkySelectionModalModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkySelectionModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i4","i6","i7","i9.SkyAutocompleteSearchAsyncDisabledPipe","i1","i2","i3","i4.SkyAutocompleteComponent","i5.SkyAutocompleteInputDirective","i1.SkySearchAdapterService","i5","i7.SkySearchComponent","i8","i9","i10","take","i5.SkyAutocompleteComponent","i6.SkyAutocompleteInputDirective"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-lookup.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-lookup-resources.module.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-input.directive.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.js","../tmp-esm2022/lib/modules/shared/sky-lookup-string-utils.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-adapter.service.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-default-search-function.js","../tmp-esm2022/lib/modules/autocomplete/types/autocomplete-message-type.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete.component.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete.module.js","../tmp-esm2022/lib/modules/country-field/clone-country-data.js","../tmp-esm2022/lib/modules/country-field/types/country-field-context-token.js","../tmp-esm2022/lib/modules/country-field/country-field.component.js","../tmp-esm2022/lib/modules/country-field/country-field.module.js","../tmp-esm2022/lib/modules/search/search-adapter.service.js","../tmp-esm2022/lib/modules/search/search.component.js","../tmp-esm2022/lib/modules/search/search.module.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal-item-selected.pipe.js","../tmp-esm2022/lib/modules/selection-modal/types/selection-modal-context.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.component.js","../tmp-esm2022/lib/modules/selection-modal/types/selection-modal-instance.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.service.js","../tmp-esm2022/lib/modules/lookup/lookup-adapter.service.js","../tmp-esm2022/lib/modules/lookup/lookup-autocomplete-adapter.js","../tmp-esm2022/lib/modules/lookup/types/lookup-show-more-native-picker-context.js","../tmp-esm2022/lib/modules/lookup/lookup-show-more-modal.component.js","../tmp-esm2022/lib/modules/lookup/lookup.component.js","../tmp-esm2022/lib/modules/lookup/lookup.module.js","../tmp-esm2022/lib/modules/lookup/types/lookup-select-mode.js","../tmp-esm2022/lib/modules/lookup/types/lookup-show-more-custom-picker-context.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.module.js","../tmp-esm2022/skyux-lookup.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_multiple_results: { message: '{0} results available.' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_one_result: { message: 'One result available.' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_dropdown_hint_text: {\n message: 'Type to search for a country',\n },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Add {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: 'Showing {1} items, with {0} selected.',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Select all {0}',\n },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Clear all selected {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_aria_label: {\n message: 'Show only selected {0}',\n },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title: { message: 'Select {0}' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_show_more_select_context: { message: 'Select {0}' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_aria_label_descriptor: { message: 'Search {0}' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n 'FR-CA': {\n skyux_autocomplete_add: { message: 'Nouveau' },\n skyux_autocomplete_multiple_results: {\n message: '{0} résultats disponibles.',\n },\n skyux_autocomplete_no_results: { message: 'Aucune correspondance trouvée' },\n skyux_autocomplete_one_result: { message: 'Un résultat disponible.' },\n skyux_autocomplete_show_all: { message: 'Afficher tout' },\n skyux_autocomplete_show_all_count: { message: 'Afficher tout {0}' },\n skyux_autocomplete_show_matches_count: {\n message: 'Afficher les correspondances ({0})',\n },\n skyux_country_field_search_placeholder: { message: 'Rechercher un pays' },\n skyux_lookup_search_button_show_more: {\n message: 'Afficher tous les résultats de la recherche',\n },\n skyux_lookup_show_more_add: { message: 'Nouveau' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Ajouter {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: '{1} éléments affichés, avec {0} sélectionné(s).',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Sélectionner tout {0}',\n },\n skyux_lookup_show_more_select_all_button_title: {\n message: 'Sélectionner tout',\n },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Supprimer tous les éléments sélectionnés {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Effacer tout' },\n skyux_lookup_show_more_show_selected_option_aria_label: {\n message: 'Montrer seulement ce qui est sélectionné {0}',\n },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Montrer seulement les éléments sélectionnés',\n },\n skyux_lookup_show_more_cancel: { message: 'Annuler' },\n skyux_lookup_show_more_modal_title: { message: 'Sélectionner {0}' },\n skyux_lookup_show_more_no_results: {\n message: 'Aucune correspondance trouvée',\n },\n skyux_lookup_show_more_select: { message: 'Sélectionner' },\n skyux_lookup_show_more_select_context: { message: 'Sélectionner {0}' },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n skyux_search_aria_label_descriptor: { message: 'Rechercher {0}' },\n skyux_search_dismiss: { message: 'Omettre la recherche' },\n skyux_search_label: { message: 'Rechercher des articles' },\n skyux_search_open: { message: 'Ouvrir la recherche' },\n skyux_search_placeholder: { message: 'Trouver dans cette liste' },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyLookupResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1sb29rdXAtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1Asc0JBQXNCLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1FBQzFDLG1DQUFtQyxFQUFFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFO1FBQzFFLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1FBQzlELDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFO1FBQ25FLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtRQUNwRCxpQ0FBaUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7UUFDOUQscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUU7UUFDeEUsc0NBQXNDLEVBQUU7WUFDdEMsT0FBTyxFQUFFLDhCQUE4QjtTQUN4QztRQUNELHNDQUFzQyxFQUFFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFO1FBQzNFLG9DQUFvQyxFQUFFO1lBQ3BDLE9BQU8sRUFBRSx5QkFBeUI7U0FDbkM7UUFDRCwwQkFBMEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDOUMsNENBQTRDLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1FB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O1FBQzFELHFDQUFxQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1FBQ3RFLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFO1FBQ3JFLGtDQUFrQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFO1FBQ2pFLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFO1FBQ3pELGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFO1FBQzFELGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFO1FBQ3JELHdCQUF3QixFQUFFLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFO0tBQ2xFO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQzs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBRnpCLGFBQWE7K0dBRVosd0JBQXdCLFlBRnpCLGFBQWE7OzJGQUVaLHdCQUF3QjtrQkFIcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWxvb2t1cCcgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9hZGQ6IHsgbWVzc2FnZTogJ05ldycgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfbXVsdGlwbGVfcmVzdWx0czogeyBtZXNzYWdlOiAnezB9IHJlc3VsdHMgYXZhaWxhYmxlLicgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfbm9fcmVzdWx0czogeyBtZXNzYWdlOiAnTm8gbWF0Y2hlcyBmb3VuZCcgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfb25lX3Jlc3VsdDogeyBtZXNzYWdlOiAnT25lIHJlc3VsdCBhdmFpbGFibGUuJyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9zaG93X2FsbDogeyBtZXNzYWdlOiAnU2hvdyBhbGwnIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfYWxsX2NvdW50OiB7IG1lc3NhZ2U6ICdTaG93IGFsbCB7MH0nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfbWF0Y2hlc19jb3VudDogeyBtZXNzYWdlOiAnU2hvdyBtYXRjaGVzICh7MH0pJyB9LFxuICAgIHNreXV4X2NvdW50cnlfZmllbGRfZHJvcGRvd25faGludF90ZXh0OiB7XG4gICAgICBtZXNzYWdlOiAnVHlwZSB0byBzZWFyY2ggZm9yIGEgY291bnRyeScsXG4gICAgfSxcbiAgICBza3l1eF9jb3VudHJ5X2ZpZWxkX3NlYXJjaF9wbGFjZWhvbGRlcjogeyBtZXNzYWdlOiAnU2VhcmNoIGZvciBhIGNvdW50cnknIH0sXG4gICAgc2t5dXhfbG9va3VwX3NlYXJjaF9idXR0b25fc2hvd19tb3JlOiB7XG4gICAgICBtZXNzYWdlOiAnU2hvdyBhbGwgc2VhcmNoIHJlc3VsdHMnLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9hZGQ6IHsgbWVzc2FnZTogJ05ldycgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2FkZF9idXR0b25fYXJpYV9sYWJlbDogeyBtZXNzYWdlOiAnQWRkIHswfScgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2Rpc3BsYXllZF9pdGVtc191cGRhdGVkOiB7XG4gICAgICBtZXNzYWdlOiAnU2hvd2luZyB7MX0gaXRlbXMsIHdpdGggezB9IHNlbGVjdGVkLicsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdTZWxlY3QgYWxsIHswfScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlOiB7IG1lc3NhZ2U6ICdTZWxlY3QgYWxsJyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfY2xlYXJfYWxsX2J1dHRvbl9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnQ2xlYXIgYWxsIHNlbGVjdGVkIHswfScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGU6IHsgbWVzc2FnZTogJ0NsZWFyIGFsbCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdTaG93IG9ubHkgc2VsZWN0ZWQgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fdGl0bGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdTaG93IG9ubHkgc2VsZWN0ZWQgaXRlbXMnLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jYW5jZWw6IHsgbWVzc2FnZTogJ0NhbmNlbCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlOiB7IG1lc3NhZ2U6ICdTZWxlY3QgezB9JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfbm9fcmVzdWx0czogeyBtZXNzYWdlOiAnTm8gbWF0Y2hlcyBmb3VuZCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdDogeyBtZXNzYWdlOiAnU2VsZWN0JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2NvbnRleHQ6IHsgbWVzc2FnZTogJ1NlbGVjdCB7MH0nIH0sXG4gICAgc2t5dXhfbG9va3VwX3Rva2Vuc19zdW1tYXJ5OiB7IG1lc3NhZ2U6ICd7MH0gaXRlbXMgc2VsZWN0ZWQnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2FyaWFfbGFiZWxfZGVzY3JpcHRvcjogeyBtZXNzYWdlOiAnU2VhcmNoIHswfScgfSxcbiAgICBza3l1eF9zZWFyY2hfZGlzbWlzczogeyBtZXNzYWdlOiAnRGlzbWlzcyBzZWFyY2gnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2xhYmVsOiB7IG1lc3NhZ2U6ICdTZWFyY2ggaXRlbXMnIH0sXG4gICAgc2t5dXhfc2VhcmNoX29wZW46IHsgbWVzc2FnZTogJ09wZW4gc2VhcmNoJyB9LFxuICAgIHNreXV4X3NlYXJjaF9wbGFjZWhvbGRlcjogeyBtZXNzYWdlOiAnRmluZCBpbiB0aGlzIGxpc3QnIH0sXG4gIH0sXG4gICdGUi1DQSc6IHtcbiAgICBza3l1eF9hdXRvY29tcGxldGVfYWRkOiB7IG1lc3NhZ2U6ICdOb3V2ZWF1JyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9tdWx0aXBsZV9yZXN1bHRzOiB7XG4gICAgICBtZXNzYWdlOiAnezB9wqByw6lzdWx0YXRzIGRpc3BvbmlibGVzLicsXG4gICAgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfbm9fcmVzdWx0czogeyBtZXNzYWdlOiAnQXVjdW5lIGNvcnJlc3BvbmRhbmNlIHRyb3V2w6llJyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9vbmVfcmVzdWx0OiB7IG1lc3NhZ2U6ICdVbiByw6lzdWx0YXQgZGlzcG9uaWJsZS4nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfYWxsOiB7IG1lc3NhZ2U6ICdBZmZpY2hlciB0b3V0JyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9zaG93X2FsbF9jb3VudDogeyBtZXNzYWdlOiAnQWZmaWNoZXIgdG91dCB7MH0nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfbWF0Y2hlc19jb3VudDoge1xuICAgICAgbWVzc2FnZTogJ0FmZmljaGVyIGxlcyBjb3JyZXNwb25kYW5jZXMgKHswfSknLFxuICAgIH0sXG4gICAgc2t5dXhfY291bnRyeV9maWVsZF9zZWFyY2hfcGxhY2Vob2xkZXI6IHsgbWVzc2FnZTogJ1JlY2hlcmNoZXIgdW4gcGF5cycgfSxcbiAgICBza3l1eF9sb29rdXBfc2VhcmNoX2J1dHRvbl9zaG93X21vcmU6IHtcbiAgICAgIG1lc3NhZ2U6ICdBZmZpY2hlciB0b3VzIGxlcyByw6lzdWx0YXRzIGRlIGxhIHJlY2hlcmNoZScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2FkZDogeyBtZXNzYWdlOiAnTm91dmVhdScgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2FkZF9idXR0b25fYXJpYV9sYWJlbDogeyBtZXNzYWdlOiAnQWpvdXRlciB7MH0nIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9kaXNwbGF5ZWRfaXRlbXNfdXBkYXRlZDoge1xuICAgICAgbWVzc2FnZTogJ3sxfcKgw6lsw6ltZW50cyBhZmZpY2jDqXMsIGF2ZWMgezB9IHPDqWxlY3Rpb25uw6kocykuJyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2FsbF9idXR0b25fYXJpYV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXIgdG91dCB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3RfYWxsX2J1dHRvbl90aXRsZToge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXIgdG91dCcsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fYXJpYV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1N1cHByaW1lciB0b3VzIGxlcyDDqWzDqW1lbnRzIHPDqWxlY3Rpb25uw6lzIHswfScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGU6IHsgbWVzc2FnZTogJ0VmZmFjZXIgdG91dCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdNb250cmVyIHNldWxlbWVudCBjZSBxdWkgZXN0IHPDqWxlY3Rpb25uw6kgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fdGl0bGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdNb250cmVyIHNldWxlbWVudCBsZXMgw6lsw6ltZW50cyBzw6lsZWN0aW9ubsOpcycsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2NhbmNlbDogeyBtZXNzYWdlOiAnQW5udWxlcicgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlOiB7IG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmVyIHswfScgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX25vX3Jlc3VsdHM6IHtcbiAgICAgIG1lc3NhZ2U6ICdBdWN1bmUgY29ycmVzcG9uZGFuY2UgdHJvdXbDqWUnLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3Q6IHsgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXInIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3RfY29udGV4dDogeyBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lciB7MH0nIH0sXG4gICAgc2t5dXhfbG9va3VwX3Rva2Vuc19zdW1tYXJ5OiB7IG1lc3NhZ2U6ICd7MH0gYXJ0aWNsZXMgc8OpbGVjdGlvbm7DqXMnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2FyaWFfbGFiZWxfZGVzY3JpcHRvcjogeyBtZXNzYWdlOiAnUmVjaGVyY2hlciB7MH0nIH0sXG4gICAgc2t5dXhfc2VhcmNoX2Rpc21pc3M6IHsgbWVzc2FnZTogJ09tZXR0cmUgbGEgcmVjaGVyY2hlJyB9LFxuICAgIHNreXV4X3NlYXJjaF9sYWJlbDogeyBtZXNzYWdlOiAnUmVjaGVyY2hlciBkZXMgYXJ0aWNsZXMnIH0sXG4gICAgc2t5dXhfc2VhcmNoX29wZW46IHsgbWVzc2FnZTogJ091dnJpciBsYSByZWNoZXJjaGUnIH0sXG4gICAgc2t5dXhfc2VhcmNoX3BsYWNlaG9sZGVyOiB7IG1lc3NhZ2U6ICdUcm91dmVyIGRhbnMgY2V0dGUgbGlzdGUnIH0sXG4gIH0sXG59O1xuXG5Ta3lMaWJSZXNvdXJjZXNTZXJ2aWNlLmFkZFJlc291cmNlcyhSRVNPVVJDRVMpO1xuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUge31cbiJdfQ==","import { Directive, ElementRef, Input, Renderer2, forwardRef, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\nexport class SkyAutocompleteInputDirective {\n /**\n * The value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n set autocompleteAttribute(value) {\n if (!value) {\n this.#_autocompleteAttribute = 'off';\n }\n else {\n this.#_autocompleteAttribute = value;\n }\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'autocomplete', this.#_autocompleteAttribute);\n }\n get autocompleteAttribute() {\n return this.#_autocompleteAttribute || 'off';\n }\n /**\n * Whether to disable the autocomplete field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value ?? false;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n get blur() {\n return this.#blurObs;\n }\n get displayWith() {\n return this.#_displayWith;\n }\n set displayWith(value) {\n this.#_displayWith = value;\n this.inputTextValue = this.#getValueByKey();\n }\n get focus() {\n return this.#focusObs;\n }\n get inputTextValue() {\n return this.#elementRef.nativeElement.value;\n }\n set inputTextValue(value) {\n this.#elementRef.nativeElement.value = value || '';\n }\n get textChanges() {\n return this.#textChangesObs;\n }\n get value() {\n return this.#_value;\n }\n set value(value) {\n const isNewValue = value !== this.#_value;\n /* istanbul ignore else */\n if (isNewValue) {\n this.#_value = value;\n this.inputTextValue = this.#getValueByKey();\n this.onChange(this.#_value);\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n }\n if (this.#isFirstChange && this.#_value) {\n this.#isFirstChange = false;\n }\n }\n }\n #blur;\n #blurObs;\n #control;\n #elementRef;\n #focus;\n #focusObs;\n #isFirstChange;\n #ngUnsubscribe;\n #renderer;\n #textChanges;\n #textChangesObs;\n #_autocompleteAttribute;\n #_disabled;\n #_displayWith;\n #_value;\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#isFirstChange = true;\n this.#ngUnsubscribe = new Subject();\n this.#renderer = inject(Renderer2);\n this.#_disabled = false;\n this.#_displayWith = '';\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChange = () => { };\n this.#blur = new Subject();\n this.#focus = new Subject();\n this.#textChanges = new Subject();\n this.#blurObs = this.#blur.asObservable();\n this.#focusObs = this.#focus.asObservable();\n this.#textChangesObs = this.#textChanges.asObservable();\n }\n ngOnInit() {\n const element = this.#elementRef.nativeElement;\n this.#setAttributes(this.#elementRef);\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#textChanges.next({\n value: this.#elementRef.nativeElement.value,\n });\n }\n });\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#blur.next();\n }\n });\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#focus.next();\n }\n });\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (!this.disabled) {\n this.#isFirstChange = false;\n }\n });\n }\n ngOnDestroy() {\n this.#blur.complete();\n this.#textChanges.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n writeValue(value) {\n this.value = value;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n restoreInputTextValueToPreviousState() {\n const modelValue = this.#getValueByKey();\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n this.onTouched();\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n return null;\n }\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n setActiveDescendant(descendantId) {\n if (descendantId) {\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'aria-activedescendant', descendantId);\n }\n else {\n this.#renderer.removeAttribute(this.#elementRef.nativeElement, 'aria-activedescendant');\n }\n }\n /**\n * Used to connect the input to the overlay.\n */\n setAriaControls(overlayId) {\n if (overlayId) {\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'aria-controls', overlayId);\n }\n else {\n this.#renderer.removeAttribute(this.#elementRef.nativeElement, 'aria-controls');\n }\n }\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange(value) { }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched() { }\n #setAttributes(elementRef) {\n const element = elementRef.nativeElement;\n this.#renderer.setAttribute(element, 'autocomplete', this.autocompleteAttribute);\n this.#renderer.setAttribute(element, 'autocapitalize', 'none');\n this.#renderer.setAttribute(element, 'autocorrect', 'off');\n this.#renderer.setAttribute(element, 'spellcheck', 'false');\n this.#renderer.addClass(element, 'sky-form-control');\n }\n #getValueByKey() {\n return this.value ? this.value[this.displayWith] : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyAutocompleteInputDirective, isStandalone: false, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: { autocompleteAttribute: \"autocompleteAttribute\", disabled: \"disabled\" }, providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { autocompleteAttribute: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJM0MsTUFBTSwrQkFBK0IsR0FBRztJQUN0QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7SUFDNUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO0lBQzVELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQU9GLE1BQU0sT0FBTyw2QkFBNkI7SUFHeEM7Ozs7T0FJRztJQUNILElBQ1cscUJBQXFCLENBQUMsS0FBeUI7UUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx1QkFBdUIs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Q0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7OEdBL1JVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG1MQUg3QixDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDOzsyRkFHN0QsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFNBQVMsRUFBRSxDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDO29CQUN4RSxVQUFVLEVBQUUsS0FBSztpQkFDbEI7d0RBVVkscUJBQXFCO3NCQUQvQixLQUFLO2dCQXlCSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtaW5wdXQtdGV4dC1jaGFuZ2UnO1xuXG5jb25zdCBTS1lfQVVUT0NPTVBMRVRFX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9BVVRPQ09NUExFVEVfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbc2t5QXV0b2NvbXBsZXRlXSwgdGV4dGFyZWFbc2t5QXV0b2NvbXBsZXRlXScsXG4gIHByb3ZpZGVyczogW1NLWV9BVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1IsIFNLWV9BVVRPQ09NUExFVEVfVkFMSURBVE9SXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgXCJvZmZcIlxuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggb25seSBzdXBwb3J0cyBicm93c2VyIGF1dG9maWxsIG9uIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpcmVjdCBpbnB1dCBtYXRjaGVzIHRoZSByZXR1cm4gdmFsdWUuIFRoaXMgaW5wdXQgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQgZHVlIHRvIHRoZSBkcm9wZG93biBzZWxlY3Rpb24gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGF1dG9jb21wbGV0ZUF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy4jX2F1dG9jb21wbGV0ZUF0dHJpYnV0ZSA9ICdvZmYnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2F1dG9jb21wbGV0ZScsXG4gICAgICB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF0dHJpYnV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlIHx8ICdvZmYnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdkaXNhYmxlZCcsXG4gICAgICB2YWx1ZSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBibHVyKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNibHVyT2JzO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5V2l0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfZGlzcGxheVdpdGg7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc3BsYXlXaXRoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNfZGlzcGxheVdpdGggPSB2YWx1ZTtcbiAgICB0aGlzLmlucHV0VGV4dFZhbHVlID0gdGhpcy4jZ2V0VmFsdWVCeUtleSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb2N1cygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNPYnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0VGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW5wdXRUZXh0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPFNreUF1dG9jb21wbGV0ZUlucHV0VGV4dENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiN0ZXh0Q2hhbmdlc09icztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNfdmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaW5wdXRUZXh0VmFsdWUgPSB0aGlzLiNnZXRWYWx1ZUJ5S2V5KCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG5cbiAgICAgIC8vIERvIG5vdCBtYXJrIHRoZSBmaWVsZCBhcyBcImRpcnR5XCJcbiAgICAgIC8vIGlmIHRoZSBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUuXG4gICAgICBpZiAodGhpcy4jaXNGaXJzdENoYW5nZSAmJiB0aGlzLiNjb250cm9sKSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI2lzRmlyc3RDaGFuZ2UgJiYgdGhpcy4jX3ZhbHVlKSB7XG4gICAgICAgIHRoaXMuI2lzRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjYmx1cjogU3ViamVjdDx2b2lkPjtcblxuICAjYmx1ck9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICNmb2N1czogU3ViamVjdDx2b2lkPjtcblxuICAjZm9jdXNPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2lzRmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAjdGV4dENoYW5nZXM6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlPjtcblxuICAjdGV4dENoYW5nZXNPYnM6IE9ic2VydmFibGU8U2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlPjtcblxuICAjX2F1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX2Rpc3BsYXlXaXRoID0gJyc7XG5cbiAgI192YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2JsdXIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2ZvY3VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLiN0ZXh0Q2hhbmdlcyA9IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZUlucHV0VGV4dENoYW5nZT4oKTtcblxuICAgIHRoaXMuI2JsdXJPYnMgPSB0aGlzLiNibHVyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI2ZvY3VzT2JzID0gdGhpcy4jZm9jdXMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jdGV4dENoYW5nZXNPYnMgPSB0aGlzLiN0ZXh0Q2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jc2V0QXR0cmlidXRlcyh0aGlzLiNlbGVtZW50UmVmKTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZWxlbWVudCwgJ2lucHV0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLiN0ZXh0Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAnYmx1cicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy4jYmx1ci5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAnZm9jdXMnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2ZvY3VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGVsZW1lbnQsICdjaGFuZ2UnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2lzRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYmx1ci5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RleHRDaGFuZ2VzLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy4jZ2V0VmFsdWVCeUtleSgpO1xuXG4gICAgLy8gSWYgdGhlIHNlYXJjaCBmaWVsZCBjb250YWlucyB0ZXh0LCBtYWtlIHN1cmUgdGhhdCB0aGUgdmFsdWVcbiAgICAvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBkZXNjcmlwdG9yIGtleS5cbiAgICBpZiAodGhpcy5pbnB1dFRleHRWYWx1ZSAhPT0gbW9kZWxWYWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dFRleHRWYWx1ZSA9IG1vZGVsVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuI2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wgPSBjb250cm9sO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFNlZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy8ja2JkX2ZvY3VzX2FjdGl2ZWRlc2NlbmRhbnRcbiAgcHVibGljIHNldEFjdGl2ZURlc2NlbmRhbnQoZGVzY2VuZGFudElkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGRlc2NlbmRhbnRJZCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLFxuICAgICAgICBkZXNjZW5kYW50SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGNvbm5lY3QgdGhlIGlucHV0IHRvIHRoZSBvdmVybGF5LlxuICAgKi9cbiAgcHVibGljIHNldEFyaWFDb250cm9scyhvdmVybGF5SWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3ZlcmxheUlkKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnLFxuICAgICAgICBvdmVybGF5SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0cyB0aGVzZSBtZXRob2RzLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvbkNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7fVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblRvdWNoZWQoKTogdm9pZCB7fVxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICNzZXRBdHRyaWJ1dGVzKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgZWxlbWVudCxcbiAgICAgICdhdXRvY29tcGxldGUnLFxuICAgICAgdGhpcy5hdXRvY29tcGxldGVBdHRyaWJ1dGUsXG4gICAgKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2F1dG9jYXBpdGFsaXplJywgJ25vbmUnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2F1dG9jb3JyZWN0JywgJ29mZicpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnc3BlbGxjaGVjaycsICdmYWxzZScpO1xuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gIH1cblxuICAjZ2V0VmFsdWVCeUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZVt0aGlzLmRpc3BsYXlXaXRoXSA6ICcnO1xuICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyAutocompleteSearchAsyncDisabledPipe {\n transform(searchAsync, searchAsyncDisabled) {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, isStandalone: false, name: \"skyAutocompleteSearchAsyncDisabled\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyAutocompleteSearchAsyncDisabled',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1kaXNhYmxlZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtZGlzYWJsZWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBSWxFOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNDQUFzQztJQUMxQyxTQUFTLENBQ2QsV0FBeUQsRUFDekQsbUJBQXdDO1FBRXhDLE9BQU8sbUJBQW1CLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBTlUsc0NBQXNDOzRHQUF0QyxzQ0FBc0M7OzJGQUF0QyxzQ0FBc0M7a0JBSmxELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9DQUFvQztvQkFDMUMsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0Rpc2FibGVkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIHNlYXJjaEFzeW5jOiBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzPixcbiAgICBzZWFyY2hBc3luY0Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VhcmNoQXN5bmNEaXNhYmxlZCB8fCBzZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0=","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value) {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxvb2t1cC1zdHJpbmctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWxvb2t1cC1zdHJpbmctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGRpYWNyaXRpY2FsIGNoYXJhY3RlcnMgZnJvbSBzdHJpbmdzIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggdGhlaXIgbm9ybWFsaXplZCBlcXVpdmFsZW50LlxuICogRm9yIGV4YW1wbGU6IMOoIGJlY29tZXMgZSwgw4UgYmVjb21lcyBBLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRGlhY3JpdGljcyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xufVxuIl19","import { Injectable, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * @internal\n */\nexport class SkyAutocompleteAdapterService {\n #coreAdapterService;\n #renderer;\n constructor(coreAdapterService, rendererFactory) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n /**\n * Adds the className for the provided element.\n */\n addCSSClass(element, className) {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.addClass(element, className);\n }\n }\n getOverlayFocusableElements(overlay) {\n return this.#coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement, { ignoreTabIndex: true });\n }\n /**\n * Removes the className for the provided element.\n */\n removeCSSClass(element, className) {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.removeClass(element, className);\n }\n }\n setDropdownWidth(elementRef, dropdownRef, isInputBox) {\n // `setTimeout` ensures that the input box size is correct when grabbing the width. When the input is initially focused a parent's `overflow-y: auto` value can cause the width to be incorrect during initial rendering.\n setTimeout(() => {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.#renderer.setStyle(dropdownRef.nativeElement, 'width', `${width}px`);\n }\n });\n }\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n setTabIndex(element, tabIndex) {\n element.tabIndex = tabIndex;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteAdapterService, deps: [{ token: i1.SkyCoreAdapterService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SkyCoreAdapterService }, { type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEdBR1gsTUFBTSxlQUFlLENBQUM7OztBQUd2Qjs7R0FFRztBQUVILE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsbUJBQW1CLENBQXdCO0lBRTNDLFNBQVMsQ0FBWTtJQUVyQixZQUNFLGtCQUF5QyxFQUN6QyxlQUFpQztRQUVqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBb0IsRUFBRSxTQUFpQjtRQUN4RCxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFTSwyQkFBMkIsQ0FDaEMsT0FBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CO1FBQ2xELHlEQUF5RDtRQUN6RCwwQkFBMEI7UUFDMUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUM1QyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxPQUFvQixFQUFFLFNBQWlCO1FBQzNELGtCQUFrQjtRQUNsQiwwQkFBMEI7UUFDMUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixVQUFzQixFQUN0QixXQUF1QixFQUN2QixVQUFtQjtRQUVuQix5TkFBeU47UUFDek4sVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sYUFBYSxHQUFHLFVBQVU7Z0JBQzlCLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDN0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsV0FBVyxDQUFDLGFBQWEsRUFDekIsT0FBTyxFQUNQLEdBQUcsS0FBSyxJQUFJLENBQ2IsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUFvQixFQUFFLFFBQWdCO1FBQ3ZELE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7OEdBeEVVLDZCQUE2QjtrSEFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSwgU2t5T3ZlcmxheUluc3RhbmNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2Uge1xuICAjY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICApIHtcbiAgICB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UgPSBjb3JlQWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBjbGFzc05hbWUgZm9yIHRoZSBwcm92aWRlZCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZENTU0NsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cyhcbiAgICBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UsXG4gICk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAvKiBTYW5pdHkgY2hlY2sgLSBjYWxsaW5nIGZ1bmN0aW9uIGFsc28gaGFzIG51bGwgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBvdmVybGF5Py5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcbiAgICAgIHsgaWdub3JlVGFiSW5kZXg6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNsYXNzTmFtZSBmb3IgdGhlIHByb3ZpZGVkIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlQ1NTQ2xhc3MoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RHJvcGRvd25XaWR0aChcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGRyb3Bkb3duUmVmOiBFbGVtZW50UmVmLFxuICAgIGlzSW5wdXRCb3g6IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIC8vIGBzZXRUaW1lb3V0YCBlbnN1cmVzIHRoYXQgdGhlIGlucHV0IGJveCBzaXplIGlzIGNvcnJlY3Qgd2hlbiBncmFiYmluZyB0aGUgd2lkdGguIFdoZW4gdGhlIGlucHV0IGlzIGluaXRpYWxseSBmb2N1c2VkIGEgcGFyZW50J3MgYG92ZXJmbG93LXk6IGF1dG9gIHZhbHVlIGNhbiBjYXVzZSB0aGUgd2lkdGggdG8gYmUgaW5jb3JyZWN0IGR1cmluZyBpbml0aWFsIHJlbmRlcmluZy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBpc0lucHV0Qm94XG4gICAgICAgID8gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5za3ktaW5wdXQtYm94JylcbiAgICAgICAgOiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICBgJHt3aWR0aH1weGAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYHRhYkluZGV4YCBvZiB0aGUgYGVsZW1lbnRgIHRvIHRoZSBwcm92aWRlZCBgdGFiSW5kZXhgLlxuICAgKi9cbiAgcHVibGljIHNldFRhYkluZGV4KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IHRhYkluZGV4O1xuICB9XG59XG4iXX0=","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\nexport function skyAutocompleteDefaultSearchFunction(options) {\n const filterData = function (searchText, data, args) {\n return data.filter((item) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find((filter) => {\n return !filter.call({}, searchText, item, args);\n });\n return failedFilter === undefined;\n });\n };\n const search = function (searchText, data, args) {\n const results = [];\n /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n const filteredData = filterData(searchText, data, args);\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n if (isMatch) {\n results.push(result);\n }\n }\n return results;\n };\n return search;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWRlZmF1bHQtc2VhcmNoLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVF4RSxNQUFNLFVBQVUsb0NBQW9DLENBQ2xELE9BQW9EO0lBRXBELE1BQU0sVUFBVSxHQUFHLFVBQ2pCLFVBQWtCLEVBQ2xCLElBQVcsRUFDWCxJQUFnQztRQUVoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDN0MsQ0FBQyxNQUEyQyxFQUFFLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxZQUFZLEtBQUssU0FBUyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsVUFDYixVQUFrQixFQUNsQixJQUFXLEVBQ1gsSUFBZ0M7UUFFaEMsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRTFCLDZFQUE2RTtRQUM3RSx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hELEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplRGlhY3JpdGljcyB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXN0cmluZy11dGlscyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbi1vcHRpb25zJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFyZ3MgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXJncyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlciB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1maWx0ZXInO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25SZXNwb25zZSB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1yZXNwb25zZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oXG4gIG9wdGlvbnM6IFNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbk9wdGlvbnMsXG4pOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB7XG4gIGNvbnN0IGZpbHRlckRhdGEgPSBmdW5jdGlvbiAoXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nLFxuICAgIGRhdGE6IGFueVtdLFxuICAgIGFyZ3M/OiBTa3lBdXRvY29tcGxldGVTZWFyY2hBcmdzLFxuICApOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghb3B0aW9ucy5zZWFyY2hGaWx0ZXJzIHx8ICFvcHRpb25zLnNlYXJjaEZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIHRoZSBmaXJzdCBmYWlsaW5nIGZpbHRlciAod2UgY2FuIHNraXAgdGhlIG90aGVycyBpZiBvbmUgZmFpbHMpLlxuICAgICAgY29uc3QgZmFpbGVkRmlsdGVyID0gb3B0aW9ucy5zZWFyY2hGaWx0ZXJzLmZpbmQoXG4gICAgICAgIChmaWx0ZXI6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuICFmaWx0ZXIuY2FsbCh7fSwgc2VhcmNoVGV4dCwgaXRlbSwgYXJncyk7XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZmFpbGVkRmlsdGVyID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2VhcmNoID0gZnVuY3Rpb24gKFxuICAgIHNlYXJjaFRleHQ6IHN0cmluZyxcbiAgICBkYXRhOiBhbnlbXSxcbiAgICBhcmdzPzogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXJncyxcbiAgKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25SZXNwb25zZSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGF1dG9jb21wbGV0ZSB3aWxsIG5vdCBjYWxsIHNlYXJjaCB3aXRoIGVtcHR5IHNlYXJjaCB0ZXh0ICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFzZWFyY2hUZXh0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hUZXh0Tm9ybWFsaXplZCA9IG5vcm1hbGl6ZURpYWNyaXRpY3Moc2VhcmNoVGV4dCkudG9VcHBlckNhc2UoKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IGZpbHRlckRhdGEoc2VhcmNoVGV4dCwgZGF0YSwgYXJncyk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGZpbHRlcmVkRGF0YS5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlcmVkRGF0YVtpXTtcbiAgICAgIGNvbnN0IGlzTWF0Y2ggPSBvcHRpb25zLnByb3BlcnRpZXNUb1NlYXJjaC5maW5kKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IChyZXN1bHRbcHJvcGVydHldIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZURpYWNyaXRpY3ModmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaFRleHROb3JtYWxpemVkKSA+IC0xO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIHJldHVybiBzZWFyY2g7XG59XG4iXX0=","/**\n * @internal\n */\nexport var SkyAutocompleteMessageType;\n(function (SkyAutocompleteMessageType) {\n /**\n * Closes the dropdown.\n */\n SkyAutocompleteMessageType[SkyAutocompleteMessageType[\"CloseDropdown\"] = 0] = \"CloseDropdown\";\n /**\n * Repositions the dropdown.\n */\n SkyAutocompleteMessageType[SkyAutocompleteMessageType[\"RepositionDropdown\"] = 1] = \"RepositionDropdown\";\n})(SkyAutocompleteMessageType || (SkyAutocompleteMessageType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksMEJBVVg7QUFWRCxXQUFZLDBCQUEwQjtJQUNwQzs7T0FFRztJQUNILDZGQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsdUdBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVZXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFVckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZW51bSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgQ2xvc2VEcm9wZG93biA9IDAsXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRpb25zIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIFJlcG9zaXRpb25Ecm9wZG93biA9IDEsXG59XG4iXX0=","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EnvironmentInjector, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, booleanAttribute, inject, input, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyLiveAnnouncerService, } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { BehaviorSubject, Subject, from, fromEvent as observableFromEvent, of, } from 'rxjs';\nimport { debounceTime, delay, map, startWith, switchMap, take, takeUntil, } from 'rxjs/operators';\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"./autocomplete-adapter.service\";\nimport * as i3 from \"@skyux/forms\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/indicators\";\nimport * as i6 from \"@skyux/icon\";\nimport * as i7 from \"@skyux/theme\";\nimport * as i8 from \"@skyux/i18n\";\nimport * as i9 from \"./autocomplete-search-async-disabled.pipe\";\nlet uniqueId = 0;\nexport class SkyAutocompleteComponent {\n /**\n * The static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n */\n set data(value) {\n this.#_data = value ?? [];\n }\n get data() {\n return this.#_data;\n }\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n set debounceTime(value) {\n this.#_debounceTime = value ?? 0;\n }\n get debounceTime() {\n return this.#_debounceTime;\n }\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n set descriptorProperty(value) {\n this.#_descriptorProperty = value || 'name';\n }\n get descriptorProperty() {\n return this.#_descriptorProperty;\n }\n /**\n * @internal\n * Whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n set enableShowMore(value) {\n this.#_enableShowMore = !!value;\n this.#updateIsResultsVisible();\n }\n get enableShowMore() {\n return this.#_enableShowMore;\n }\n /**\n * The observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n set messageStream(value) {\n this.#_messageStream = value ?? new Subject();\n this.#initMessageStream();\n }\n get messageStream() {\n return this.#_messageStream;\n }\n /**\n * The object properties to search.\n * @default [\"name\"]\n * @deprecated We recommend against using this property. To search specific properties, use the `searchAsync` event instead.\n */\n set propertiesToSearch(value) {\n this.#_propertiesToSearch = value ?? ['name'];\n this.#updateDefaultSearchOptions();\n }\n get propertiesToSearch() {\n return this.#_propertiesToSearch;\n }\n /**\n * The function that dynamically manages the data source when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated We recommend against using this property. To call a remote data source, use the `searchAsync` event instead.\n */\n set search(value) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n get search() {\n return this.#_search;\n }\n /**\n * The minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list.\n * @default 1\n */\n set searchTextMinimumCharacters(value) {\n this.#_searchTextMinimumCharacters = value && value > 0 ? value : 1;\n }\n get searchTextMinimumCharacters() {\n return this.#_searchTextMinimumCharacters;\n }\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated We recommend against using this property. To filter results, use the `searchAsync` event instead.\n */\n set searchFilters(value) {\n this.#_searchFilters = value;\n this.#updateDefaultSearchOptions();\n }\n get searchFilters() {\n return this.#_searchFilters;\n }\n /**\n * The maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n set searchResultsLimit(value) {\n this.#_searchResultsLimit = value || 0;\n }\n get searchResultsLimit() {\n return this.#_searchResultsLimit;\n }\n /**\n * @internal\n * Whether to display a button that lets users add options to the data source.\n * @default false\n */\n set showAddButton(value) {\n this.#_showAddButton = !!value;\n this.#updateIsResultsVisible();\n }\n get showAddButton() {\n return this.#_showAddButton;\n }\n //#endregion\n //#region template_properties\n get searchResults() {\n return this.#_searchResults || [];\n }\n set searchResults(value) {\n this.#_searchResults = value;\n }\n get highlightText() {\n return this.#_highlightText || [];\n }\n set highlightText(value) {\n this.#_highlightText = value;\n }\n get showActionsArea() {\n return !!this.showAddButton || !!this.enableShowMore;\n }\n //#endregion\n set inputDirective(directive) {\n if (!directive) {\n throw Error([\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' '));\n }\n if (this.#_inputDirective !== directive) {\n // Unsubscribe from old subscriptions on any previous input directive\n this.#inputDirectiveUnsubscribe.next();\n this.#_inputDirective = directive;\n this.#_inputDirective.displayWith = this.descriptorProperty;\n this.#_inputDirective.textChanges\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe), debounceTime(this.debounceTime), switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n }))\n .subscribe((change) => {\n this.#searchTextChanged(change.value);\n });\n // We delay this listener by 25ms to give things watching the value time to respond (such as the search button).\n this.#_inputDirective.blur\n .pipe(delay(25), takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n directive.restoreInputTextValueToPreviousState();\n this.#closeDropdown();\n this.#cancelCurrentSearch();\n directive.onTouched();\n this.#hasFocus = false;\n this.#liveAnnounceService.clear();\n });\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea || this.dropdownHintText) {\n this.#openDropdown();\n }\n });\n }\n }\n get inputDirective() {\n return this.#_inputDirective;\n }\n set resultsRef(value) {\n if (value) {\n this.#_resultsRef = value;\n this.#destroyAffixer();\n this.#createAffixer();\n }\n }\n get resultsRef() {\n return this.#_resultsRef;\n }\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n #activeElementIndex;\n #adapterService;\n #affixer;\n #affixService;\n #changeDetector;\n #elementRef;\n #environmentInjector;\n #liveAnnounceService;\n #libResourceService;\n #hasFocus;\n #inputBoxHostSvc;\n #inputDirectiveUnsubscribe;\n #messageStreamSub;\n #ngUnsubscribe;\n #overlay;\n #overlayService;\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n #overlayFocusableElements;\n #currentSearchSub;\n #isResultsVisible;\n #zIndex;\n #_data;\n #_debounceTime;\n #_descriptorProperty;\n #_enableShowMore;\n #_highlightText;\n #_inputDirective;\n #_messageStream;\n #_propertiesToSearch;\n #_resultsRef;\n #_search;\n #_searchFilters;\n #_searchResults;\n #_searchResultsLimit;\n #_searchTextMinimumCharacters;\n #_showAddButton;\n constructor(changeDetector, elementRef, affixService, adapterService, overlayService, inputBoxHostSvc, stackingContext) {\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n * @default false\n */\n this.searchAsyncDisabled = false;\n /**\n * Allows the user to specify arbitrary values not in the search results.\n * @default false\n */\n this.allowAnyValue = input(false, { transform: booleanAttribute });\n /**\n * Highlights the search text in each search result. Set this to false\n * when your search finds results that are not exact text matches, e.g.\n * returning \"Bob\" for the term \"Robert.\"\n * @default true\n */\n this.highlightSearchText = input(true, { transform: booleanAttribute });\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n this.addClick = new EventEmitter();\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n this.showMoreClick = new EventEmitter();\n /**\n * Fires when users select items in the dropdown list.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n this.searchAsync = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n this.isOpen = false;\n this.searchText = '';\n this.isSearchingAsync = false;\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n this.#activeElementIndex = -1;\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#liveAnnounceService = inject(SkyLiveAnnouncerService);\n this.#libResourceService = inject(SkyLibResourcesService);\n this.#hasFocus = false;\n this.#inputDirectiveUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n this.#overlayFocusableElements = [];\n this.#isResultsVisible = new BehaviorSubject(false);\n this.#_data = [];\n this.#_debounceTime = 0;\n this.#_descriptorProperty = 'name';\n this.#_enableShowMore = false;\n this.#_messageStream = new Subject();\n this.#_propertiesToSearch = ['name'];\n this.#_searchResultsLimit = 0;\n this.#_searchTextMinimumCharacters = 1;\n this.#_showAddButton = false;\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n this.#adapterService = adapterService;\n this.#overlayService = overlayService;\n this.#inputBoxHostSvc = inputBoxHostSvc;\n this.#zIndex = stackingContext?.zIndex;\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n this.isResultsVisible = this.#isResultsVisible.asObservable();\n }\n ngAfterViewInit() {\n this.#addInputEventListeners();\n }\n ngOnDestroy() {\n this.#cancelCurrentSearch();\n this.#inputDirectiveUnsubscribe.next();\n this.#inputDirectiveUnsubscribe.complete();\n this.#isResultsVisible.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.openChange.complete();\n }\n addButtonClicked() {\n this.addClick.emit();\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n handleKeydown(event) {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.#getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find((r) => r.elementId === activeElementId);\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n }\n else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'tab':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n }\n else {\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n }\n this.#closeDropdown();\n break;\n case 'escape':\n this.#closeDropdown();\n break;\n case 'arrowdown':\n case 'down':\n this.#removeFocusedClass();\n if (this.#activeElementIndex ===\n this.#overlayFocusableElements.length - 1 ||\n this.#activeElementIndex === -1) {\n this.#activeElementIndex = 0;\n }\n else {\n this.#activeElementIndex = this.#activeElementIndex + 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'arrowup':\n case 'up':\n this.#removeFocusedClass();\n if (this.#activeElementIndex <= 0) {\n this.#activeElementIndex =\n this.#overlayFocusableElements.length - 1;\n }\n else {\n this.#activeElementIndex = this.#activeElementIndex - 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n #announceResults() {\n this.#libResourceService\n .getStrings({\n noResults: 'skyux_autocomplete_no_results',\n singleCountResult: 'skyux_autocomplete_one_result',\n multipleCountResults: [\n 'skyux_autocomplete_multiple_results',\n this.searchResultsCount,\n ],\n })\n .pipe(take(1))\n .subscribe((localizedStrings) => {\n let announcementString = '';\n if (this.searchResultsCount && this.searchResultsCount > 0) {\n announcementString =\n this.searchResultsCount === 1\n ? localizedStrings.singleCountResult\n : localizedStrings.multipleCountResults;\n this.#liveAnnounceService.announce(announcementString);\n }\n else if (this.searchResultsCount === 0) {\n this.#liveAnnounceService.announce(localizedStrings.noResults);\n }\n });\n }\n moreButtonClicked() {\n this.showMoreClick.emit({ inputValue: this.searchText });\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n onResultClick(id, event) {\n this.#selectSearchResultById(id);\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n event.preventDefault();\n event.stopPropagation();\n }\n onResultMouseMove(id) {\n if (id !== this.#activeElementIndex) {\n this.#removeFocusedClass();\n this.#activeElementIndex = id;\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n }\n }\n isElementFocused(ref) {\n return ref === this.#overlayFocusableElements[this.#activeElementIndex];\n }\n #searchTextChanged(searchText) {\n if (this.#hasFocus) {\n this.#openDropdown();\n if (!searchText?.trim()) {\n this.#handleEmptySearchText();\n return;\n }\n const isLongEnough = searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n this.searchText = searchText.trim();\n this.#updateIsResultsVisible();\n if (isLongEnough && isDifferent) {\n this.#performSearchAndUpdateResults();\n }\n else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n }\n else {\n this.isSearchingAsync = false;\n }\n }\n #handleEmptySearchText() {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({ selectedItem: undefined });\n }\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n #performSearchAndUpdateResults() {\n this.#cancelCurrentSearch();\n this.#currentSearchSub = this.#performSearch().subscribe({\n next: (result) => {\n const items = result?.items?.filter((item) => {\n return item && this.descriptorProperty in item;\n });\n this.searchResults =\n items?.map((r, i) => {\n const result = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n }) || [];\n this.searchResultsCount = result?.totalCount || 0;\n this.#displayResultsDropdown();\n },\n complete: () => {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n },\n });\n }\n #displayResultsDropdown() {\n this.highlightText = this.#getHighlightText(this.searchText);\n this.#removeFocusedClass();\n this.#removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.#activeElementIndex = 0;\n }\n else {\n this.#activeElementIndex = -1;\n }\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n // Safety check\n /* istanbul ignore else */\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n if (this.#affixer) {\n this.#affixer.reaffix();\n this.#changeDetector.detectChanges();\n this.#initOverlayFocusableElements();\n }\n });\n }\n else {\n this.#openDropdown();\n this.#changeDetector.markForCheck();\n }\n }\n #performSearch() {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n this.searchAsync.emit(searchAsyncArgs);\n return this.allowAnyValue()\n ? this.#combineSearchTextWithResult(searchAsyncArgs)\n : searchAsyncArgs.result?.pipe(take(1)) || of(undefined);\n }\n const result = this.searchOrDefault(this.searchText, this.data, {\n context: 'popover',\n });\n if (result instanceof Array) {\n return of({ items: result, totalCount: result.length });\n }\n return from(result).pipe(map((items) => {\n return { items, totalCount: items.length };\n }));\n }\n #combineSearchTextWithResult(searchAsyncArgs) {\n const searchTextItem = { [this.descriptorProperty]: this.searchText };\n const searchTextResult = { items: [searchTextItem], totalCount: 1 };\n if (searchAsyncArgs.result) {\n return searchAsyncArgs.result.pipe(take(1), map((result) => {\n if (result.items.some((item) => item[this.descriptorProperty] === this.searchText)) {\n return result;\n }\n // Include a result for the current search text as the first option\n // if no exact match is found in the results.\n return { ...result, items: [searchTextItem, ...result.items] };\n }), \n // Display the current search text immediately while async results load.\n startWith(searchTextResult));\n }\n return of(searchTextResult);\n }\n #cancelCurrentSearch() {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n }\n }\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n #getHighlightText(searchText) {\n if (this.highlightSearchText()) {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n let matchesToHighlight = [];\n for (let i = 0, n = this.searchResults.length; i < n; i++) {\n const value = this.searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase();\n const normalizedDataValue = normalizeDiacritics(value);\n let offset = 0;\n let index;\n while ((index = normalizedDataValue.indexOf(normalizedSearchText, offset)) >\n -1) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n return [];\n }\n #selectSearchResultById(id) {\n const result = this.searchResults.find((r) => r.elementId === id);\n /* istanbul ignore else */\n if (result) {\n const data = result.data;\n this.searchText = data[this.descriptorProperty];\n if (this.inputDirective) {\n this.inputDirective.value = data;\n }\n this.selectionChange.emit({ selectedItem: data });\n }\n }\n #openDropdown() {\n if (!this.#overlay && this.resultsTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n wrapperClass: this.wrapperClass,\n });\n if (this.#zIndex) {\n this.#zIndex.pipe(takeUntil(overlay.closed)).subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.attachTemplate(this.resultsTemplateRef);\n this.#overlay = overlay;\n this.isOpen = true;\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n this.#updateAriaControls();\n this.#initOverlayFocusableElements();\n this.#announceResults();\n this.openChange.emit(true);\n }\n }\n #closeDropdown() {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaControls();\n this.#changeDetector.markForCheck();\n this.openChange.emit(false);\n }\n #setActiveDescendant() {\n const activeElement = this.#overlayFocusableElements[this.#activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement && this.inputDirective) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n #removeActiveDescendant() {\n if (this.inputDirective) {\n this.inputDirective.setActiveDescendant(null);\n }\n }\n #updateAriaControls() {\n if (this.inputDirective) {\n this.inputDirective.setAriaControls(this.#overlay?.id || null);\n }\n }\n #resetSearch() {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#removeFocusedClass();\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n }\n #addInputEventListeners() {\n const element = this.#elementRef.nativeElement;\n observableFromEvent(element, 'keydown')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n this.handleKeydown(event);\n });\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen && this.resultsRef) {\n this.#adapterService.setDropdownWidth(this.#elementRef, this.resultsRef, !!this.#inputBoxHostSvc);\n }\n });\n }\n #destroyOverlay() {\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #createAffixer() {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.#affixer && this.resultsRef) {\n const affixer = this.#affixService.createAffixer(this.resultsRef);\n this.#adapterService.setDropdownWidth(this.#elementRef, this.resultsRef, !!this.#inputBoxHostSvc);\n affixer.affixTo(this.#elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #initMessageStream() {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n this.#messageStreamSub = undefined;\n }\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.#closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.#affixer) {\n this.#affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n #initOverlayFocusableElements() {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.#overlay) {\n this.#overlayFocusableElements =\n this.#adapterService.getOverlayFocusableElements(this.#overlay);\n this.#overlayFocusableElements.forEach((el) => {\n this.#adapterService.setTabIndex(el, -1);\n });\n this.#addFocusedClass();\n this.#announceResults();\n }\n });\n }\n #getActiveElement() {\n return this.#overlayFocusableElements[this.#activeElementIndex];\n }\n #removeFocusedClass() {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.removeCSSClass(this.#overlayFocusableElements[this.#activeElementIndex], 'sky-autocomplete-descendant-focus');\n }\n }\n #addFocusedClass() {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.addCSSClass(this.#overlayFocusableElements[this.#activeElementIndex], 'sky-autocomplete-descendant-focus');\n this.#setActiveDescendant();\n }\n }\n #updateDefaultSearchOptions() {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n #updateIsResultsVisible() {\n const isResultsVisible = !!this.searchText &&\n (!this.showActionsArea || this.searchResults.length > 0);\n if (isResultsVisible !== this.#isResultsVisible.getValue()) {\n this.#isResultsVisible.next(isResultsVisible);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyAffixService }, { token: i2.SkyAutocompleteAdapterService }, { token: i1.SkyOverlayService }, { token: i3.SkyInputBoxHostService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyAutocompleteComponent, isStandalone: false, selector: \"sky-autocomplete\", inputs: { ariaLabelledBy: { classPropertyName: \"ariaLabelledBy\", publicName: \"ariaLabelledBy\", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: \"data\", publicName: \"data\", isSignal: false, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: \"debounceTime\", publicName: \"debounceTime\", isSignal: false, isRequired: false, transformFunction: null }, descriptorProperty: { classPropertyName: \"descriptorProperty\", publicName: \"descriptorProperty\", isSignal: false, isRequired: false, transformFunction: null }, dropdownHintText: { classPropertyName: \"dropdownHintText\", publicName: \"dropdownHintText\", isSignal: false, isRequired: false, transformFunction: null }, enableShowMore: { classPropertyName: \"enableShowMore\", publicName: \"enableShowMore\", isSignal: false, isRequired: false, transformFunction: null }, messageStream: { classPropertyName: \"messageStream\", publicName: \"messageStream\", isSignal: false, isRequired: false, transformFunction: null }, wrapperClass: { classPropertyName: \"wrapperClass\", publicName: \"wrapperClass\", isSignal: false, isRequired: false, transformFunction: null }, propertiesToSearch: { classPropertyName: \"propertiesToSearch\", publicName: \"propertiesToSearch\", isSignal: false, isRequired: false, transformFunction: null }, search: { classPropertyName: \"search\", publicName: \"search\", isSignal: false, isRequired: false, transformFunction: null }, searchResultTemplate: { classPropertyName: \"searchResultTemplate\", publicName: \"searchResultTemplate\", isSignal: false, isRequired: false, transformFunction: null }, searchTextMinimumCharacters: { classPropertyName: \"searchTextMinimumCharacters\", publicName: \"searchTextMinimumCharacters\", isSignal: false, isRequired: false, transformFunction: null }, searchFilters: { classPropertyName: \"searchFilters\", publicName: \"searchFilters\", isSignal: false, isRequired: false, transformFunction: null }, searchResultsLimit: { classPropertyName: \"searchResultsLimit\", publicName: \"searchResultsLimit\", isSignal: false, isRequired: false, transformFunction: null }, showAddButton: { classPropertyName: \"showAddButton\", publicName: \"showAddButton\", isSignal: false, isRequired: false, transformFunction: null }, noResultsFoundText: { classPropertyName: \"noResultsFoundText\", publicName: \"noResultsFoundText\", isSignal: false, isRequired: false, transformFunction: null }, searchAsyncDisabled: { classPropertyName: \"searchAsyncDisabled\", publicName: \"searchAsyncDisabled\", isSignal: false, isRequired: false, transformFunction: null }, allowAnyValue: { classPropertyName: \"allowAnyValue\", publicName: \"allowAnyValue\", isSignal: true, isRequired: false, transformFunction: null }, highlightSearchText: { classPropertyName: \"highlightSearchText\", publicName: \"highlightSearchText\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addClick: \"addClick\", showMoreClick: \"showMoreClick\", selectionChange: \"selectionChange\", searchAsync: \"searchAsync\", openChange: \"openChange\" }, providers: [SkyAutocompleteAdapterService], queries: [{ propertyName: \"inputDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true }], viewQueries: [{ propertyName: \"resultsTemplateRef\", first: true, predicate: [\"resultsTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"resultsRef\", first: true, predicate: [\"resultsRef\"], descendants: true, read: ElementRef }], ngImport: i0, template: \"<div\\n aria-autocomplete=\\\"list\\\"\\n aria-haspopup=\\\"listbox\\\"\\n class=\\\"sky-autocomplete\\\"\\n role=\\\"combobox\\\"\\n [attr.aria-expanded]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-controls]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n ? resultsListId\\n : null\\n \\\"\\n [attr.id]=\\\"resultsWrapperId\\\"\\n>\\n <ng-content />\\n</div>\\n\\n<ng-template #resultsTemplateRef>\\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\\n <div\\n #resultsRef\\n class=\\\"sky-autocomplete-results-container\\\"\\n [attr.id]=\\\"resultsListId\\\"\\n [skyThemeClass]=\\\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\\\"\\n (mousedown)=\\\"$event.preventDefault()\\\"\\n (keydown)=\\\"handleKeydown($event)\\\"\\n >\\n @if (isSearchingAsync && !allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n } @else {\\n @if (isResultsVisible | async) {\\n <div\\n class=\\\"sky-autocomplete-results\\\"\\n role=\\\"listbox\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n >\\n @for (result of searchResults; track result.data; let i = $index) {\\n @if (\\n (!searchResultsLimit || i < searchResultsLimit) &&\\n !(enableShowMore && i >= 5)\\n ) {\\n <div\\n #searchResultEl\\n class=\\\"sky-autocomplete-result\\\"\\n role=\\\"option\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-selected]=\\\"isElementFocused(searchResultEl)\\\"\\n [attr.data-descriptor-value]=\\\"result.data[descriptorProperty]\\\"\\n [attr.id]=\\\"result.elementId\\\"\\n [skyHighlight]=\\\"highlightText\\\"\\n (click)=\\\"onResultClick(result.elementId, $event)\\\"\\n (mousemove)=\\\"onResultMouseMove(i)\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n searchResultTemplate || defaultSearchResultTemplate;\\n context: { item: result.data }\\n \\\"\\n />\\n </div>\\n }\\n }\\n @if (isSearchingAsync && allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n }\\n @if (searchResults.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-autocomplete-no-results\\\">\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n </div>\\n } @else if (dropdownHintText) {\\n <div class=\\\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\\\">\\n {{ dropdownHintText }}\\n </div>\\n }\\n @if (showActionsArea) {\\n <div class=\\\"sky-autocomplete-actions\\\">\\n @if (enableShowMore && (!searchText || searchResults.length > 0)) {\\n <button\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\\\"\\n type=\\\"button\\\"\\n (click)=\\\"moreButtonClicked()\\\"\\n >\\n @if (\\n !(\\n searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\\n ) &&\\n searchResults.length === 0 &&\\n !searchText\\n ) {\\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\\n }\\n @if (\\n (searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\\n !searchText\\n ) {\\n {{\\n 'skyux_autocomplete_show_all_count'\\n | skyLibResources\\n : (data.length | skyNumeric: { truncate: false })\\n }}\\n }\\n @if (searchText) {\\n {{\\n 'skyux_autocomplete_show_matches_count'\\n | skyLibResources\\n : (searchResultsCount === undefined\\n ? data.length\\n : (searchResultsCount\\n | skyNumeric: { truncate: false }))\\n }}\\n }\\n </button>\\n }\\n @if (searchText && searchResults.length === 0) {\\n <div\\n class=\\\"sky-font-deemphasized sky-autocomplete-actions-no-results\\\"\\n >\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n @if (showAddButton) {\\n <button\\n #addButtonEl\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\\\"\\n tabindex=\\\"0\\\"\\n type=\\\"button\\\"\\n [class.focused]=\\\"isElementFocused(addButtonEl)\\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_autocomplete_add' | skyLibResources }}\\n </button>\\n }\\n </div>\\n }\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #defaultSearchResultTemplate let-item=\\\"item\\\">\\n {{ item[descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-autocomplete-results-container:not(.sky-theme-modern *){--sky-override-autocomplete-actions-add-icon-padding-right: 5px;--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-background-color: transparent;--sky-override-autocomplete-result-box-shadow: none;--sky-override-autocomplete-result-focus-background-color: #eeeeef;--sky-override-autocomplete-result-focus-box-shadow: none;--sky-override-autocomplete-result-margin-bottom: 4px;--sky-override-autocomplete-result-padding: 3px 20px;--sky-override-autocomplete-results-container-background-color: #ffffff;--sky-override-autocomplete-results-container-border-radius: 0;--sky-override-autocomplete-results-no-results-padding: 4px;--sky-override-autocomplete-results-padding: 4px}::ng-deep .sky-theme-modern:not(.sky-theme-brand-base) .sky-autocomplete-results-container{--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-autocomplete-result-margin-bottom: 0;--sky-override-autocomplete-result-padding: 10px 0 10px 15px;--sky-override-autocomplete-results-no-results-padding: var( --sky-comp-dropdown-menu-space-inset-top ) 0 var(--sky-comp-dropdown-menu-space-inset-bottom)}:host-context(sky-input-box) :host{width:100%}.sky-autocomplete-results-container{position:fixed;background-color:var(--sky-override-autocomplete-results-container-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-autocomplete-results-container-border-radius, var(--sky-border-radius-m))}.sky-autocomplete-results-waiting{height:70px}.sky-autocomplete-results{display:flex;flex-direction:column;padding:var(--sky-override-autocomplete-results-padding, var(--sky-comp-dropdown-menu-space-inset-top) 0 var(--sky-comp-dropdown-menu-space-inset-bottom));overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}.sky-autocomplete-results:has(.sky-autocomplete-no-results){padding:var(--sky-override-autocomplete-results-no-results-padding, 0)}.sky-autocomplete-result{background-color:var(--sky-override-autocomplete-result-background-color, var(--sky-color-background-action-tertiary-base));box-shadow:var(--sky-override-autocomplete-result-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base));margin-bottom:var(--sky-override-autocomplete-result-margin-bottom, var(--sky-space-gap-action_group-s));padding:var(--sky-override-autocomplete-result-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));cursor:pointer}.sky-autocomplete-result:last-child{margin-bottom:0}.sky-autocomplete-no-results{padding:var(--sky-override-autocomplete-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));font-size:var(--sky-override-autocomplete-no-results-font-size, inherit)}.sky-autocomplete-actions{border-top:var(--sky-override-autocomplete-actions-top-border, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-autocomplete-actions .sky-autocomplete-action{border:none}.sky-autocomplete-actions .sky-autocomplete-actions-no-results{display:inline-block;padding:var(--sky-override-autocomplete-actions-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-actions-no-results-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-dropdown-hint-text{display:inline-block;padding:var(--sky-override-autocomplete-dropdown-hint-text-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-dropdown-hint-text-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-action-add{float:right}.sky-autocomplete-action-add sky-icon{padding-right:var(--sky-override-autocomplete-actions-add-icon-padding-right, var(--sky-space-gap-icon-s))}.sky-autocomplete-descendant-focus:not(.sky-autocomplete-action){background-color:var(--sky-override-autocomplete-result-focus-background-color, inherit)}.sky-autocomplete-descendant-focus.sky-autocomplete-action{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-autocomplete-descendant-focus{border:none;box-shadow:var(--sky-override-autocomplete-result-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i5.SkyTextHighlightDirective, selector: \"[skyHighlight]\", inputs: [\"skyHighlight\"] }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"component\", type: i5.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i8.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"pipe\", type: i1.SkyNumericPipe, name: \"skyNumeric\" }, { kind: \"pipe\", type: i9.SkyAutocompleteSearchAsyncDisabledPipe, name: \"skyAutocompleteSearchAsyncDisabled\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-autocomplete', providers: [SkyAutocompleteAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div\\n aria-autocomplete=\\\"list\\\"\\n aria-haspopup=\\\"listbox\\\"\\n class=\\\"sky-autocomplete\\\"\\n role=\\\"combobox\\\"\\n [attr.aria-expanded]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-controls]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n ? resultsListId\\n : null\\n \\\"\\n [attr.id]=\\\"resultsWrapperId\\\"\\n>\\n <ng-content />\\n</div>\\n\\n<ng-template #resultsTemplateRef>\\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\\n <div\\n #resultsRef\\n class=\\\"sky-autocomplete-results-container\\\"\\n [attr.id]=\\\"resultsListId\\\"\\n [skyThemeClass]=\\\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\\\"\\n (mousedown)=\\\"$event.preventDefault()\\\"\\n (keydown)=\\\"handleKeydown($event)\\\"\\n >\\n @if (isSearchingAsync && !allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n } @else {\\n @if (isResultsVisible | async) {\\n <div\\n class=\\\"sky-autocomplete-results\\\"\\n role=\\\"listbox\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n >\\n @for (result of searchResults; track result.data; let i = $index) {\\n @if (\\n (!searchResultsLimit || i < searchResultsLimit) &&\\n !(enableShowMore && i >= 5)\\n ) {\\n <div\\n #searchResultEl\\n class=\\\"sky-autocomplete-result\\\"\\n role=\\\"option\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-selected]=\\\"isElementFocused(searchResultEl)\\\"\\n [attr.data-descriptor-value]=\\\"result.data[descriptorProperty]\\\"\\n [attr.id]=\\\"result.elementId\\\"\\n [skyHighlight]=\\\"highlightText\\\"\\n (click)=\\\"onResultClick(result.elementId, $event)\\\"\\n (mousemove)=\\\"onResultMouseMove(i)\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n searchResultTemplate || defaultSearchResultTemplate;\\n context: { item: result.data }\\n \\\"\\n />\\n </div>\\n }\\n }\\n @if (isSearchingAsync && allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n }\\n @if (searchResults.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-autocomplete-no-results\\\">\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n </div>\\n } @else if (dropdownHintText) {\\n <div class=\\\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\\\">\\n {{ dropdownHintText }}\\n </div>\\n }\\n @if (showActionsArea) {\\n <div class=\\\"sky-autocomplete-actions\\\">\\n @if (enableShowMore && (!searchText || searchResults.length > 0)) {\\n <button\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\\\"\\n type=\\\"button\\\"\\n (click)=\\\"moreButtonClicked()\\\"\\n >\\n @if (\\n !(\\n searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\\n ) &&\\n searchResults.length === 0 &&\\n !searchText\\n ) {\\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\\n }\\n @if (\\n (searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\\n !searchText\\n ) {\\n {{\\n 'skyux_autocomplete_show_all_count'\\n | skyLibResources\\n : (data.length | skyNumeric: { truncate: false })\\n }}\\n }\\n @if (searchText) {\\n {{\\n 'skyux_autocomplete_show_matches_count'\\n | skyLibResources\\n : (searchResultsCount === undefined\\n ? data.length\\n : (searchResultsCount\\n | skyNumeric: { truncate: false }))\\n }}\\n }\\n </button>\\n }\\n @if (searchText && searchResults.length === 0) {\\n <div\\n class=\\\"sky-font-deemphasized sky-autocomplete-actions-no-results\\\"\\n >\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n @if (showAddButton) {\\n <button\\n #addButtonEl\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\\\"\\n tabindex=\\\"0\\\"\\n type=\\\"button\\\"\\n [class.focused]=\\\"isElementFocused(addButtonEl)\\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_autocomplete_add' | skyLibResources }}\\n </button>\\n }\\n </div>\\n }\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #defaultSearchResultTemplate let-item=\\\"item\\\">\\n {{ item[descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-autocomplete-results-container:not(.sky-theme-modern *){--sky-override-autocomplete-actions-add-icon-padding-right: 5px;--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-background-color: transparent;--sky-override-autocomplete-result-box-shadow: none;--sky-override-autocomplete-result-focus-background-color: #eeeeef;--sky-override-autocomplete-result-focus-box-shadow: none;--sky-override-autocomplete-result-margin-bottom: 4px;--sky-override-autocomplete-result-padding: 3px 20px;--sky-override-autocomplete-results-container-background-color: #ffffff;--sky-override-autocomplete-results-container-border-radius: 0;--sky-override-autocomplete-results-no-results-padding: 4px;--sky-override-autocomplete-results-padding: 4px}::ng-deep .sky-theme-modern:not(.sky-theme-brand-base) .sky-autocomplete-results-container{--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-autocomplete-result-margin-bottom: 0;--sky-override-autocomplete-result-padding: 10px 0 10px 15px;--sky-override-autocomplete-results-no-results-padding: var( --sky-comp-dropdown-menu-space-inset-top ) 0 var(--sky-comp-dropdown-menu-space-inset-bottom)}:host-context(sky-input-box) :host{width:100%}.sky-autocomplete-results-container{position:fixed;background-color:var(--sky-override-autocomplete-results-container-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-autocomplete-results-container-border-radius, var(--sky-border-radius-m))}.sky-autocomplete-results-waiting{height:70px}.sky-autocomplete-results{display:flex;flex-direction:column;padding:var(--sky-override-autocomplete-results-padding, var(--sky-comp-dropdown-menu-space-inset-top) 0 var(--sky-comp-dropdown-menu-space-inset-bottom));overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}.sky-autocomplete-results:has(.sky-autocomplete-no-results){padding:var(--sky-override-autocomplete-results-no-results-padding, 0)}.sky-autocomplete-result{background-color:var(--sky-override-autocomplete-result-background-color, var(--sky-color-background-action-tertiary-base));box-shadow:var(--sky-override-autocomplete-result-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base));margin-bottom:var(--sky-override-autocomplete-result-margin-bottom, var(--sky-space-gap-action_group-s));padding:var(--sky-override-autocomplete-result-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));cursor:pointer}.sky-autocomplete-result:last-child{margin-bottom:0}.sky-autocomplete-no-results{padding:var(--sky-override-autocomplete-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));font-size:var(--sky-override-autocomplete-no-results-font-size, inherit)}.sky-autocomplete-actions{border-top:var(--sky-override-autocomplete-actions-top-border, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-autocomplete-actions .sky-autocomplete-action{border:none}.sky-autocomplete-actions .sky-autocomplete-actions-no-results{display:inline-block;padding:var(--sky-override-autocomplete-actions-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-actions-no-results-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-dropdown-hint-text{display:inline-block;padding:var(--sky-override-autocomplete-dropdown-hint-text-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-dropdown-hint-text-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-action-add{float:right}.sky-autocomplete-action-add sky-icon{padding-right:var(--sky-override-autocomplete-actions-add-icon-padding-right, var(--sky-space-gap-icon-s))}.sky-autocomplete-descendant-focus:not(.sky-autocomplete-action){background-color:var(--sky-override-autocomplete-result-focus-background-color, inherit)}.sky-autocomplete-descendant-focus.sky-autocomplete-action{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-autocomplete-descendant-focus{border:none;box-shadow:var(--sky-override-autocomplete-result-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyAffixService }, { type: i2.SkyAutocompleteAdapterService }, { type: i1.SkyOverlayService }, { type: i3.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { ariaLabelledBy: [{\n type: Input\n }], data: [{\n type: Input\n }], debounceTime: [{\n type: Input\n }], descriptorProperty: [{\n type: Input\n }], dropdownHintText: [{\n type: Input\n }], enableShowMore: [{\n type: Input\n }], messageStream: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], propertiesToSearch: [{\n type: Input\n }], search: [{\n type: Input\n }], searchResultTemplate: [{\n type: Input\n }], searchTextMinimumCharacters: [{\n type: Input\n }], searchFilters: [{\n type: Input\n }], searchResultsLimit: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], noResultsFoundText: [{\n type: Input\n }], searchAsyncDisabled: [{\n type: Input\n }], addClick: [{\n type: Output\n }], showMoreClick: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], searchAsync: [{\n type: Output\n }], openChange: [{\n type: Output\n }], inputDirective: [{\n type: ContentChild,\n args: [SkyAutocompleteInputDirective]\n }], resultsTemplateRef: [{\n type: ViewChild,\n args: ['resultsTemplateRef', { read: TemplateRef }]\n }], resultsRef: [{\n type: ViewChild,\n args: ['resultsRef', { read: ElementRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsRUFHdEIsdUJBQXVCLEdBSXhCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFFUCxJQUFJLEVBQ0osU0FBUyxJQUFJLG1CQUFtQixFQUNoQyxFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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aEIsTUFBTTtnQkEwQ0ksY0FBYztzQkFEeEIsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBK0RwQyxrQkFBa0I7c0JBRHhCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUkzQyxVQUFVO3NCQURwQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSxcbiAgU2t5T3ZlcmxheUluc3RhbmNlLFxuICBTa3lPdmVybGF5U2VydmljZSxcbiAgU2t5U3RhY2tpbmdDb250ZXh0LFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICBmcm9tLFxuICBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCxcbiAgb2YsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkZWxheSxcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IG5vcm1hbGl6ZURpYWNyaXRpY3MgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1zdHJpbmctdXRpbHMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24gfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtYXJncyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY1Jlc3VsdCB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1yZXN1bHQnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXIgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24tZmlsdGVyJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlbGVjdGlvbi1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0IHtcbiAgZWxlbWVudElkOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8vI3JlZ2lvbiBwdWJsaWNfYXBpXG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIGF1dG9jb21wbGV0ZSB0ZXh0IGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGljIGRhdGEgc291cmNlIGZvciB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCB0byBzZWFyY2hcbiAgICogd2hlbiB1c2VycyBlbnRlciB0ZXh0LiBGb3IgYSBkeW5hbWljIGRhdGEgc291cmNlIHN1Y2ggYXMgYW4gYXJyYXkgdGhhdFxuICAgKiBjaGFuZ2VzIGR1ZSB0byBzZXJ2ZXIgY2FsbHMsIHVzZSBgc2VhcmNoYCBvciBgc2VhcmNoQXN5bmNgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IGFueVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2RhdGEgPSB2YWx1ZSA/PyBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzZWFyY2hpbmcgd2hpbGUgdXNlcnNcbiAgICogZW50ZXIgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2RlYm91bmNlVGltZSA9IHZhbHVlID8/IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgcHJvcGVydHkgdG8gZGlzcGxheSBpbiB0aGUgdGV4dCBpbnB1dCBhZnRlciB1c2Vyc1xuICAgKiBzZWxlY3QgYW4gaXRlbSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgXCJuYW1lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVzY3JpcHRvclByb3BlcnR5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGVzY3JpcHRvclByb3BlcnR5ID0gdmFsdWUgfHwgJ25hbWUnO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdG9yUHJvcGVydHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rlc2NyaXB0b3JQcm9wZXJ0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaW50IHRleHQgdG8gc2hvdyBpbiB0aGUgZHJvcGRvd25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZHJvcGRvd25IaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIGluIHRoZSBkcm9wZG93biB0aGF0IG9wZW5zIGEgcGlja2VyIHdoZXJlIHVzZXJzIGNhbiB2aWV3IGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbmFibGVTaG93TW9yZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19lbmFibGVTaG93TW9yZSA9ICEhdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlSXNSZXN1bHRzVmlzaWJsZSgpO1xuICB9XG4gIHB1YmxpYyBnZXQgZW5hYmxlU2hvd01vcmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb2JzZXJ2YWJsZSBvZiBgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZWAgdGhhdCBjYW4gY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVzc2FnZVN0cmVhbSh2YWx1ZTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZXNzYWdlU3RyZWFtID0gdmFsdWUgPz8gbmV3IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4oKTtcbiAgICB0aGlzLiNpbml0TWVzc2FnZVN0cmVhbSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXNzYWdlU3RyZWFtKCk6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLiNfbWVzc2FnZVN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCBwcm9wZXJ0aWVzIHRvIHNlYXJjaC5cbiAgICogQGRlZmF1bHQgW1wibmFtZVwiXVxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBUbyBzZWFyY2ggc3BlY2lmaWMgcHJvcGVydGllcywgdXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb3BlcnRpZXNUb1NlYXJjaCh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfcHJvcGVydGllc1RvU2VhcmNoID0gdmFsdWUgPz8gWyduYW1lJ107XG5cbiAgICB0aGlzLiN1cGRhdGVEZWZhdWx0U2VhcmNoT3B0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0aWVzVG9TZWFyY2goKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLiNfcHJvcGVydGllc1RvU2VhcmNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IGR5bmFtaWNhbGx5IG1hbmFnZXMgdGhlIGRhdGEgc291cmNlIHdoZW4gdXNlcnNcbiAgICogY2hhbmdlIHRoZSB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUgZmllbGQuIFRoZSBzZWFyY2ggZnVuY3Rpb24gbXVzdCByZXR1cm5cbiAgICogYW4gYXJyYXkgb3IgYSBwcm9taXNlIG9mIGFuIGFycmF5LiBUaGUgYHNlYXJjaGAgcHJvcGVydHkgaXMgcGFydGljdWxhcmx5XG4gICAqIHVzZWZ1bCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkb2VzIG5vdCBsaXZlIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICogQGRlcHJlY2F0ZWQgV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgdGhpcyBwcm9wZXJ0eS4gVG8gY2FsbCBhIHJlbW90ZSBkYXRhIHNvdXJjZSwgdXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaCh2YWx1ZTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2VhcmNoID0gdmFsdWU7XG4gICAgdGhpcy5zZWFyY2hPckRlZmF1bHQgPVxuICAgICAgdmFsdWUgfHxcbiAgICAgIHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbih7XG4gICAgICAgIHByb3BlcnRpZXNUb1NlYXJjaDogdGhpcy5wcm9wZXJ0aWVzVG9TZWFyY2gsXG4gICAgICAgIHNlYXJjaEZpbHRlcnM6IHRoaXMuc2VhcmNoRmlsdGVycyxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2goKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VhcmNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB0aGF0IGZvcm1hdHMgZWFjaCBzZWFyY2ggcmVzdWx0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBUaGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCBpbmplY3RzIHNlYXJjaCByZXN1bHQgdmFsdWVzIGludG8gdGhlIHRlbXBsYXRlXG4gICAqIGFzIGBpdGVtYCB2YXJpYWJsZXMgdGhhdCByZWZlcmVuY2UgYWxsIG9mIHRoZSBvYmplY3QgcHJvcGVydGllcyBvZiB0aGUgc2VhcmNoIHJlc3VsdHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoUmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHVzZXJzIG11c3QgZW50ZXIgYmVmb3JlXG4gICAqIHRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IHNlYXJjaGVzIHRoZSBkYXRhIHNvdXJjZSBhbmQgZGlzcGxheXMgc2VhcmNoXG4gICAqIHJlc3VsdHMgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzID0gdmFsdWUgJiYgdmFsdWUgPiAwID8gdmFsdWUgOiAxO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYWdhaW5zdCBlYWNoIHNlYXJjaCByZXN1bHQgaW4gb3JkZXJcbiAgICogdG8gZmlsdGVyIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbi4gV2hlblxuICAgKiB1c2luZyB0aGUgYHNlYXJjaGAgcHJvcGVydHkgdG8gc3BlY2lmeSBhIGN1c3RvbSBzZWFyY2ggZnVuY3Rpb24sIHlvdSBtdXN0XG4gICAqIG1hbnVhbGx5IGFwcGx5IGZpbHRlcnMgaW5zaWRlIHRoYXQgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiBgdHJ1ZWBcbiAgICogb3IgYGZhbHNlYCBmb3IgZWFjaCByZXN1bHQgdG8gaW5kaWNhdGUgd2hldGhlciB0byBkaXNwbGF5IGl0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBUbyBmaWx0ZXIgcmVzdWx0cywgdXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaEZpbHRlcnMoXG4gICAgdmFsdWU6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW10gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19zZWFyY2hGaWx0ZXJzID0gdmFsdWU7XG5cbiAgICB0aGlzLiN1cGRhdGVEZWZhdWx0U2VhcmNoT3B0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hGaWx0ZXJzKCk6XG4gICAgfCBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlcltdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VhcmNoRmlsdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCBkaXNwbGF5cyBhbGwgbWF0Y2hpbmcgcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoUmVzdWx0c0xpbWl0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2VhcmNoUmVzdWx0c0xpbWl0ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0c0xpbWl0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2hSZXN1bHRzTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzaG93QWRkQnV0dG9uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Nob3dBZGRCdXR0b24gPSAhIXZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNob3dBZGRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zaG93QWRkQnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgZm91bmQuXG4gICAqIEBkZWZhdWx0IFwiTm8gbWF0Y2hlcyBmb3VuZFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9SZXN1bHRzRm91bmRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBBbGxvd3MgYXN5bmMgc2VhcmNoIHRvIGJlIGRpc2FibGVkIGV2ZW4gd2hlbiBhIGxpc3RlbmVyIGlzIHNwZWNpZmllZCBmb3JcbiAgICogdGhlIGBzZWFyY2hBc3luY2Agb3V0cHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaEFzeW5jRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgYXJiaXRyYXJ5IHZhbHVlcyBub3QgaW4gdGhlIHNlYXJjaCByZXN1bHRzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGFsbG93QW55VmFsdWUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIHNlYXJjaCB0ZXh0IGluIGVhY2ggc2VhcmNoIHJlc3VsdC4gU2V0IHRoaXMgdG8gZmFsc2VcbiAgICogd2hlbiB5b3VyIHNlYXJjaCBmaW5kcyByZXN1bHRzIHRoYXQgYXJlIG5vdCBleGFjdCB0ZXh0IG1hdGNoZXMsIGUuZy5cbiAgICogcmV0dXJuaW5nIFwiQm9iXCIgZm9yIHRoZSB0ZXJtIFwiUm9iZXJ0LlwiXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHB1YmxpYyBoaWdobGlnaHRTZWFyY2hUZXh0ID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNob3dNb3JlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJncz4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgaXRlbXMgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGVudGVyIG5ldyBzZWFyY2ggaW5mb3JtYXRpb24gYW5kIGFsbG93cyByZXN1bHRzIHRvIGJlXG4gICAqIHJldHVybmVkIHZpYSBhbiBvYnNlcnZhYmxlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hBc3luYyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gdGVtcGxhdGVfcHJvcGVydGllc1xuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0cygpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2hSZXN1bHRzIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWFyY2hSZXN1bHRzKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRbXSkge1xuICAgIHRoaXMuI19zZWFyY2hSZXN1bHRzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZ2hsaWdodFRleHQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLiNfaGlnaGxpZ2h0VGV4dCB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaGlnaGxpZ2h0VGV4dCh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLiNfaGlnaGxpZ2h0VGV4dCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZXN1bHRzTGlzdElkOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlc3VsdHNXcmFwcGVySWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuXG4gIHB1YmxpYyBnZXQgc2hvd0FjdGlvbnNBcmVhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2hvd0FkZEJ1dHRvbiB8fCAhIXRoaXMuZW5hYmxlU2hvd01vcmU7XG4gIH1cblxuICBwdWJsaWMgaXNTZWFyY2hpbmdBc3luYyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRzQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvLyNlbmRyZWdpb25cblxuICBAQ29udGVudENoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKVxuICBwdWJsaWMgc2V0IGlucHV0RGlyZWN0aXZlKFxuICAgIGRpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIGlmICghZGlyZWN0aXZlKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgW1xuICAgICAgICAgICdUaGUgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50IHJlcXVpcmVzIGEgQ29udGVudENoaWxkIGlucHV0IG9yJyxcbiAgICAgICAgICAndGV4dGFyZWEgYm91bmQgd2l0aCB0aGUgU2t5QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZS4gRm9yIGV4YW1wbGU6JyxcbiAgICAgICAgICAnYDxpbnB1dCB0eXBlPVwidGV4dFwiIHNreUF1dG9jb21wbGV0ZT5gLicsXG4gICAgICAgIF0uam9pbignICcpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jX2lucHV0RGlyZWN0aXZlICE9PSBkaXJlY3RpdmUpIHtcbiAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gb2xkIHN1YnNjcmlwdGlvbnMgb24gYW55IHByZXZpb3VzIGlucHV0IGRpcmVjdGl2ZVxuICAgICAgdGhpcy4jaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5uZXh0KCk7XG5cbiAgICAgIHRoaXMuI19pbnB1dERpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuICAgICAgdGhpcy4jX2lucHV0RGlyZWN0aXZlLmRpc3BsYXlXaXRoID0gdGhpcy5kZXNjcmlwdG9yUHJvcGVydHk7XG5cbiAgICAgIHRoaXMuI19pbnB1dERpcmVjdGl2ZS50ZXh0Q2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy4jaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1NlYXJjaGluZ0FzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBvZihjaGFuZ2UpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuI3NlYXJjaFRleHRDaGFuZ2VkKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBXZSBkZWxheSB0aGlzIGxpc3RlbmVyIGJ5IDI1bXMgdG8gZ2l2ZSB0aGluZ3Mgd2F0Y2hpbmcgdGhlIHZhbHVlIHRpbWUgdG8gcmVzcG9uZCAoc3VjaCBhcyB0aGUgc2VhcmNoIGJ1dHRvbikuXG4gICAgICB0aGlzLiNfaW5wdXREaXJlY3RpdmUuYmx1clxuICAgICAgICAucGlwZShkZWxheSgyNSksIHRha2VVbnRpbCh0aGlzLiNpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgZGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG4gICAgICAgICAgZGlyZWN0aXZlLm9uVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMuI2hhc0ZvY3VzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlU2VydmljZS5jbGVhcigpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy4jX2lucHV0RGlyZWN0aXZlLmZvY3VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jaGFzRm9jdXMgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dBY3Rpb25zQXJlYSB8fCB0aGlzLmRyb3Bkb3duSGludFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuI29wZW5Ecm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbnB1dERpcmVjdGl2ZSgpOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19pbnB1dERpcmVjdGl2ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHNUZW1wbGF0ZVJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHJlc3VsdHNUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgncmVzdWx0c1JlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgc2V0IHJlc3VsdHNSZWYodmFsdWU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19yZXN1bHRzUmVmID0gdmFsdWU7XG4gICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzdWx0c1JlZigpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3Jlc3VsdHNSZWY7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoT3JEZWZhdWx0OiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbjtcblxuICBwcm90ZWN0ZWQgaXNSZXN1bHRzVmlzaWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAvKipcbiAgICogSW5kZXggdGhhdCBpbmRpY2F0ZXMgd2hpY2ggZGVzY2VuZGFudCBvZiB0aGUgb3ZlcmxheSBjdXJyZW50bHkgaGFzIGZvY3VzLlxuICAgKi9cbiAgI2FjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuXG4gICNhZGFwdGVyU2VydmljZTogU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2U7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZVNlcnZpY2UgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5ICNsaWJSZXNvdXJjZVNlcnZpY2UgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgI2hhc0ZvY3VzID0gZmFsc2U7XG5cbiAgI2lucHV0Qm94SG9zdFN2YzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSB8IHVuZGVmaW5lZDtcblxuICAjaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI21lc3NhZ2VTdHJlYW1TdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI292ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZSB8IHVuZGVmaW5lZDtcblxuICAjb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBFbGVtZW50cyB3aXRoaW4gdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biB0aGF0IGFyZSBmb2N1c2FibGUuXG4gICAqIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGhlIHNlYXJjaCByZXN1bHRzIGFuZCBhY3Rpb24gYnV0dG9ucywgYnV0IGNvdWxkIGFsc28gYmVcbiAgICogZWxlbWVudHMgcHJvdmlkZWQgaW4gdGhlIGNvbnN1bWVyJ3Mgb3duIHRlbXBsYXRlLlxuICAgKi9cbiAgI292ZXJsYXlGb2N1c2FibGVFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICNjdXJyZW50U2VhcmNoU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI2lzUmVzdWx0c1Zpc2libGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAjekluZGV4OiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG5cbiAgI19kYXRhOiBhbnlbXSA9IFtdO1xuXG4gICNfZGVib3VuY2VUaW1lID0gMDtcblxuICAjX2Rlc2NyaXB0b3JQcm9wZXJ0eSA9ICduYW1lJztcblxuICAjX2VuYWJsZVNob3dNb3JlID0gZmFsc2U7XG5cbiAgI19oaWdobGlnaHRUZXh0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAjX2lucHV0RGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuICAjX21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuXG4gICNfcHJvcGVydGllc1RvU2VhcmNoID0gWyduYW1lJ107XG5cbiAgI19yZXN1bHRzUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICNfc2VhcmNoOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjX3NlYXJjaEZpbHRlcnM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW10gfCB1bmRlZmluZWQ7XG5cbiAgI19zZWFyY2hSZXN1bHRzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRbXSB8IHVuZGVmaW5lZDtcblxuICAjX3NlYXJjaFJlc3VsdHNMaW1pdCA9IDA7XG5cbiAgI19zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPSAxO1xuXG4gICNfc2hvd0FkZEJ1dHRvbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGFkYXB0ZXJTZXJ2aWNlOiBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZSxcbiAgICBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoU0tZX1NUQUNLSU5HX0NPTlRFWFQpXG4gICAgc3RhY2tpbmdDb250ZXh0PzogU2t5U3RhY2tpbmdDb250ZXh0LFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlID0gb3ZlcmxheVNlcnZpY2U7XG4gICAgdGhpcy4jaW5wdXRCb3hIb3N0U3ZjID0gaW5wdXRCb3hIb3N0U3ZjO1xuICAgIHRoaXMuI3pJbmRleCA9IHN0YWNraW5nQ29udGV4dD8uekluZGV4O1xuXG4gICAgdGhpcy5zZWFyY2hPckRlZmF1bHQgPSBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oe1xuICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiBbJ25hbWUnXSxcbiAgICAgIHNlYXJjaEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlkID0gKyt1bmlxdWVJZDtcbiAgICB0aGlzLnJlc3VsdHNMaXN0SWQgPSBgc2t5LWF1dG9jb21wbGV0ZS1saXN0LSR7aWR9YDtcbiAgICB0aGlzLnJlc3VsdHNXcmFwcGVySWQgPSBgc2t5LWF1dG9jb21wbGV0ZS13cmFwcGVyLSR7aWR9YDtcbiAgICB0aGlzLmlzUmVzdWx0c1Zpc2libGUgPSB0aGlzLiNpc1Jlc3VsdHNWaXNpYmxlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGRJbnB1dEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jY2FuY2VsQ3VycmVudFNlYXJjaCgpO1xuICAgIHRoaXMuI2lucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI2lucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNpc1Jlc3VsdHNWaXNpYmxlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2xpY2suZW1pdCgpO1xuICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLiNjbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy4jZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudElkID0gYWN0aXZlRWxlbWVudD8uaWQ7XG4gICAgICBjb25zdCB0YXJnZXRJc1NlYXJjaFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0cy5maW5kKFxuICAgICAgICAocikgPT4gci5lbGVtZW50SWQgPT09IGFjdGl2ZUVsZW1lbnRJZCxcbiAgICAgICk7XG5cbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgICBpZiAodGFyZ2V0SXNTZWFyY2hSZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMuI3NlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoYWN0aXZlRWxlbWVudElkKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSAmJiAhdGhpcy5kcm9wZG93bkhpbnRUZXh0KSB7XG4gICAgICAgICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuI3Jlc2V0U2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGlmICh0YXJnZXRJc1NlYXJjaFJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy4jc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChhY3RpdmVFbGVtZW50SWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICB0aGlzLiNyZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPT09XG4gICAgICAgICAgICAgIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPT09IC0xXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNhZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgdGhpcy4jcmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgaWYgKHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPVxuICAgICAgICAgICAgICB0aGlzLiNvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID0gdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4IC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4jYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjYW5ub3VuY2VSZXN1bHRzKCk6IHZvaWQge1xuICAgIHRoaXMuI2xpYlJlc291cmNlU2VydmljZVxuICAgICAgLmdldFN0cmluZ3Moe1xuICAgICAgICBub1Jlc3VsdHM6ICdza3l1eF9hdXRvY29tcGxldGVfbm9fcmVzdWx0cycsXG4gICAgICAgIHNpbmdsZUNvdW50UmVzdWx0OiAnc2t5dXhfYXV0b2NvbXBsZXRlX29uZV9yZXN1bHQnLFxuICAgICAgICBtdWx0aXBsZUNvdW50UmVzdWx0czogW1xuICAgICAgICAgICdza3l1eF9hdXRvY29tcGxldGVfbXVsdGlwbGVfcmVzdWx0cycsXG4gICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzQ291bnQsXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsaXplZFN0cmluZ3MpID0+IHtcbiAgICAgICAgbGV0IGFubm91bmNlbWVudFN0cmluZyA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hSZXN1bHRzQ291bnQgJiYgdGhpcy5zZWFyY2hSZXN1bHRzQ291bnQgPiAwKSB7XG4gICAgICAgICAgYW5ub3VuY2VtZW50U3RyaW5nID1cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50ID09PSAxXG4gICAgICAgICAgICAgID8gbG9jYWxpemVkU3RyaW5ncy5zaW5nbGVDb3VudFJlc3VsdFxuICAgICAgICAgICAgICA6IGxvY2FsaXplZFN0cmluZ3MubXVsdGlwbGVDb3VudFJlc3VsdHM7XG4gICAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlU2VydmljZS5hbm5vdW5jZShhbm5vdW5jZW1lbnRTdHJpbmcpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlU2VydmljZS5hbm5vdW5jZShsb2NhbGl6ZWRTdHJpbmdzLm5vUmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1vcmVCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vcmVDbGljay5lbWl0KHsgaW5wdXRWYWx1ZTogdGhpcy5zZWFyY2hUZXh0IH0pO1xuICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLiNjbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXN1bHRDbGljayhpZDogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoaWQpO1xuXG4gICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSAmJiAhdGhpcy5kcm9wZG93bkhpbnRUZXh0KSB7XG4gICAgICB0aGlzLiNjbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3Jlc2V0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc3VsdE1vdXNlTW92ZShpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGlkICE9PSB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXgpIHtcbiAgICAgIHRoaXMuI3JlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID0gaWQ7XG4gICAgICB0aGlzLiNhZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0VsZW1lbnRGb2N1c2VkKHJlZjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVmID09PSB0aGlzLiNvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gICNzZWFyY2hUZXh0Q2hhbmdlZChzZWFyY2hUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaGFzRm9jdXMpIHtcbiAgICAgIHRoaXMuI29wZW5Ecm9wZG93bigpO1xuICAgICAgaWYgKCFzZWFyY2hUZXh0Py50cmltKCkpIHtcbiAgICAgICAgdGhpcy4jaGFuZGxlRW1wdHlTZWFyY2hUZXh0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNMb25nRW5vdWdoID1cbiAgICAgICAgc2VhcmNoVGV4dC5sZW5ndGggPj0gdGhpcy5zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnM7XG4gICAgICBjb25zdCBpc0RpZmZlcmVudCA9IHNlYXJjaFRleHQgIT09IHRoaXMuc2VhcmNoVGV4dDtcblxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dC50cmltKCk7XG4gICAgICB0aGlzLiN1cGRhdGVJc1Jlc3VsdHNWaXNpYmxlKCk7XG5cbiAgICAgIGlmIChpc0xvbmdFbm91Z2ggJiYgaXNEaWZmZXJlbnQpIHtcbiAgICAgICAgdGhpcy4jcGVyZm9ybVNlYXJjaEFuZFVwZGF0ZVJlc3VsdHMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hpbmdBc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1NlYXJjaGluZ0FzeW5jID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgI2hhbmRsZUVtcHR5U2VhcmNoVGV4dCgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IHNlbGVjdGlvbkNoYW5nZSBpZiB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkLlxuICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlICYmIHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHsgc2VsZWN0ZWRJdGVtOiB1bmRlZmluZWQgfSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSAmJiAhdGhpcy5kcm9wZG93bkhpbnRUZXh0KSB7XG4gICAgICB0aGlzLiNjbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3Jlc2V0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1NlYXJjaGluZ0FzeW5jID0gZmFsc2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjcGVyZm9ybVNlYXJjaEFuZFVwZGF0ZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FuY2VsQ3VycmVudFNlYXJjaCgpO1xuXG4gICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHRoaXMuI3BlcmZvcm1TZWFyY2goKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IChcbiAgICAgICAgICByZXN1bHQ/Lml0ZW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfCB1bmRlZmluZWRcbiAgICAgICAgKT8uZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0gJiYgdGhpcy5kZXNjcmlwdG9yUHJvcGVydHkgaW4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzID1cbiAgICAgICAgICBpdGVtcz8ubWFwKChyLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgZWxlbWVudElkOiBgJHt0aGlzLnJlc3VsdHNMaXN0SWR9LWl0ZW0tJHtpfWAsXG4gICAgICAgICAgICAgIGRhdGE6IHIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KSB8fCBbXTtcblxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHNDb3VudCA9IHJlc3VsdD8udG90YWxDb3VudCB8fCAwO1xuXG4gICAgICAgIHRoaXMuI2Rpc3BsYXlSZXN1bHRzRHJvcGRvd24oKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU2VhcmNoaW5nQXN5bmMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgI2Rpc3BsYXlSZXN1bHRzRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5oaWdobGlnaHRUZXh0ID0gdGhpcy4jZ2V0SGlnaGxpZ2h0VGV4dCh0aGlzLnNlYXJjaFRleHQpO1xuICAgIHRoaXMuI3JlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgIHRoaXMuI3JlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICBpZiAodGhpcy5zZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgIH1cblxuICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIFNhZmV0eSBjaGVja1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAvLyBMZXQgdGhlIHJlc3VsdHMgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgICAgICB0aGlzLiNhZmZpeGVyLnJlYWZmaXgoKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy4jaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jb3BlbkRyb3Bkb3duKCk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAjcGVyZm9ybVNlYXJjaCgpOiBPYnNlcnZhYmxlPFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEFzeW5jRGlzYWJsZWQgJiYgdGhpcy5zZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VhcmNoQXN5bmNBcmdzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgPSB7XG4gICAgICAgIGRpc3BsYXlUeXBlOiAncG9wb3ZlcicsXG4gICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KHNlYXJjaEFzeW5jQXJncyk7XG5cbiAgICAgIHJldHVybiB0aGlzLmFsbG93QW55VmFsdWUoKVxuICAgICAgICA/IHRoaXMuI2NvbWJpbmVTZWFyY2hUZXh0V2l0aFJlc3VsdChzZWFyY2hBc3luY0FyZ3MpXG4gICAgICAgIDogc2VhcmNoQXN5bmNBcmdzLnJlc3VsdD8ucGlwZSh0YWtlKDEpKSB8fCBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoT3JEZWZhdWx0KHRoaXMuc2VhcmNoVGV4dCwgdGhpcy5kYXRhLCB7XG4gICAgICBjb250ZXh0OiAncG9wb3ZlcicsXG4gICAgfSk7XG5cbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiByZXN1bHQsIHRvdGFsQ291bnQ6IHJlc3VsdC5sZW5ndGggfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20ocmVzdWx0KS5waXBlKFxuICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4geyBpdGVtcywgdG90YWxDb3VudDogaXRlbXMubGVuZ3RoIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgI2NvbWJpbmVTZWFyY2hUZXh0V2l0aFJlc3VsdChcbiAgICBzZWFyY2hBc3luY0FyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyxcbiAgKTogT2JzZXJ2YWJsZTxTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY1Jlc3VsdD4ge1xuICAgIGNvbnN0IHNlYXJjaFRleHRJdGVtID0geyBbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldOiB0aGlzLnNlYXJjaFRleHQgfTtcbiAgICBjb25zdCBzZWFyY2hUZXh0UmVzdWx0ID0geyBpdGVtczogW3NlYXJjaFRleHRJdGVtXSwgdG90YWxDb3VudDogMSB9O1xuXG4gICAgaWYgKHNlYXJjaEFzeW5jQXJncy5yZXN1bHQpIHtcbiAgICAgIHJldHVybiBzZWFyY2hBc3luY0FyZ3MucmVzdWx0LnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHJlc3VsdC5pdGVtcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10pLnNvbWUoXG4gICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XSA9PT0gdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbmNsdWRlIGEgcmVzdWx0IGZvciB0aGUgY3VycmVudCBzZWFyY2ggdGV4dCBhcyB0aGUgZmlyc3Qgb3B0aW9uXG4gICAgICAgICAgLy8gaWYgbm8gZXhhY3QgbWF0Y2ggaXMgZm91bmQgaW4gdGhlIHJlc3VsdHMuXG4gICAgICAgICAgcmV0dXJuIHsgLi4ucmVzdWx0LCBpdGVtczogW3NlYXJjaFRleHRJdGVtLCAuLi5yZXN1bHQuaXRlbXNdIH07XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBEaXNwbGF5IHRoZSBjdXJyZW50IHNlYXJjaCB0ZXh0IGltbWVkaWF0ZWx5IHdoaWxlIGFzeW5jIHJlc3VsdHMgbG9hZC5cbiAgICAgICAgc3RhcnRXaXRoPFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0PihzZWFyY2hUZXh0UmVzdWx0KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHNlYXJjaFRleHRSZXN1bHQpO1xuICB9XG5cbiAgI2NhbmNlbEN1cnJlbnRTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRTZWFyY2hTdWIpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRTZWFyY2hTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI2N1cnJlbnRTZWFyY2hTdWIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRleHQgdG8gaGlnaGxpZ2h0IGJhc2VkIG9uIGV4YWN0IG1hdGNoZXMsIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hlcywgYW5kIG1hdGNoZXMgZm9yIGNvcnJlc3BvbmRpbmcgZGlhY3JpdGljYWwgY2hhcmFjdGVycyAoYSB3aWxsIG1hdGNoIMOgKS5cbiAgICovXG4gICNnZXRIaWdobGlnaHRUZXh0KHNlYXJjaFRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHRTZWFyY2hUZXh0KCkpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2hUZXh0ID0gbm9ybWFsaXplRGlhY3JpdGljcyhzZWFyY2hUZXh0KVxuICAgICAgICAudG9Mb2NhbGVVcHBlckNhc2UoKVxuICAgICAgICAudHJpbSgpO1xuICAgICAgaWYgKCFub3JtYWxpemVkU2VhcmNoVGV4dCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGxldCBtYXRjaGVzVG9IaWdobGlnaHQ6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaFJlc3VsdHNbaV0uZGF0YVt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV1cbiAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgIC50b0xvY2FsZVVwcGVyQ2FzZSgpIGFzIHN0cmluZztcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERhdGFWYWx1ZSA9IG5vcm1hbGl6ZURpYWNyaXRpY3ModmFsdWUpO1xuXG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIChpbmRleCA9IG5vcm1hbGl6ZWREYXRhVmFsdWUuaW5kZXhPZihub3JtYWxpemVkU2VhcmNoVGV4dCwgb2Zmc2V0KSkgPlxuICAgICAgICAgIC0xXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IG1hdGNoZWRTdHJpbmcgPSB2YWx1ZS5zbGljZShpbmRleCwgaW5kZXggKyBzZWFyY2hUZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ID0gaW5kZXggKyBzZWFyY2hUZXh0Lmxlbmd0aDtcbiAgICAgICAgICBtYXRjaGVzVG9IaWdobGlnaHQgPSBtYXRjaGVzVG9IaWdobGlnaHQuY29uY2F0KG1hdGNoZWRTdHJpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBhbnkgZHVwbGljYXRlcyBmcm9tIHRoZSBhcnJheS5cbiAgICAgIHJldHVybiBbLi4ubmV3IFNldChtYXRjaGVzVG9IaWdobGlnaHQpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAjc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHRzLmZpbmQoKHIpID0+IHIuZWxlbWVudElkID09PSBpZCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGE7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBkYXRhW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XTtcbiAgICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUgPSBkYXRhO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7IHNlbGVjdGVkSXRlbTogZGF0YSB9KTtcbiAgICB9XG4gIH1cblxuICAjb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jb3ZlcmxheSAmJiB0aGlzLnJlc3VsdHNUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy4jZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLndyYXBwZXJDbGFzcyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy4jekluZGV4KSB7XG4gICAgICAgIHRoaXMuI3pJbmRleC5waXBlKHRha2VVbnRpbChvdmVybGF5LmNsb3NlZCkpLnN1YnNjcmliZSgoekluZGV4KSA9PiB7XG4gICAgICAgICAgb3ZlcmxheS5jb21wb25lbnRSZWYuaW5zdGFuY2UuekluZGV4ID0gekluZGV4LnRvU3RyaW5nKDEwKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5yZXN1bHRzVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLiNvdmVybGF5ID0gb3ZlcmxheTtcbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy4jdXBkYXRlQXJpYUNvbnRyb2xzKCk7XG4gICAgICB0aGlzLiNpbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICB0aGlzLiNhbm5vdW5jZVJlc3VsdHMoKTtcbiAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gICNjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0U2VhcmNoKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI3JlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB0aGlzLiN1cGRhdGVBcmlhQ29udHJvbHMoKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICAjc2V0QWN0aXZlRGVzY2VuZGFudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID1cbiAgICAgIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXhdO1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQgJiYgdGhpcy5pbnB1dERpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5zZXRBY3RpdmVEZXNjZW5kYW50KGFjdGl2ZUVsZW1lbnQuaWQpO1xuICAgIH1cbiAgfVxuXG4gICNyZW1vdmVBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnNldEFjdGl2ZURlc2NlbmRhbnQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUFyaWFDb250cm9scygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dERpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5zZXRBcmlhQ29udHJvbHModGhpcy4jb3ZlcmxheT8uaWQgfHwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgI3Jlc2V0U2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuaGlnaGxpZ2h0VGV4dCA9IFtdO1xuICAgIHRoaXMuI3JlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI3JlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB0aGlzLiNpbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgdGhpcy4jdXBkYXRlSXNSZXN1bHRzVmlzaWJsZSgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI2FkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLnJlc3VsdHNSZWYpIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXREcm9wZG93bldpZHRoKFxuICAgICAgICAgICAgdGhpcy4jZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c1JlZixcbiAgICAgICAgICAgICEhdGhpcy4jaW5wdXRCb3hIb3N0U3ZjLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNvdmVybGF5KSB7XG4gICAgICB0aGlzLiNvdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2FmZml4ZXIgJiYgdGhpcy5yZXN1bHRzUmVmKSB7XG4gICAgICBjb25zdCBhZmZpeGVyID0gdGhpcy4jYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5yZXN1bHRzUmVmKTtcblxuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RHJvcGRvd25XaWR0aChcbiAgICAgICAgdGhpcy4jZWxlbWVudFJlZixcbiAgICAgICAgdGhpcy5yZXN1bHRzUmVmLFxuICAgICAgICAhIXRoaXMuI2lucHV0Qm94SG9zdFN2YyxcbiAgICAgICk7XG5cbiAgICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgICBwbGFjZW1lbnQ6ICdiZWxvdycsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhZmZpeGVyID0gYWZmaXhlcjtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjaW5pdE1lc3NhZ2VTdHJlYW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgIHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1YiA9IHRoaXMubWVzc2FnZVN0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgIGNhc2UgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuQ2xvc2VEcm9wZG93bjpcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuUmVwb3NpdGlvbkRyb3Bkb3duOlxuICAgICAgICAgICAgLy8gU2V0dGltZW91dCB3YWl0cyBmb3IgY2hhbmdlcyBpbiBET00gKGUuZy4sIHRva2VucyBiZWluZyByZW1vdmVkKVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmICh0aGlzLiNhZmZpeGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI2luaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgLy8gV2FpdCBmb3IgZHJvcGRvd24gZWxlbWVudHMgdG8gcmVuZGVyLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgICAgdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzID1cbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHModGhpcy4jb3ZlcmxheSk7XG4gICAgICAgIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFRhYkluZGV4KGVsLCAtMSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiNhZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgdGhpcy4jYW5ub3VuY2VSZXN1bHRzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAjZ2V0QWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXhdO1xuICB9XG5cbiAgI3JlbW92ZUZvY3VzZWRDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlbW92ZUNTU0NsYXNzKFxuICAgICAgICB0aGlzLiNvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4XSxcbiAgICAgICAgJ3NreS1hdXRvY29tcGxldGUtZGVzY2VuZGFudC1mb2N1cycsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNhZGRGb2N1c2VkQ2xhc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5hZGRDU1NDbGFzcyhcbiAgICAgICAgdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleF0sXG4gICAgICAgICdza3ktYXV0b2NvbXBsZXRlLWRlc2NlbmRhbnQtZm9jdXMnLFxuICAgICAgKTtcbiAgICAgIHRoaXMuI3NldEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlRGVmYXVsdFNlYXJjaE9wdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgZGVmYXVsdCBzZWFyY2ggaWYgaXQgaXMgd2hhdCBpcyBiZWluZyB1c2VkLlxuICAgIGlmICh0aGlzLnNlYXJjaCAhPT0gdGhpcy5zZWFyY2hPckRlZmF1bHQpIHtcbiAgICAgIHRoaXMuc2VhcmNoT3JEZWZhdWx0ID0gc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNSZXN1bHRzVmlzaWJsZSA9XG4gICAgICAhIXRoaXMuc2VhcmNoVGV4dCAmJlxuICAgICAgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSB8fCB0aGlzLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMCk7XG4gICAgaWYgKGlzUmVzdWx0c1Zpc2libGUgIT09IHRoaXMuI2lzUmVzdWx0c1Zpc2libGUuZ2V0VmFsdWUoKSkge1xuICAgICAgdGhpcy4jaXNSZXN1bHRzVmlzaWJsZS5uZXh0KGlzUmVzdWx0c1Zpc2libGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gIGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZVwiXG4gIHJvbGU9XCJjb21ib2JveFwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiXG4gICAgaXNPcGVuICYmXG4gICAgKHNob3dBY3Rpb25zQXJlYSB8fCBkcm9wZG93bkhpbnRUZXh0IHx8IChpc1Jlc3VsdHNWaXNpYmxlIHwgYXN5bmMpKVxuICBcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIlxuICAgIGlzT3BlbiAmJlxuICAgIChzaG93QWN0aW9uc0FyZWEgfHwgZHJvcGRvd25IaW50VGV4dCB8fCAoaXNSZXN1bHRzVmlzaWJsZSB8IGFzeW5jKSlcbiAgICAgID8gcmVzdWx0c0xpc3RJZFxuICAgICAgOiBudWxsXG4gIFwiXG4gIFthdHRyLmlkXT1cInJlc3VsdHNXcmFwcGVySWRcIlxuPlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzdWx0c1RlbXBsYXRlUmVmPlxuICA8IS0tIFdlIGRvIG5vdCB3YW50IHRoZSBibHVyIHRvIGZpcmUgaGVyZSBzbyB0aGF0IHRoZSBkcm9wZG93biBkb2VzIG5vdCBjbG9zZS4gVGhpcyBpcyB3aHkgd2UgYXJlIHByZXZlbnRpbmcgdGhlIG1vdXNlZG93biBkZWZhdWx0LiAtLT5cbiAgPGRpdlxuICAgICNyZXN1bHRzUmVmXG4gICAgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLXJlc3VsdHMtY29udGFpbmVyXCJcbiAgICBbYXR0ci5pZF09XCJyZXN1bHRzTGlzdElkXCJcbiAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktc2hhZG93JzogJ2RlZmF1bHQnLCAnc2t5LWVsZXZhdGlvbi00JzogJ21vZGVybicgfVwiXG4gICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgPlxuICAgIEBpZiAoaXNTZWFyY2hpbmdBc3luYyAmJiAhYWxsb3dBbnlWYWx1ZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1yZXN1bHRzLXdhaXRpbmdcIj5cbiAgICAgICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwidHJ1ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAoaXNSZXN1bHRzVmlzaWJsZSB8IGFzeW5jKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNreS1hdXRvY29tcGxldGUtcmVzdWx0c1wiXG4gICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgID5cbiAgICAgICAgICBAZm9yIChyZXN1bHQgb2Ygc2VhcmNoUmVzdWx0czsgdHJhY2sgcmVzdWx0LmRhdGE7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAoIXNlYXJjaFJlc3VsdHNMaW1pdCB8fCBpIDwgc2VhcmNoUmVzdWx0c0xpbWl0KSAmJlxuICAgICAgICAgICAgICAhKGVuYWJsZVNob3dNb3JlICYmIGkgPj0gNSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI3NlYXJjaFJlc3VsdEVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLXJlc3VsdFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzRWxlbWVudEZvY3VzZWQoc2VhcmNoUmVzdWx0RWwpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWRlc2NyaXB0b3ItdmFsdWVdPVwicmVzdWx0LmRhdGFbZGVzY3JpcHRvclByb3BlcnR5XVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwicmVzdWx0LmVsZW1lbnRJZFwiXG4gICAgICAgICAgICAgICAgW3NreUhpZ2hsaWdodF09XCJoaWdobGlnaHRUZXh0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZXN1bHRDbGljayhyZXN1bHQuZWxlbWVudElkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vtb3ZlKT1cIm9uUmVzdWx0TW91c2VNb3ZlKGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFJlc3VsdFRlbXBsYXRlIHx8IGRlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiByZXN1bHQuZGF0YSB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGlzU2VhcmNoaW5nQXN5bmMgJiYgYWxsb3dBbnlWYWx1ZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1yZXN1bHRzLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzZWFyY2hSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktYXV0b2NvbXBsZXRlLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBub1Jlc3VsdHNGb3VuZFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICgnc2t5dXhfYXV0b2NvbXBsZXRlX25vX3Jlc3VsdHMnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGRyb3Bkb3duSGludFRleHQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1hdXRvY29tcGxldGUtZHJvcGRvd24taGludC10ZXh0IHNreS1mb250LWRlZW1waGFzaXplZFwiPlxuICAgICAgICAgIHt7IGRyb3Bkb3duSGludFRleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKHNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1hY3Rpb25zXCI+XG4gICAgICAgICAgQGlmIChlbmFibGVTaG93TW9yZSAmJiAoIXNlYXJjaFRleHQgfHwgc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1hdXRvY29tcGxldGUtYWN0aW9uIHNreS1hdXRvY29tcGxldGUtYWN0aW9uLW1vcmUgc2t5LWJ0biBza3ktYnRuLWxpbmtcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vcmVCdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc3luY1xuICAgICAgICAgICAgICAgICAgfCBza3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0Rpc2FibGVkOiBzZWFyY2hBc3luY0Rpc2FibGVkXG4gICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgIXNlYXJjaFRleHRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAge3sgJ3NreXV4X2F1dG9jb21wbGV0ZV9zaG93X2FsbCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIChzZWFyY2hBc3luY1xuICAgICAgICAgICAgICAgICAgfCBza3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0Rpc2FibGVkOiBzZWFyY2hBc3luY0Rpc2FibGVkKSAmJlxuICAgICAgICAgICAgICAgICFzZWFyY2hUZXh0XG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAnc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfYWxsX2NvdW50J1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgICAgIDogKGRhdGEubGVuZ3RoIHwgc2t5TnVtZXJpYzogeyB0cnVuY2F0ZTogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAnc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfbWF0Y2hlc19jb3VudCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICAgICAgICA6IChzZWFyY2hSZXN1bHRzQ291bnQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRhdGEubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogKHNlYXJjaFJlc3VsdHNDb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TnVtZXJpYzogeyB0cnVuY2F0ZTogZmFsc2UgfSkpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2VhcmNoVGV4dCAmJiBzZWFyY2hSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktYXV0b2NvbXBsZXRlLWFjdGlvbnMtbm8tcmVzdWx0c1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgbm9SZXN1bHRzRm91bmRUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAoJ3NreXV4X2F1dG9jb21wbGV0ZV9ub19yZXN1bHRzJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHNob3dBZGRCdXR0b24pIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgI2FkZEJ1dHRvbkVsXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1hY3Rpb24gc2t5LWF1dG9jb21wbGV0ZS1hY3Rpb24tYWRkIHNreS1idG4gc2t5LWJ0bi1saW5rXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtjbGFzcy5mb2N1c2VkXT1cImlzRWxlbWVudEZvY3VzZWQoYWRkQnV0dG9uRWwpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImFkZFwiIC8+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF9hdXRvY29tcGxldGVfYWRkJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VhcmNoUmVzdWx0VGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIHt7IGl0ZW1bZGVzY3JpcHRvclByb3BlcnR5XSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyIdModule, SkyNumericModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyAutocompleteModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteModule, declarations: [SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe], imports: [CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule], exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteModule, imports: [CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQXNCcEUsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsaUJBbEI5Qix3QkFBd0I7WUFDeEIsNkJBQTZCO1lBQzdCLHNDQUFzQyxhQUd0QyxZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxzQkFBc0I7WUFDdEIsYUFBYTtZQUNiLFdBQVc7WUFDWCx3QkFBd0I7WUFDeEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxhQUFhLGFBRUwsd0JBQXdCLEVBQUUsNkJBQTZCOytHQUV0RCxxQkFBcUIsWUFiOUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2Qsc0JBQXNCO1lBQ3RCLGFBQWE7WUFDYixXQUFXO1lBQ1gsd0JBQXdCO1lBQ3hCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsYUFBYTs7MkZBSUoscUJBQXFCO2tCQXBCakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4Qiw2QkFBNkI7d0JBQzdCLHNDQUFzQztxQkFDdkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsNkJBQTZCLENBQUM7aUJBQ25FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFmZml4TW9kdWxlLCBTa3lJZE1vZHVsZSwgU2t5TnVtZXJpY01vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUZXh0SGlnaGxpZ2h0TW9kdWxlLCBTa3lXYWl0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZFBpcGUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtZGlzYWJsZWQucGlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsXG4gICAgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZFBpcGUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5VGV4dEhpZ2hsaWdodE1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lOdW1lcmljTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVdhaXRNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lBdXRvY29tcGxldGVDb21wb25lbnQsIFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlTW9kdWxlIHt9XG4iXX0=","/**\n * Clone the country data for each component instance to avoid overwriting\n * the global country data.\n */\nexport function cloneCountryData(data) {\n const clone = [...data];\n return clone.map((country) => {\n const mapped = {\n iso2: country.iso2,\n dialCode: country.dialCode,\n name: country.name,\n priority: country.priority,\n };\n if (country.areaCodes) {\n mapped.areaCodes = [...country.areaCodes];\n }\n return mapped;\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUtY291bnRyeS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jbG9uZS1jb3VudHJ5LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWU7SUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUEyQjtZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDM0IsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb3VudHJ5IH0gZnJvbSAnaW50bC10ZWwtaW5wdXQvZGF0YSc7XG5cbmltcG9ydCB0eXBlIHsgU2t5Q291bnRyeUZpZWxkQ291bnRyeSB9IGZyb20gJy4vdHlwZXMvY291bnRyeSc7XG5cbi8qKlxuICogQ2xvbmUgdGhlIGNvdW50cnkgZGF0YSBmb3IgZWFjaCBjb21wb25lbnQgaW5zdGFuY2UgdG8gYXZvaWQgb3ZlcndyaXRpbmdcbiAqIHRoZSBnbG9iYWwgY291bnRyeSBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVDb3VudHJ5RGF0YShkYXRhOiBDb3VudHJ5W10pOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5W10ge1xuICBjb25zdCBjbG9uZSA9IFsuLi5kYXRhXTtcblxuICByZXR1cm4gY2xvbmUubWFwKChjb3VudHJ5KSA9PiB7XG4gICAgY29uc3QgbWFwcGVkOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5ID0ge1xuICAgICAgaXNvMjogY291bnRyeS5pc28yLFxuICAgICAgZGlhbENvZGU6IGNvdW50cnkuZGlhbENvZGUsXG4gICAgICBuYW1lOiBjb3VudHJ5Lm5hbWUsXG4gICAgICBwcmlvcml0eTogY291bnRyeS5wcmlvcml0eSxcbiAgICB9O1xuXG4gICAgaWYgKGNvdW50cnkuYXJlYUNvZGVzKSB7XG4gICAgICBtYXBwZWQuYXJlYUNvZGVzID0gWy4uLmNvdW50cnkuYXJlYUNvZGVzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGVkO1xuICB9KTtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const SKY_COUNTRY_FIELD_CONTEXT = new InjectionToken('SkyCountryFieldContext');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC1jb250ZXh0LXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC90eXBlcy9jb3VudHJ5LWZpZWxkLWNvbnRleHQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUNwQyxJQUFJLGNBQWMsQ0FBeUIsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUNvdW50cnlGaWVsZENvbnRleHQgfSBmcm9tICcuL2NvdW50cnktZmllbGQtY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBTS1lfQ09VTlRSWV9GSUVMRF9DT05URVhUID1cbiAgbmV3IEluamVjdGlvblRva2VuPFNreUNvdW50cnlGaWVsZENvbnRleHQ+KCdTa3lDb3VudHJ5RmllbGRDb250ZXh0Jyk7XG4iXX0=","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NgControl, NgModel, UntypedFormControl, } from '@angular/forms';\nimport intlTelInput from 'intl-tel-input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { cloneCountryData } from './clone-country-data';\nimport { SKY_COUNTRY_FIELD_CONTEXT } from './types/country-field-context-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/forms\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"../autocomplete/autocomplete.component\";\nimport * as i5 from \"../autocomplete/autocomplete-input.directive\";\nimport * as i6 from \"@skyux/i18n\";\nconst DEFAULT_COUNTRY_CODE = 'us';\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\nlet uniqueId = 0;\nexport class SkyCountryFieldComponent {\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n set defaultCountry(value) {\n if (!value) {\n value = DEFAULT_COUNTRY_CODE;\n }\n if (value !== this.#_defaultCountry) {\n this.#_defaultCountry = value.toLowerCase();\n this.#defaultCountryData = this.countries.find((country) => country.iso2 === this.#_defaultCountry);\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n get defaultCountry() {\n return this.#_defaultCountry;\n }\n /**\n * Whether to disable the country field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(isDisabled) {\n this.#_disabled = isDisabled ?? false;\n if (isDisabled) {\n this.countrySearchFormControl.disable();\n }\n else {\n this.countrySearchFormControl.enable();\n }\n this.#changeDetector.markForCheck();\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n set supportedCountryISOs(value) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n this.#_supportedCountryISOs = value;\n this.#setupCountries();\n }\n get supportedCountryISOs() {\n return this.#_supportedCountryISOs || [];\n }\n set selectedCountry(newCountry) {\n if (!this.#countriesAreEqual(this.selectedCountry, newCountry)) {\n const newCountryIso = newCountry?.iso2;\n if (newCountryIso) {\n const isoCountry = this.countries.find((country) => country.iso2 === newCountryIso);\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n this.#_selectedCountry = newCountry;\n this.#sortCountriesWithSelectedAndDefault(newCountry);\n this.#internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n if (!this.#isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n this.selectedCountryChange.emit(newCountry);\n }\n else if (this.#ngControl?.control) {\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n this.#ngControl.control.markAsPristine();\n }\n this.#isInitialChange = false;\n /**\n * The if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n }\n else if (!(this.#ngControl instanceof NgModel) || newCountry !== null) {\n this.#isInitialChange = false;\n }\n }\n get selectedCountry() {\n return this.#_selectedCountry;\n }\n #changeDetector;\n #defaultCountryData;\n #injector;\n #internalFormChange;\n #isInitialChange;\n #ngControl;\n #ngUnsubscribe;\n #_defaultCountry;\n #_disabled;\n #_selectedCountry;\n #_supportedCountryISOs;\n constructor(changeDetector, injector, inputBoxHostSvc) {\n this.inputBoxHostSvc = inputBoxHostSvc;\n /**\n * Fires when the selected country changes.\n */\n this.selectedCountryChange = new EventEmitter();\n /**\n * Fires when the country field is focused out.\n * @internal\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n this.countryFieldFocusout = new EventEmitter();\n this.countries = [];\n this.searchTextMinimumCharacters = 2;\n this.context = inject(SKY_COUNTRY_FIELD_CONTEXT, {\n optional: true,\n });\n this.#internalFormChange = false;\n this.#isInitialChange = true;\n this.#ngControl = null;\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n this.onChange = (value) => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouched = () => { };\n this.#changeDetector = changeDetector;\n this.#injector = injector;\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n this.#setupCountries();\n this.countrySearchFormControl = new UntypedFormControl();\n }\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n ngOnInit() {\n this.#updateInputBox();\n this.#ngControl = this.#injector.get(NgControl, null);\n if (this.#ngControl) {\n this.#ngControl.valueAccessor = this;\n }\n else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.#isInitialChange = false;\n }\n if (!this.defaultCountry) {\n this.defaultCountry = DEFAULT_COUNTRY_CODE;\n }\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.#internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n this.#changeDetector.markForCheck();\n }\n /**\n * Angular lifecycle hook for when the component is destructed.\n * @internal\n */\n ngOnDestroy() {\n this.selectedCountryChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n onAutocompleteBlur() {\n this.onTouched();\n }\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n onCountrySelected(newCountry) {\n if (newCountry.selectedItem) {\n this.writeValue(this.countries.find((countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2));\n }\n else {\n this.writeValue(undefined);\n }\n }\n /**\n * Called when the Autocomplete textarea loses focus\n * @internal\n */\n onAutocompleteFocusout(e) {\n this.countryFieldFocusout.emit(e);\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Allows Angular to disable the input.\n setDisabledState(disabled) {\n this.disabled = disabled;\n }\n validate(control) {\n if (control.value) {\n if ((this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)) {\n return { unsupportedCountry: true };\n }\n }\n return null;\n }\n writeValue(value) {\n this.selectedCountry = value;\n this.#changeDetector.markForCheck();\n }\n onFocus($event) {\n $event.target.select();\n }\n #countriesAreEqual(country1, country2) {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n #countriesEqual(a, b) {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n #setupCountries() {\n this.countries = cloneCountryData(intlTelInput.getCountryData());\n /* istanbul ignore else */\n if (!this.context?.inPhoneField) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter((country) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n });\n }\n }\n #sortCountriesWithSelectedAndDefault(selectedCountry) {\n let selectedCountryIndex;\n let selectedCountryData;\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (((this.#defaultCountryData &&\n this.#countriesEqual(a, this.#defaultCountryData)) ||\n (a.name && b.name && a.name < b.name)) &&\n (!this.#defaultCountryData ||\n !this.#countriesEqual(this.#defaultCountryData, b))) {\n return -1;\n }\n else {\n return 1;\n }\n });\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the official data from the\n // library and not the data provided by the user on initialization of the component\n const foundCountry = this.countries.find((country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase());\n if (foundCountry) {\n selectedCountryData = foundCountry;\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n }\n this.countries = sortedNewCountries;\n }\n #updateInputBox() {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.SkyInputBoxHostService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyCountryFieldComponent, isStandalone: false, selector: \"sky-country-field\", inputs: { autocompleteAttribute: \"autocompleteAttribute\", defaultCountry: \"defaultCountry\", disabled: \"disabled\", supportedCountryISOs: \"supportedCountryISOs\" }, outputs: { selectedCountryChange: \"selectedCountryChange\", countryFieldFocusout: \"countryFieldFocusout\" }, providers: [SKY_COUNTRY_FIELD_VALIDATOR], viewQueries: [{ propertyName: \"countrySearchAutocompleteDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <span\\n class=\\\"sky-country-field-container\\\"\\n [ngClass]=\\\"{\\n 'sky-country-field-disabled': disabled\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"inputBoxHostSvc?.labelId ?? inputId\\\"\\n [data]=\\\"countries\\\"\\n [dropdownHintText]=\\\"\\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\\n \\\"\\n [propertiesToSearch]=\\\"['name', 'iso2']\\\"\\n [searchResultTemplate]=\\\"countrySearchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n (selectionChange)=\\\"onCountrySelected($event)\\\"\\n >\\n <div class=\\\"sky-country-field-input\\\">\\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\\n <textarea\\n class=\\\"sky-form-control\\\"\\n name=\\\"selectedCountry\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"\\n context?.inPhoneField\\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n : inputBoxHostSvc?.labelText\\n ? undefined\\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"inputId\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [formControl]=\\\"countrySearchFormControl\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (focusout)=\\\"onAutocompleteFocusout($event)\\\"\\n ></textarea>\\n </div>\\n </sky-autocomplete>\\n </span>\\n</ng-template>\\n\\n<ng-template #countrySearchResultTemplate let-item=\\\"item\\\">\\n <div class=\\\"sky-country-field-search-result-flag\\\">\\n <div [ngClass]=\\\"'iti__flag iti__' + item.iso2.toLowerCase()\\\"></div>\\n </div>\\n <div class=\\\"sky-country-field-search-result-info\\\">\\n {{ item.name }}\\n @if (context?.inPhoneField) {\\n <span\\n class=\\\"sky-font-deemphasized sky-country-field-search-result-dial-code\\\"\\n >\\n {{ item.dialCode }}\\n </span>\\n }\\n </div>\\n</ng-template>\\n\", styles: [\":root{--iti-hover-color: rgba(0, 0, 0, .05);--iti-border-color: #ccc;--iti-dialcode-color: #999;--iti-dropdown-bg: white;--iti-spacer-horizontal: 8px;--iti-flag-height: 12px;--iti-flag-width: 16px;--iti-border-width: 1px;--iti-arrow-height: 4px;--iti-arrow-width: 6px;--iti-triangle-border: calc(var(--iti-arrow-width) / 2);--iti-arrow-padding: 6px;--iti-arrow-color: #555;--iti-path-flags-1x: url(data:image/webp;base64,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);--iti-path-flags-2x: url(data:image/webp;base64,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);--iti-path-globe-1x: url(data:image/webp;base64,UklGRvoBAABXRUJQVlA4TO4BAAAvE8AEENXIkiRZtZu7H33ql07cqTlilvbz9i4tosSMZma27zWzHRGyIEk2bcu2bdvGn23btm3btm3btm0/m5PqAEkLTYYwxTPAW84Tl6wNgmvIqptKKH9nYAr4xle+TML/BDI2LSg6QHKT/nngE4+ZMIUePUGeTvly+YoV8F1DtkGUzlfst2LUKTX6PaWZeMWiDqN6PgcciGa2boYPmxlR5bIIL5l6RVyDYMXmY1f10pGb7PmAN6sRTBTN3N9C9Zi/LbVhlL+Oo2M7RxoE/a4+/nDjeBrSVwtGYXGGMIrUbJzCU1LgFftP9K1hkpOXmBim30cIJ1hgOkSwMhYCMgmaw7rXcfT5/wQcFhrcuaOEBuq5ytYblLPBEhV0Aq/ZqcDn/6RUDgrUL0/0UZgK/p+rR8/4nZAqFfuXA6TbtFQyJSe4gpj6T19a5q+HLEkox0mlWXvbIGbuJw28fkozjybhT5oXHNY4py5rH1CflcyeB1fId9wXDAvFmz/8m6AE/8TgYzEVGoRMCKUhND7PQho7jGo1utkdV559cm3llGFs3sxBZrmGbEExop91jyfg5G7BmCCi6evNaSDFBrG3vyaRNzt+HJ9kQpVbgj+xFUoNgr3abxqGfH3WfQq9lp5UZPRW74ZbFgpq+EGo67dUAQ==);--iti-path-globe-2x: url(data:image/webp;base64,UklGRlwFAABXRUJQVlA4TE8FAAAvJ8AJEEfHKJIkKdmcgvjj3wwill7QwKhtJEnOnIDmv/zJLAdGbSNJcuYENP/lT2Y5OGwjSZHmtL3wTFl9tp8SM/9xz47Ctm2b7mnwDggKFNd77jgHyxhIYVvLQBDEHEBKRQBIOXzQpAhiBQCIAMaIAACHhAQHIMFhhRkSRt1hlRIYDAZDhiE3CVrBS2gFkZGRYdA6mjQQBYAv6yOZSVAQCoPWMCWBIBQKwtCCUBANFARBlChBfPCG/dZUjxJECYJQECU+KGFQEC1YdN/NSUNRTDm4osQBGUwFjDFCBOYRo9QWxAmPlKQECRERMbVLCZapZ0owSrnz3hb6/P8auL9vAwr7/xeS5EV9q2sWU2vbtjla27Zt28akprq6a3bPtm2np87eJIvePUzd9fvoXkT0fwK4Vwdo8t6qyQW+O7Tn4k7NAdvi/jMR0fGpwhglhZBKm3B0pzvg3JcDrUuMEn7SDaUIRTLhhqb/AbDvw+bbJToMEq5QflFfv+QhJVPxcmkm/Ih9TzZfFxk/CJUnP7zMykJqnhsqQ51M6tTv2Pdgc/GKCuKmaI96HlhVAJy4vWVWWgRSfYJ9l4jv+4aB0F15Td3kH1YW4DiMnEJHGSaFOoOdw4LxOhCqPTf0JvLys6I8Wv/9BeeuhEkZfE+UZfNSOumqT+CArgHwbBHZw+ZB00AGeiYxIKKudH2zDxg97VK7FxdO6+9Pmt3l4J/bZR58rtyEOY6dtdhcMbPh2jsyNKr3mNnDy+c8Pig0od5wGXakg7DYgYgfU5648s0fC0Ljv9SigQVrHwUafXVgmNE92zBBBeYjsHn5L6Emz/6776EnxwJUsqKADMDmq8fG/T16fujr7lhknhheLG4PPwFD15IXs2xWFWBZVj4ndDW+fDItPRncssi75Fxv/iHQQL2PDbkg4k/zP/BfgfR1axxy59PM/IYdsypZWUCUiTlck2/zTz4fm3LzqkNlxxnzW+A4fK4vkbNrIbn7bgVoKn3djQu90krrllynQ1g7v2rpjUYsfeR6tdLSaqV5w5fR6E5+k8BVT/0aqqSXDAdV4wvpCplTCJnbFTLb9dTEHjoQQiTMC7Ah3PPuwbffOfD+xP4d3s7uMGDC+wcOvrs7kVKTZ6m4EMIVfn1O61JyrnuU3EM3A3znefrp142f5cnmnDXNyXecPFYUYNt2pVUlvot//qWFDszz9aTrCuGpQVX4Wn+KAw6rCrAgw/eqLZXQVQfmXZ5QnnCF2wrwdlJ5F8DhC1MP/itRnhv+wmHji7hpT+x0tekziRw7jxUF2LZznX3xOydH3e5fVhYWO5QOlClPzYFX9EMD65P9bBHZ16fLq7dHfrlal5vO2LxuKkTcfABvjZDxwsWvf9hs7pCv2ry5cowvB2/8iosq5YraWHw7JCxLyaAWZPoUrilMaRMKo8WwpQv0z2AXqnLzLA42H5gKEVcTuM76RfDtpVrzh9b5oTp0e5SI+Topy78hAzFm6QqRMN2gugNYLH0EoHF6Pyw3vm+OYQMRlwPpCd+sAep/WQ1OPGZZ13lO0ugpE0+m1xGRbdNKe67wzTN3Nouw3yfw03WH+nrnqUAnEul5YOXA5o20L4SnAiXjoX6f7Pm6RIeBl14EGe4a8VLad4UnvZTwysxR2DtOumEiUOpliLi7FWNb2vOEK4QQnnyoIav+Ko9XhGbUF1gZ7tWKcVBLX+T05HkOGmn0iA4WjsW9Ww6ny3WiTAjhyd41WWfGrv4sAof7t/l+ppGJlFeR7oBVr4kF2BYP0oYjDxsZpjuTsQDHsXjAUYxrrwwe9gGWRRRZ3CcA);--iti-flag-sprite-width: 3904px;--iti-flag-sprite-height: 12px;--iti-mobile-popup-margin: 30px}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti__a11y-text{width:1px;height:1px;clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute}.iti input.iti__tel-input,.iti input.iti__tel-input[type=text],.iti input.iti__tel-input[type=tel]{position:relative;z-index:0;margin:0!important}.iti__country-container{position:absolute;top:0;bottom:0;padding:var(--iti-border-width)}.iti__selected-country{z-index:1;position:relative;display:flex;align-items:center;height:100%;background:none;border:0;margin:0;padding:0;font-family:inherit;font-size:inherit;color:inherit;border-radius:0;font-weight:inherit;line-height:inherit;text-decoration:none}.iti__selected-country-primary{display:flex;align-items:center;height:100%;padding:0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal)}.iti__arrow{margin-left:var(--iti-arrow-padding);width:0;height:0;border-left:var(--iti-triangle-border) solid transparent;border-right:var(--iti-triangle-border) solid transparent;border-top:var(--iti-arrow-height) solid var(--iti-arrow-color)}[dir=rtl] .iti__arrow{margin-right:var(--iti-arrow-padding);margin-left:0}.iti__arrow--up{border-top:none;border-bottom:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__dropdown-content{border-radius:3px;background-color:var(--iti-dropdown-bg)}.iti--inline-dropdown .iti__dropdown-content{position:absolute;z-index:2;margin-top:3px;margin-left:calc(var(--iti-border-width) * -1);border:var(--iti-border-width) solid var(--iti-border-color);box-shadow:1px 1px 4px #0003}.iti__search-input{width:100%;border-width:0;border-radius:3px}.iti__search-input+.iti__country-list{border-top:1px solid var(--iti-border-color)}.iti__country-list{list-style:none;padding:0;margin:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti--inline-dropdown .iti__country-list{max-height:185px}.iti--flexible-dropdown-width .iti__country-list{white-space:nowrap}@media (max-width: 500px){.iti--flexible-dropdown-width .iti__country-list{white-space:normal}}.iti__country{display:flex;align-items:center;padding:8px var(--iti-spacer-horizontal);outline:none}.iti__dial-code{color:var(--iti-dialcode-color)}.iti__country.iti__highlight{background-color:var(--iti-hover-color)}.iti__country-list .iti__flag,.iti__country-name{margin-right:var(--iti-spacer-horizontal)}[dir=rtl] .iti__country-list .iti__flag,[dir=rtl] .iti__country-name{margin-right:0;margin-left:var(--iti-spacer-horizontal)}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover button{cursor:pointer}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country-primary:hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country:has(+.iti__dropdown-content:hover) .iti__selected-country-primary{background-color:var(--iti-hover-color)}.iti .iti__selected-dial-code{margin-left:4px}[dir=rtl] .iti .iti__selected-dial-code{margin-left:0;margin-right:4px}.iti--container{position:fixed;top:-1000px;left:-1000px;z-index:1060;padding:var(--iti-border-width)}.iti--container:hover{cursor:pointer}.iti--fullscreen-popup.iti--container{background-color:#00000080;inset:0;position:fixed;padding:var(--iti-mobile-popup-margin);display:flex;flex-direction:column;justify-content:flex-start}.iti--fullscreen-popup .iti__dropdown-content{display:flex;flex-direction:column;max-height:100%;position:relative}.iti--fullscreen-popup .iti__country{padding:10px;line-height:1.5em}.iti__flag{--iti-flag-offset: 100px;height:var(--iti-flag-height);width:var(--iti-flag-width);border-radius:1px;box-shadow:0 0 1px #888;background-image:var(--iti-path-flags-1x);background-repeat:no-repeat;background-position:var(--iti-flag-offset) 0;background-size:var(--iti-flag-sprite-width) var(--iti-flag-sprite-height)}.iti__ac{--iti-flag-offset: 0px}.iti__ad{--iti-flag-offset: -16px}.iti__ae{--iti-flag-offset: -32px}.iti__af{--iti-flag-offset: -48px}.iti__ag{--iti-flag-offset: -64px}.iti__ai{--iti-flag-offset: -80px}.iti__al{--iti-flag-offset: -96px}.iti__am{--iti-flag-offset: -112px}.iti__ao{--iti-flag-offset: -128px}.iti__ar{--iti-flag-offset: -144px}.iti__as{--iti-flag-offset: -160px}.iti__at{--iti-flag-offset: -176px}.iti__au{--iti-flag-offset: -192px}.iti__aw{--iti-flag-offset: -208px}.iti__ax{--iti-flag-offset: -224px}.iti__az{--iti-flag-offset: -240px}.iti__ba{--iti-flag-offset: -256px}.iti__bb{--iti-flag-offset: -272px}.iti__bd{--iti-flag-offset: -288px}.iti__be{--iti-flag-offset: -304px}.iti__bf{--iti-flag-offset: -320px}.iti__bg{--iti-flag-offset: -336px}.iti__bh{--iti-flag-offset: -352px}.iti__bi{--iti-flag-offset: -368px}.iti__bj{--iti-flag-offset: -384px}.iti__bl{--iti-flag-offset: -400px}.iti__bm{--iti-flag-offset: -416px}.iti__bn{--iti-flag-offset: -432px}.iti__bo{--iti-flag-offset: -448px}.iti__bq{--iti-flag-offset: -464px}.iti__br{--iti-flag-offset: -480px}.iti__bs{--iti-flag-offset: -496px}.iti__bt{--iti-flag-offset: -512px}.iti__bw{--iti-flag-offset: -528px}.iti__by{--iti-flag-offset: -544px}.iti__bz{--iti-flag-offset: -560px}.iti__ca{--iti-flag-offset: -576px}.iti__cc{--iti-flag-offset: -592px}.iti__cd{--iti-flag-offset: -608px}.iti__cf{--iti-flag-offset: -624px}.iti__cg{--iti-flag-offset: -640px}.iti__ch{--iti-flag-offset: -656px}.iti__ci{--iti-flag-offset: -672px}.iti__ck{--iti-flag-offset: -688px}.iti__cl{--iti-flag-offset: -704px}.iti__cm{--iti-flag-offset: -720px}.iti__cn{--iti-flag-offset: -736px}.iti__co{--iti-flag-offset: -752px}.iti__cr{--iti-flag-offset: -768px}.iti__cu{--iti-flag-offset: -784px}.iti__cv{--iti-flag-offset: -800px}.iti__cw{--iti-flag-offset: -816px}.iti__cx{--iti-flag-offset: -832px}.iti__cy{--iti-flag-offset: -848px}.iti__cz{--iti-flag-offset: -864px}.iti__de{--iti-flag-offset: -880px}.iti__dj{--iti-flag-offset: -896px}.iti__dk{--iti-flag-offset: -912px}.iti__dm{--iti-flag-offset: -928px}.iti__do{--iti-flag-offset: -944px}.iti__dz{--iti-flag-offset: -960px}.iti__ec{--iti-flag-offset: -976px}.iti__ee{--iti-flag-offset: -992px}.iti__eg{--iti-flag-offset: -1008px}.iti__eh{--iti-flag-offset: -1024px}.iti__er{--iti-flag-offset: -1040px}.iti__es{--iti-flag-offset: -1056px}.iti__et{--iti-flag-offset: -1072px}.iti__fi{--iti-flag-offset: -1088px}.iti__fj{--iti-flag-offset: -1104px}.iti__fk{--iti-flag-offset: -1120px}.iti__fm{--iti-flag-offset: -1136px}.iti__fo{--iti-flag-offset: -1152px}.iti__fr{--iti-flag-offset: -1168px}.iti__ga{--iti-flag-offset: -1184px}.iti__gb{--iti-flag-offset: -1200px}.iti__gd{--iti-flag-offset: -1216px}.iti__ge{--iti-flag-offset: -1232px}.iti__gf{--iti-flag-offset: -1248px}.iti__gg{--iti-flag-offset: -1264px}.iti__gh{--iti-flag-offset: -1280px}.iti__gi{--iti-flag-offset: -1296px}.iti__gl{--iti-flag-offset: -1312px}.iti__gm{--iti-flag-offset: -1328px}.iti__gn{--iti-flag-offset: -1344px}.iti__gp{--iti-flag-offset: -1360px}.iti__gq{--iti-flag-offset: -1376px}.iti__gr{--iti-flag-offset: -1392px}.iti__gt{--iti-flag-offset: -1408px}.iti__gu{--iti-flag-offset: -1424px}.iti__gw{--iti-flag-offset: -1440px}.iti__gy{--iti-flag-offset: -1456px}.iti__hk{--iti-flag-offset: -1472px}.iti__hn{--iti-flag-offset: -1488px}.iti__hr{--iti-flag-offset: -1504px}.iti__ht{--iti-flag-offset: -1520px}.iti__hu{--iti-flag-offset: -1536px}.iti__id{--iti-flag-offset: -1552px}.iti__ie{--iti-flag-offset: -1568px}.iti__il{--iti-flag-offset: -1584px}.iti__im{--iti-flag-offset: -1600px}.iti__in{--iti-flag-offset: -1616px}.iti__io{--iti-flag-offset: -1632px}.iti__iq{--iti-flag-offset: -1648px}.iti__ir{--iti-flag-offset: -1664px}.iti__is{--iti-flag-offset: -1680px}.iti__it{--iti-flag-offset: -1696px}.iti__je{--iti-flag-offset: -1712px}.iti__jm{--iti-flag-offset: -1728px}.iti__jo{--iti-flag-offset: -1744px}.iti__jp{--iti-flag-offset: -1760px}.iti__ke{--iti-flag-offset: -1776px}.iti__kg{--iti-flag-offset: -1792px}.iti__kh{--iti-flag-offset: -1808px}.iti__ki{--iti-flag-offset: -1824px}.iti__km{--iti-flag-offset: -1840px}.iti__kn{--iti-flag-offset: -1856px}.iti__kp{--iti-flag-offset: -1872px}.iti__kr{--iti-flag-offset: -1888px}.iti__kw{--iti-flag-offset: -1904px}.iti__ky{--iti-flag-offset: -1920px}.iti__kz{--iti-flag-offset: -1936px}.iti__la{--iti-flag-offset: -1952px}.iti__lb{--iti-flag-offset: -1968px}.iti__lc{--iti-flag-offset: -1984px}.iti__li{--iti-flag-offset: -2000px}.iti__lk{--iti-flag-offset: -2016px}.iti__lr{--iti-flag-offset: -2032px}.iti__ls{--iti-flag-offset: -2048px}.iti__lt{--iti-flag-offset: -2064px}.iti__lu{--iti-flag-offset: -2080px}.iti__lv{--iti-flag-offset: -2096px}.iti__ly{--iti-flag-offset: -2112px}.iti__ma{--iti-flag-offset: -2128px}.iti__mc{--iti-flag-offset: -2144px}.iti__md{--iti-flag-offset: -2160px}.iti__me{--iti-flag-offset: -2176px}.iti__mf{--iti-flag-offset: -2192px}.iti__mg{--iti-flag-offset: -2208px}.iti__mh{--iti-flag-offset: -2224px}.iti__mk{--iti-flag-offset: -2240px}.iti__ml{--iti-flag-offset: -2256px}.iti__mm{--iti-flag-offset: -2272px}.iti__mn{--iti-flag-offset: -2288px}.iti__mo{--iti-flag-offset: -2304px}.iti__mp{--iti-flag-offset: -2320px}.iti__mq{--iti-flag-offset: -2336px}.iti__mr{--iti-flag-offset: -2352px}.iti__ms{--iti-flag-offset: -2368px}.iti__mt{--iti-flag-offset: -2384px}.iti__mu{--iti-flag-offset: -2400px}.iti__mv{--iti-flag-offset: -2416px}.iti__mw{--iti-flag-offset: -2432px}.iti__mx{--iti-flag-offset: -2448px}.iti__my{--iti-flag-offset: -2464px}.iti__mz{--iti-flag-offset: -2480px}.iti__na{--iti-flag-offset: -2496px}.iti__nc{--iti-flag-offset: -2512px}.iti__ne{--iti-flag-offset: -2528px}.iti__nf{--iti-flag-offset: -2544px}.iti__ng{--iti-flag-offset: -2560px}.iti__ni{--iti-flag-offset: -2576px}.iti__nl{--iti-flag-offset: -2592px}.iti__no{--iti-flag-offset: -2608px}.iti__np{--iti-flag-offset: -2624px}.iti__nr{--iti-flag-offset: -2640px}.iti__nu{--iti-flag-offset: -2656px}.iti__nz{--iti-flag-offset: -2672px}.iti__om{--iti-flag-offset: -2688px}.iti__pa{--iti-flag-offset: -2704px}.iti__pe{--iti-flag-offset: -2720px}.iti__pf{--iti-flag-offset: -2736px}.iti__pg{--iti-flag-offset: -2752px}.iti__ph{--iti-flag-offset: -2768px}.iti__pk{--iti-flag-offset: -2784px}.iti__pl{--iti-flag-offset: -2800px}.iti__pm{--iti-flag-offset: -2816px}.iti__pr{--iti-flag-offset: -2832px}.iti__ps{--iti-flag-offset: -2848px}.iti__pt{--iti-flag-offset: -2864px}.iti__pw{--iti-flag-offset: -2880px}.iti__py{--iti-flag-offset: -2896px}.iti__qa{--iti-flag-offset: -2912px}.iti__re{--iti-flag-offset: -2928px}.iti__ro{--iti-flag-offset: -2944px}.iti__rs{--iti-flag-offset: -2960px}.iti__ru{--iti-flag-offset: -2976px}.iti__rw{--iti-flag-offset: -2992px}.iti__sa{--iti-flag-offset: -3008px}.iti__sb{--iti-flag-offset: -3024px}.iti__sc{--iti-flag-offset: -3040px}.iti__sd{--iti-flag-offset: -3056px}.iti__se{--iti-flag-offset: -3072px}.iti__sg{--iti-flag-offset: -3088px}.iti__sh{--iti-flag-offset: -3104px}.iti__si{--iti-flag-offset: -3120px}.iti__sj{--iti-flag-offset: -3136px}.iti__sk{--iti-flag-offset: -3152px}.iti__sl{--iti-flag-offset: -3168px}.iti__sm{--iti-flag-offset: -3184px}.iti__sn{--iti-flag-offset: -3200px}.iti__so{--iti-flag-offset: -3216px}.iti__sr{--iti-flag-offset: -3232px}.iti__ss{--iti-flag-offset: -3248px}.iti__st{--iti-flag-offset: -3264px}.iti__sv{--iti-flag-offset: -3280px}.iti__sx{--iti-flag-offset: -3296px}.iti__sy{--iti-flag-offset: -3312px}.iti__sz{--iti-flag-offset: -3328px}.iti__tc{--iti-flag-offset: -3344px}.iti__td{--iti-flag-offset: -3360px}.iti__tg{--iti-flag-offset: -3376px}.iti__th{--iti-flag-offset: -3392px}.iti__tj{--iti-flag-offset: -3408px}.iti__tk{--iti-flag-offset: -3424px}.iti__tl{--iti-flag-offset: -3440px}.iti__tm{--iti-flag-offset: -3456px}.iti__tn{--iti-flag-offset: -3472px}.iti__to{--iti-flag-offset: -3488px}.iti__tr{--iti-flag-offset: -3504px}.iti__tt{--iti-flag-offset: -3520px}.iti__tv{--iti-flag-offset: -3536px}.iti__tw{--iti-flag-offset: -3552px}.iti__tz{--iti-flag-offset: -3568px}.iti__ua{--iti-flag-offset: -3584px}.iti__ug{--iti-flag-offset: -3600px}.iti__us{--iti-flag-offset: -3616px}.iti__uy{--iti-flag-offset: -3632px}.iti__uz{--iti-flag-offset: -3648px}.iti__va{--iti-flag-offset: -3664px}.iti__vc{--iti-flag-offset: -3680px}.iti__ve{--iti-flag-offset: -3696px}.iti__vg{--iti-flag-offset: -3712px}.iti__vi{--iti-flag-offset: -3728px}.iti__vn{--iti-flag-offset: -3744px}.iti__vu{--iti-flag-offset: -3760px}.iti__wf{--iti-flag-offset: -3776px}.iti__ws{--iti-flag-offset: -3792px}.iti__xk{--iti-flag-offset: -3808px}.iti__ye{--iti-flag-offset: -3824px}.iti__yt{--iti-flag-offset: -3840px}.iti__za{--iti-flag-offset: -3856px}.iti__zm{--iti-flag-offset: -3872px}.iti__zw{--iti-flag-offset: -3888px}.iti__globe{background-image:var(--iti-path-globe-1x);background-size:contain;background-position:right;box-shadow:none;height:19px}@media (min-resolution: 2x){.iti__flag{background-image:var(--iti-path-flags-2x)}.iti__globe{background-image:var(--iti-path-globe-2x)}}.sky-country-field-container:not(.sky-theme-modern *){--sky-override-country-field-disabled-flag-filter: none;--sky-override-country-field-disabled-flag-opacity: .65;--sky-override-country-field-disabled-input-background-color: #cdcfd2;--sky-override-country-field-flag-bottom: 0;--sky-override-country-field-input-box-flag-height: 35px;--sky-override-country-field-input-box-flag-left: 13px;--sky-override-country-field-input-box-form-control-padding-left: 40px;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-autocomplete-result:has(.sky-country-field-search-result-flag):not(.sky-theme-modern *){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-theme-modern:not(.sky-theme-brand-base) .sky-country-field-container{--sky-override-country-field-flag-bottom: 0;--sky-override-country-field-input-box-flag-height: 40px;--sky-override-country-field-input-box-flag-left: 15px;--sky-override-country-field-input-box-form-control-padding-left: 45px;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-theme-modern:not(.sky-theme-brand-base) .sky-autocomplete-result:has(.sky-country-field-search-result-flag){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-country-field-country-btn+.sky-form-control{border-left:none}.sky-country-field-container{width:100%}.sky-autocomplete-result:has(.sky-country-field-search-result-flag){position:relative}.sky-country-field-search-result-flag{display:flex;align-items:center;position:absolute;bottom:0;height:100%}.sky-country-field-search-result-info{padding-left:var(--sky-override-country-field-search-result-info-padding-left, calc(var(--sky-size-icon-s) + var(--sky-space-gap-icon-m)))}.sky-country-field-search-result-dial-code.sky-font-deemphasized{font-size:var(--sky-override-country-field-phone-info-font-size, inherit);padding-left:var(--sky-override-country-field-search-result-dial-code-padding-left, var(--sky-space-gap-label-s))}.sky-country-field-disabled .sky-country-field-input{cursor:default;background-color:var(--sky-override-country-field-disabled-input-background-color, transparent)}.sky-country-field-input{cursor:text;display:flex;position:relative}.sky-country-field-input textarea{overflow:hidden;resize:none!important;white-space:nowrap}:host(.ng-invalid.ng-touched) .sky-country-field-input textarea{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-country-field-search-result-flag .iti__flag{background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.4/assets/images/intl-tel-input/flags@2x.webp)!important;max-width:var(--sky-override-country-field-max-width, inherit);max-height:var(--sky-override-country-field-max-height, inherit);transform:var(--sky-override-country-field-transform, inherit)}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i4.SkyAutocompleteComponent, selector: \"sky-autocomplete\", inputs: [\"ariaLabelledBy\", \"data\", \"debounceTime\", \"descriptorProperty\", \"dropdownHintText\", \"enableShowMore\", \"messageStream\", \"wrapperClass\", \"propertiesToSearch\", \"search\", \"searchResultTemplate\", \"searchTextMinimumCharacters\", \"searchFilters\", \"searchResultsLimit\", \"showAddButton\", \"noResultsFoundText\", \"searchAsyncDisabled\", \"allowAnyValue\", \"highlightSearchText\"], outputs: [\"addClick\", \"showMoreClick\", \"selectionChange\", \"searchAsync\", \"openChange\"] }, { kind: \"directive\", type: i5.SkyAutocompleteInputDirective, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: [\"autocompleteAttribute\", \"disabled\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-country-field', providers: [SKY_COUNTRY_FIELD_VALIDATOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <span\\n class=\\\"sky-country-field-container\\\"\\n [ngClass]=\\\"{\\n 'sky-country-field-disabled': disabled\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"inputBoxHostSvc?.labelId ?? inputId\\\"\\n [data]=\\\"countries\\\"\\n [dropdownHintText]=\\\"\\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\\n \\\"\\n [propertiesToSearch]=\\\"['name', 'iso2']\\\"\\n [searchResultTemplate]=\\\"countrySearchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n (selectionChange)=\\\"onCountrySelected($event)\\\"\\n >\\n <div class=\\\"sky-country-field-input\\\">\\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\\n <textarea\\n class=\\\"sky-form-control\\\"\\n name=\\\"selectedCountry\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"\\n context?.inPhoneField\\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n : inputBoxHostSvc?.labelText\\n ? undefined\\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"inputId\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [formControl]=\\\"countrySearchFormControl\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (focusout)=\\\"onAutocompleteFocusout($event)\\\"\\n ></textarea>\\n </div>\\n </sky-autocomplete>\\n </span>\\n</ng-template>\\n\\n<ng-template #countrySearchResultTemplate let-item=\\\"item\\\">\\n <div class=\\\"sky-country-field-search-result-flag\\\">\\n <div [ngClass]=\\\"'iti__flag iti__' + item.iso2.toLowerCase()\\\"></div>\\n </div>\\n <div class=\\\"sky-country-field-search-result-info\\\">\\n {{ item.name }}\\n @if (context?.inPhoneField) {\\n <span\\n class=\\\"sky-font-deemphasized sky-country-field-search-result-dial-code\\\"\\n >\\n {{ item.dialCode }}\\n </span>\\n }\\n </div>\\n</ng-template>\\n\", styles: [\":root{--iti-hover-color: rgba(0, 0, 0, .05);--iti-border-color: #ccc;--iti-dialcode-color: #999;--iti-dropdown-bg: white;--iti-spacer-horizontal: 8px;--iti-flag-height: 12px;--iti-flag-width: 16px;--iti-border-width: 1px;--iti-arrow-height: 4px;--iti-arrow-width: 6px;--iti-triangle-border: calc(var(--iti-arrow-width) / 2);--iti-arrow-padding: 6px;--iti-arrow-color: #555;--iti-path-flags-1x: url(data:image/webp;base64,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);--iti-path-flags-2x: url(data:image/webp;base64,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);--iti-path-globe-1x: url(data:image/webp;base64,UklGRvoBAABXRUJQVlA4TO4BAAAvE8AEENXIkiRZtZu7H33ql07cqTlilvbz9i4tosSMZma27zWzHRGyIEk2bcu2bdvGn23btm3btm3btm0/m5PqAEkLTYYwxTPAW84Tl6wNgmvIqptKKH9nYAr4xle+TML/BDI2LSg6QHKT/nngE4+ZMIUePUGeTvly+YoV8F1DtkGUzlfst2LUKTX6PaWZeMWiDqN6PgcciGa2boYPmxlR5bIIL5l6RVyDYMXmY1f10pGb7PmAN6sRTBTN3N9C9Zi/LbVhlL+Oo2M7RxoE/a4+/nDjeBrSVwtGYXGGMIrUbJzCU1LgFftP9K1hkpOXmBim30cIJ1hgOkSwMhYCMgmaw7rXcfT5/wQcFhrcuaOEBuq5ytYblLPBEhV0Aq/ZqcDn/6RUDgrUL0/0UZgK/p+rR8/4nZAqFfuXA6TbtFQyJSe4gpj6T19a5q+HLEkox0mlWXvbIGbuJw28fkozjybhT5oXHNY4py5rH1CflcyeB1fId9wXDAvFmz/8m6AE/8TgYzEVGoRMCKUhND7PQho7jGo1utkdV559cm3llGFs3sxBZrmGbEExop91jyfg5G7BmCCi6evNaSDFBrG3vyaRNzt+HJ9kQpVbgj+xFUoNgr3abxqGfH3WfQq9lp5UZPRW74ZbFgpq+EGo67dUAQ==);--iti-path-globe-2x: url(data:image/webp;base64,UklGRlwFAABXRUJQVlA4TE8FAAAvJ8AJEEfHKJIkKdmcgvjj3wwill7QwKhtJEnOnIDmv/zJLAdGbSNJcuYENP/lT2Y5OGwjSZHmtL3wTFl9tp8SM/9xz47Ctm2b7mnwDggKFNd77jgHyxhIYVvLQBDEHEBKRQBIOXzQpAhiBQCIAMaIAACHhAQHIMFhhRkSRt1hlRIYDAZDhiE3CVrBS2gFkZGRYdA6mjQQBYAv6yOZSVAQCoPWMCWBIBQKwtCCUBANFARBlChBfPCG/dZUjxJECYJQECU+KGFQEC1YdN/NSUNRTDm4osQBGUwFjDFCBOYRo9QWxAmPlKQECRERMbVLCZapZ0owSrnz3hb6/P8auL9vAwr7/xeS5EV9q2sWU2vbtjla27Zt28akprq6a3bPtm2np87eJIvePUzd9fvoXkT0fwK4Vwdo8t6qyQW+O7Tn4k7NAdvi/jMR0fGpwhglhZBKm3B0pzvg3JcDrUuMEn7SDaUIRTLhhqb/AbDvw+bbJToMEq5QflFfv+QhJVPxcmkm/Ih9TzZfFxk/CJUnP7zMykJqnhsqQ51M6tTv2Pdgc/GKCuKmaI96HlhVAJy4vWVWWgRSfYJ9l4jv+4aB0F15Td3kH1YW4DiMnEJHGSaFOoOdw4LxOhCqPTf0JvLys6I8Wv/9BeeuhEkZfE+UZfNSOumqT+CArgHwbBHZw+ZB00AGeiYxIKKudH2zDxg97VK7FxdO6+9Pmt3l4J/bZR58rtyEOY6dtdhcMbPh2jsyNKr3mNnDy+c8Pig0od5wGXakg7DYgYgfU5648s0fC0Ljv9SigQVrHwUafXVgmNE92zBBBeYjsHn5L6Emz/6776EnxwJUsqKADMDmq8fG/T16fujr7lhknhheLG4PPwFD15IXs2xWFWBZVj4ndDW+fDItPRncssi75Fxv/iHQQL2PDbkg4k/zP/BfgfR1axxy59PM/IYdsypZWUCUiTlck2/zTz4fm3LzqkNlxxnzW+A4fK4vkbNrIbn7bgVoKn3djQu90krrllynQ1g7v2rpjUYsfeR6tdLSaqV5w5fR6E5+k8BVT/0aqqSXDAdV4wvpCplTCJnbFTLb9dTEHjoQQiTMC7Ah3PPuwbffOfD+xP4d3s7uMGDC+wcOvrs7kVKTZ6m4EMIVfn1O61JyrnuU3EM3A3znefrp142f5cnmnDXNyXecPFYUYNt2pVUlvot//qWFDszz9aTrCuGpQVX4Wn+KAw6rCrAgw/eqLZXQVQfmXZ5QnnCF2wrwdlJ5F8DhC1MP/itRnhv+wmHji7hpT+x0tekziRw7jxUF2LZznX3xOydH3e5fVhYWO5QOlClPzYFX9EMD65P9bBHZ16fLq7dHfrlal5vO2LxuKkTcfABvjZDxwsWvf9hs7pCv2ry5cowvB2/8iosq5YraWHw7JCxLyaAWZPoUrilMaRMKo8WwpQv0z2AXqnLzLA42H5gKEVcTuM76RfDtpVrzh9b5oTp0e5SI+Topy78hAzFm6QqRMN2gugNYLH0EoHF6Pyw3vm+OYQMRlwPpCd+sAep/WQ1OPGZZ13lO0ugpE0+m1xGRbdNKe67wzTN3Nouw3yfw03WH+nrnqUAnEul5YOXA5o20L4SnAiXjoX6f7Pm6RIeBl14EGe4a8VLad4UnvZTwysxR2DtOumEiUOpliLi7FWNb2vOEK4QQnnyoIav+Ko9XhGbUF1gZ7tWKcVBLX+T05HkOGmn0iA4WjsW9Ww6ny3WiTAjhyd41WWfGrv4sAof7t/l+ppGJlFeR7oBVr4kF2BYP0oYjDxsZpjuTsQDHsXjAUYxrrwwe9gGWRRRZ3CcA);--iti-flag-sprite-width: 3904px;--iti-flag-sprite-height: 12px;--iti-mobile-popup-margin: 30px}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti__a11y-text{width:1px;height:1px;clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute}.iti input.iti__tel-input,.iti input.iti__tel-input[type=text],.iti input.iti__tel-input[type=tel]{position:relative;z-index:0;margin:0!important}.iti__country-container{position:absolute;top:0;bottom:0;padding:var(--iti-border-width)}.iti__selected-country{z-index:1;position:relative;display:flex;align-items:center;height:100%;background:none;border:0;margin:0;padding:0;font-family:inherit;font-size:inherit;color:inherit;border-radius:0;font-weight:inherit;line-height:inherit;text-decoration:none}.iti__selected-country-primary{display:flex;align-items:center;height:100%;padding:0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal)}.iti__arrow{margin-left:var(--iti-arrow-padding);width:0;height:0;border-left:var(--iti-triangle-border) solid transparent;border-right:var(--iti-triangle-border) solid transparent;border-top:var(--iti-arrow-height) solid var(--iti-arrow-color)}[dir=rtl] .iti__arrow{margin-right:var(--iti-arrow-padding);margin-left:0}.iti__arrow--up{border-top:none;border-bottom:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__dropdown-content{border-radius:3px;background-color:var(--iti-dropdown-bg)}.iti--inline-dropdown .iti__dropdown-content{position:absolute;z-index:2;margin-top:3px;margin-left:calc(var(--iti-border-width) * -1);border:var(--iti-border-width) solid var(--iti-border-color);box-shadow:1px 1px 4px #0003}.iti__search-input{width:100%;border-width:0;border-radius:3px}.iti__search-input+.iti__country-list{border-top:1px solid var(--iti-border-color)}.iti__country-list{list-style:none;padding:0;margin:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti--inline-dropdown .iti__country-list{max-height:185px}.iti--flexible-dropdown-width .iti__country-list{white-space:nowrap}@media (max-width: 500px){.iti--flexible-dropdown-width .iti__country-list{white-space:normal}}.iti__country{display:flex;align-items:center;padding:8px var(--iti-spacer-horizontal);outline:none}.iti__dial-code{color:var(--iti-dialcode-color)}.iti__country.iti__highlight{background-color:var(--iti-hover-color)}.iti__country-list .iti__flag,.iti__country-name{margin-right:var(--iti-spacer-horizontal)}[dir=rtl] .iti__country-list .iti__flag,[dir=rtl] .iti__country-name{margin-right:0;margin-left:var(--iti-spacer-horizontal)}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover button{cursor:pointer}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country-primary:hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country:has(+.iti__dropdown-content:hover) .iti__selected-country-primary{background-color:var(--iti-hover-color)}.iti .iti__selected-dial-code{margin-left:4px}[dir=rtl] .iti .iti__selected-dial-code{margin-left:0;margin-right:4px}.iti--container{position:fixed;top:-1000px;left:-1000px;z-index:1060;padding:var(--iti-border-width)}.iti--container:hover{cursor:pointer}.iti--fullscreen-popup.iti--container{background-color:#00000080;inset:0;position:fixed;padding:var(--iti-mobile-popup-margin);display:flex;flex-direction:column;justify-content:flex-start}.iti--fullscreen-popup .iti__dropdown-content{display:flex;flex-direction:column;max-height:100%;position:relative}.iti--fullscreen-popup .iti__country{padding:10px;line-height:1.5em}.iti__flag{--iti-flag-offset: 100px;height:var(--iti-flag-height);width:var(--iti-flag-width);border-radius:1px;box-shadow:0 0 1px #888;background-image:var(--iti-path-flags-1x);background-repeat:no-repeat;background-position:var(--iti-flag-offset) 0;background-size:var(--iti-flag-sprite-width) var(--iti-flag-sprite-height)}.iti__ac{--iti-flag-offset: 0px}.iti__ad{--iti-flag-offset: -16px}.iti__ae{--iti-flag-offset: -32px}.iti__af{--iti-flag-offset: -48px}.iti__ag{--iti-flag-offset: -64px}.iti__ai{--iti-flag-offset: -80px}.iti__al{--iti-flag-offset: -96px}.iti__am{--iti-flag-offset: -112px}.iti__ao{--iti-flag-offset: -128px}.iti__ar{--iti-flag-offset: -144px}.iti__as{--iti-flag-offset: -160px}.iti__at{--iti-flag-offset: -176px}.iti__au{--iti-flag-offset: -192px}.iti__aw{--iti-flag-offset: -208px}.iti__ax{--iti-flag-offset: -224px}.iti__az{--iti-flag-offset: -240px}.iti__ba{--iti-flag-offset: -256px}.iti__bb{--iti-flag-offset: -272px}.iti__bd{--iti-flag-offset: -288px}.iti__be{--iti-flag-offset: -304px}.iti__bf{--iti-flag-offset: -320px}.iti__bg{--iti-flag-offset: -336px}.iti__bh{--iti-flag-offset: -352px}.iti__bi{--iti-flag-offset: -368px}.iti__bj{--iti-flag-offset: -384px}.iti__bl{--iti-flag-offset: -400px}.iti__bm{--iti-flag-offset: -416px}.iti__bn{--iti-flag-offset: -432px}.iti__bo{--iti-flag-offset: -448px}.iti__bq{--iti-flag-offset: -464px}.iti__br{--iti-flag-offset: -480px}.iti__bs{--iti-flag-offset: -496px}.iti__bt{--iti-flag-offset: -512px}.iti__bw{--iti-flag-offset: -528px}.iti__by{--iti-flag-offset: -544px}.iti__bz{--iti-flag-offset: -560px}.iti__ca{--iti-flag-offset: -576px}.iti__cc{--iti-flag-offset: -592px}.iti__cd{--iti-flag-offset: -608px}.iti__cf{--iti-flag-offset: -624px}.iti__cg{--iti-flag-offset: -640px}.iti__ch{--iti-flag-offset: -656px}.iti__ci{--iti-flag-offset: -672px}.iti__ck{--iti-flag-offset: -688px}.iti__cl{--iti-flag-offset: -704px}.iti__cm{--iti-flag-offset: -720px}.iti__cn{--iti-flag-offset: -736px}.iti__co{--iti-flag-offset: -752px}.iti__cr{--iti-flag-offset: -768px}.iti__cu{--iti-flag-offset: -784px}.iti__cv{--iti-flag-offset: -800px}.iti__cw{--iti-flag-offset: -816px}.iti__cx{--iti-flag-offset: -832px}.iti__cy{--iti-flag-offset: -848px}.iti__cz{--iti-flag-offset: -864px}.iti__de{--iti-flag-offset: -880px}.iti__dj{--iti-flag-offset: -896px}.iti__dk{--iti-flag-offset: -912px}.iti__dm{--iti-flag-offset: -928px}.iti__do{--iti-flag-offset: -944px}.iti__dz{--iti-flag-offset: -960px}.iti__ec{--iti-flag-offset: -976px}.iti__ee{--iti-flag-offset: -992px}.iti__eg{--iti-flag-offset: -1008px}.iti__eh{--iti-flag-offset: -1024px}.iti__er{--iti-flag-offset: -1040px}.iti__es{--iti-flag-offset: -1056px}.iti__et{--iti-flag-offset: -1072px}.iti__fi{--iti-flag-offset: -1088px}.iti__fj{--iti-flag-offset: -1104px}.iti__fk{--iti-flag-offset: -1120px}.iti__fm{--iti-flag-offset: -1136px}.iti__fo{--iti-flag-offset: -1152px}.iti__fr{--iti-flag-offset: -1168px}.iti__ga{--iti-flag-offset: -1184px}.iti__gb{--iti-flag-offset: -1200px}.iti__gd{--iti-flag-offset: -1216px}.iti__ge{--iti-flag-offset: -1232px}.iti__gf{--iti-flag-offset: -1248px}.iti__gg{--iti-flag-offset: -1264px}.iti__gh{--iti-flag-offset: -1280px}.iti__gi{--iti-flag-offset: -1296px}.iti__gl{--iti-flag-offset: -1312px}.iti__gm{--iti-flag-offset: -1328px}.iti__gn{--iti-flag-offset: -1344px}.iti__gp{--iti-flag-offset: -1360px}.iti__gq{--iti-flag-offset: -1376px}.iti__gr{--iti-flag-offset: -1392px}.iti__gt{--iti-flag-offset: -1408px}.iti__gu{--iti-flag-offset: -1424px}.iti__gw{--iti-flag-offset: -1440px}.iti__gy{--iti-flag-offset: -1456px}.iti__hk{--iti-flag-offset: -1472px}.iti__hn{--iti-flag-offset: -1488px}.iti__hr{--iti-flag-offset: -1504px}.iti__ht{--iti-flag-offset: -1520px}.iti__hu{--iti-flag-offset: -1536px}.iti__id{--iti-flag-offset: -1552px}.iti__ie{--iti-flag-offset: -1568px}.iti__il{--iti-flag-offset: -1584px}.iti__im{--iti-flag-offset: -1600px}.iti__in{--iti-flag-offset: -1616px}.iti__io{--iti-flag-offset: -1632px}.iti__iq{--iti-flag-offset: -1648px}.iti__ir{--iti-flag-offset: -1664px}.iti__is{--iti-flag-offset: -1680px}.iti__it{--iti-flag-offset: -1696px}.iti__je{--iti-flag-offset: -1712px}.iti__jm{--iti-flag-offset: -1728px}.iti__jo{--iti-flag-offset: -1744px}.iti__jp{--iti-flag-offset: -1760px}.iti__ke{--iti-flag-offset: -1776px}.iti__kg{--iti-flag-offset: -1792px}.iti__kh{--iti-flag-offset: -1808px}.iti__ki{--iti-flag-offset: -1824px}.iti__km{--iti-flag-offset: -1840px}.iti__kn{--iti-flag-offset: -1856px}.iti__kp{--iti-flag-offset: -1872px}.iti__kr{--iti-flag-offset: -1888px}.iti__kw{--iti-flag-offset: -1904px}.iti__ky{--iti-flag-offset: -1920px}.iti__kz{--iti-flag-offset: -1936px}.iti__la{--iti-flag-offset: -1952px}.iti__lb{--iti-flag-offset: -1968px}.iti__lc{--iti-flag-offset: -1984px}.iti__li{--iti-flag-offset: -2000px}.iti__lk{--iti-flag-offset: -2016px}.iti__lr{--iti-flag-offset: -2032px}.iti__ls{--iti-flag-offset: -2048px}.iti__lt{--iti-flag-offset: -2064px}.iti__lu{--iti-flag-offset: -2080px}.iti__lv{--iti-flag-offset: -2096px}.iti__ly{--iti-flag-offset: -2112px}.iti__ma{--iti-flag-offset: -2128px}.iti__mc{--iti-flag-offset: -2144px}.iti__md{--iti-flag-offset: -2160px}.iti__me{--iti-flag-offset: -2176px}.iti__mf{--iti-flag-offset: -2192px}.iti__mg{--iti-flag-offset: -2208px}.iti__mh{--iti-flag-offset: -2224px}.iti__mk{--iti-flag-offset: -2240px}.iti__ml{--iti-flag-offset: -2256px}.iti__mm{--iti-flag-offset: -2272px}.iti__mn{--iti-flag-offset: -2288px}.iti__mo{--iti-flag-offset: -2304px}.iti__mp{--iti-flag-offset: -2320px}.iti__mq{--iti-flag-offset: -2336px}.iti__mr{--iti-flag-offset: -2352px}.iti__ms{--iti-flag-offset: -2368px}.iti__mt{--iti-flag-offset: -2384px}.iti__mu{--iti-flag-offset: -2400px}.iti__mv{--iti-flag-offset: -2416px}.iti__mw{--iti-flag-offset: -2432px}.iti__mx{--iti-flag-offset: -2448px}.iti__my{--iti-flag-offset: -2464px}.iti__mz{--iti-flag-offset: -2480px}.iti__na{--iti-flag-offset: -2496px}.iti__nc{--iti-flag-offset: -2512px}.iti__ne{--iti-flag-offset: -2528px}.iti__nf{--iti-flag-offset: -2544px}.iti__ng{--iti-flag-offset: -2560px}.iti__ni{--iti-flag-offset: -2576px}.iti__nl{--iti-flag-offset: -2592px}.iti__no{--iti-flag-offset: -2608px}.iti__np{--iti-flag-offset: -2624px}.iti__nr{--iti-flag-offset: -2640px}.iti__nu{--iti-flag-offset: -2656px}.iti__nz{--iti-flag-offset: -2672px}.iti__om{--iti-flag-offset: -2688px}.iti__pa{--iti-flag-offset: -2704px}.iti__pe{--iti-flag-offset: -2720px}.iti__pf{--iti-flag-offset: -2736px}.iti__pg{--iti-flag-offset: -2752px}.iti__ph{--iti-flag-offset: -2768px}.iti__pk{--iti-flag-offset: -2784px}.iti__pl{--iti-flag-offset: -2800px}.iti__pm{--iti-flag-offset: -2816px}.iti__pr{--iti-flag-offset: -2832px}.iti__ps{--iti-flag-offset: -2848px}.iti__pt{--iti-flag-offset: -2864px}.iti__pw{--iti-flag-offset: -2880px}.iti__py{--iti-flag-offset: -2896px}.iti__qa{--iti-flag-offset: -2912px}.iti__re{--iti-flag-offset: -2928px}.iti__ro{--iti-flag-offset: -2944px}.iti__rs{--iti-flag-offset: -2960px}.iti__ru{--iti-flag-offset: -2976px}.iti__rw{--iti-flag-offset: -2992px}.iti__sa{--iti-flag-offset: -3008px}.iti__sb{--iti-flag-offset: -3024px}.iti__sc{--iti-flag-offset: -3040px}.iti__sd{--iti-flag-offset: -3056px}.iti__se{--iti-flag-offset: -3072px}.iti__sg{--iti-flag-offset: -3088px}.iti__sh{--iti-flag-offset: -3104px}.iti__si{--iti-flag-offset: -3120px}.iti__sj{--iti-flag-offset: -3136px}.iti__sk{--iti-flag-offset: -3152px}.iti__sl{--iti-flag-offset: -3168px}.iti__sm{--iti-flag-offset: -3184px}.iti__sn{--iti-flag-offset: -3200px}.iti__so{--iti-flag-offset: -3216px}.iti__sr{--iti-flag-offset: -3232px}.iti__ss{--iti-flag-offset: -3248px}.iti__st{--iti-flag-offset: -3264px}.iti__sv{--iti-flag-offset: -3280px}.iti__sx{--iti-flag-offset: -3296px}.iti__sy{--iti-flag-offset: -3312px}.iti__sz{--iti-flag-offset: -3328px}.iti__tc{--iti-flag-offset: -3344px}.iti__td{--iti-flag-offset: -3360px}.iti__tg{--iti-flag-offset: -3376px}.iti__th{--iti-flag-offset: -3392px}.iti__tj{--iti-flag-offset: -3408px}.iti__tk{--iti-flag-offset: -3424px}.iti__tl{--iti-flag-offset: -3440px}.iti__tm{--iti-flag-offset: -3456px}.iti__tn{--iti-flag-offset: -3472px}.iti__to{--iti-flag-offset: -3488px}.iti__tr{--iti-flag-offset: -3504px}.iti__tt{--iti-flag-offset: -3520px}.iti__tv{--iti-flag-offset: -3536px}.iti__tw{--iti-flag-offset: -3552px}.iti__tz{--iti-flag-offset: -3568px}.iti__ua{--iti-flag-offset: -3584px}.iti__ug{--iti-flag-offset: -3600px}.iti__us{--iti-flag-offset: -3616px}.iti__uy{--iti-flag-offset: -3632px}.iti__uz{--iti-flag-offset: -3648px}.iti__va{--iti-flag-offset: -3664px}.iti__vc{--iti-flag-offset: -3680px}.iti__ve{--iti-flag-offset: -3696px}.iti__vg{--iti-flag-offset: -3712px}.iti__vi{--iti-flag-offset: -3728px}.iti__vn{--iti-flag-offset: -3744px}.iti__vu{--iti-flag-offset: -3760px}.iti__wf{--iti-flag-offset: -3776px}.iti__ws{--iti-flag-offset: -3792px}.iti__xk{--iti-flag-offset: -3808px}.iti__ye{--iti-flag-offset: -3824px}.iti__yt{--iti-flag-offset: -3840px}.iti__za{--iti-flag-offset: -3856px}.iti__zm{--iti-flag-offset: -3872px}.iti__zw{--iti-flag-offset: -3888px}.iti__globe{background-image:var(--iti-path-globe-1x);background-size:contain;background-position:right;box-shadow:none;height:19px}@media (min-resolution: 2x){.iti__flag{background-image:var(--iti-path-flags-2x)}.iti__globe{background-image:var(--iti-path-globe-2x)}}.sky-country-field-container:not(.sky-theme-modern *){--sky-override-country-field-disabled-flag-filter: none;--sky-override-country-field-disabled-flag-opacity: .65;--sky-override-country-field-disabled-input-background-color: #cdcfd2;--sky-override-country-field-flag-bottom: 0;--sky-override-country-field-input-box-flag-height: 35px;--sky-override-country-field-input-box-flag-left: 13px;--sky-override-country-field-input-box-form-control-padding-left: 40px;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-autocomplete-result:has(.sky-country-field-search-result-flag):not(.sky-theme-modern *){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-theme-modern:not(.sky-theme-brand-base) .sky-country-field-container{--sky-override-country-field-flag-bottom: 0;--sky-override-country-field-input-box-flag-height: 40px;--sky-override-country-field-input-box-flag-left: 15px;--sky-override-country-field-input-box-form-control-padding-left: 45px;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-theme-modern:not(.sky-theme-brand-base) .sky-autocomplete-result:has(.sky-country-field-search-result-flag){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-country-field-country-btn+.sky-form-control{border-left:none}.sky-country-field-container{width:100%}.sky-autocomplete-result:has(.sky-country-field-search-result-flag){position:relative}.sky-country-field-search-result-flag{display:flex;align-items:center;position:absolute;bottom:0;height:100%}.sky-country-field-search-result-info{padding-left:var(--sky-override-country-field-search-result-info-padding-left, calc(var(--sky-size-icon-s) + var(--sky-space-gap-icon-m)))}.sky-country-field-search-result-dial-code.sky-font-deemphasized{font-size:var(--sky-override-country-field-phone-info-font-size, inherit);padding-left:var(--sky-override-country-field-search-result-dial-code-padding-left, var(--sky-space-gap-label-s))}.sky-country-field-disabled .sky-country-field-input{cursor:default;background-color:var(--sky-override-country-field-disabled-input-background-color, transparent)}.sky-country-field-input{cursor:text;display:flex;position:relative}.sky-country-field-input textarea{overflow:hidden;resize:none!important;white-space:nowrap}:host(.ng-invalid.ng-touched) .sky-country-field-input textarea{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-country-field-search-result-flag .iti__flag{background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.4/assets/images/intl-tel-input/flags@2x.webp)!important;max-width:var(--sky-override-country-field-max-width, inherit);max-height:var(--sky-override-country-field-max-height, inherit);transform:var(--sky-override-country-field-transform, inherit)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }], propDecorators: { autocompleteAttribute: [{\n type: Input\n }], defaultCountry: [{\n type: Input\n }], disabled: [{\n type: Input\n }], supportedCountryISOs: [{\n type: Input\n }], selectedCountryChange: [{\n type: Output\n }], countryFieldFocusout: [{\n type: Output\n }], countrySearchAutocompleteDirective: [{\n type: ViewChild,\n args: [SkyAutocompleteInputDirective]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsU0FBUyxFQUNULE9BQU8sRUFDUCxrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7QUFFaEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFFbEMsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdB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OytCQUNFLG1CQUFtQixhQUdsQixDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLEtBQUs7OzBCQXFNZCxRQUFRO3lDQTFMSixxQkFBcUI7c0JBRDNCLEtBQUs7Z0JBVUssY0FBYztzQkFEeEIsS0FBSztnQkEyQkssUUFBUTtzQkFEbEIsS0FBSztnQkFzQkssb0JBQW9CO3NCQUQ5QixLQUFLO2dCQW1CQyxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBVUEsb0JBQW9CO3NCQUQxQixNQUFNO2dCQVdBLGtDQUFrQztzQkFEeEMsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBbUVqQyxnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTmdDb250cm9sLFxuICBOZ01vZGVsLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCBpbnRsVGVsSW5wdXQgZnJvbSAnaW50bC10ZWwtaW5wdXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5cbmltcG9ydCB7IGNsb25lQ291bnRyeURhdGEgfSBmcm9tICcuL2Nsb25lLWNvdW50cnktZGF0YSc7XG5pbXBvcnQgeyBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IH0gZnJvbSAnLi90eXBlcy9jb3VudHJ5JztcbmltcG9ydCB7IFNreUNvdW50cnlGaWVsZENvbnRleHQgfSBmcm9tICcuL3R5cGVzL2NvdW50cnktZmllbGQtY29udGV4dCc7XG5pbXBvcnQgeyBTS1lfQ09VTlRSWV9GSUVMRF9DT05URVhUIH0gZnJvbSAnLi90eXBlcy9jb3VudHJ5LWZpZWxkLWNvbnRleHQtdG9rZW4nO1xuXG5jb25zdCBERUZBVUxUX0NPVU5UUllfQ09ERSA9ICd1cyc7XG5cbmNvbnN0IFNLWV9DT1VOVFJZX0ZJRUxEX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5Q291bnRyeUZpZWxkQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY291bnRyeS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTS1lfQ09VTlRSWV9GSUVMRF9WQUxJREFUT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvdW50cnlGaWVsZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgJ29mZidcbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG9ubHkgc3VwcG9ydHMgYnJvd3NlciBhdXRvZmlsbCBvbiBjb21wb25lbnRzIHdoZXJlIHRoZSBkaXJlY3QgaW5wdXQgbWF0Y2hlcyB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIGlucHV0IG1heSBub3QgYmVoYXZlIGFzIGV4cGVjdGVkIGR1ZSB0byB0aGUgZHJvcGRvd24gc2VsZWN0aW9uIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgW0ludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24gQWxwaGEgMl0oaHR0cHM6Ly93d3cubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvY291bnRyeV9jb2RlX2xpc3QuaHRtKVxuICAgKiBjb3VudHJ5IGNvZGUgZm9yIHRoZSBkZWZhdWx0IGNvdW50cnkuXG4gICAqIFdoZW4gc2VhcmNoIHJlc3VsdHMgaW5jbHVkZSB0aGUgZGVmYXVsdCBjb3VudHJ5LCBpdCBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuXG4gICAqIEBkZWZhdWx0IFwidXNcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWZhdWx0Q291bnRyeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdmFsdWUgPSBERUZBVUxUX0NPVU5UUllfQ09ERTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19kZWZhdWx0Q291bnRyeSkge1xuICAgICAgdGhpcy4jX2RlZmF1bHRDb3VudHJ5ID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgdGhpcy4jZGVmYXVsdENvdW50cnlEYXRhID0gdGhpcy5jb3VudHJpZXMuZmluZChcbiAgICAgICAgKGNvdW50cnkpID0+IGNvdW50cnkuaXNvMiA9PT0gdGhpcy4jX2RlZmF1bHRDb3VudHJ5LFxuICAgICAgKTtcblxuICAgICAgdGhpcy4jc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdENvdW50cnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2RlZmF1bHRDb3VudHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgY291bnRyeSBmaWVsZCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSBpc0Rpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIFtJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIEFscGhhIDJdKGh0dHBzOi8vd3d3Lm5hdGlvbnNvbmxpbmUub3JnL29uZXdvcmxkL2NvdW50cnlfY29kZV9saXN0Lmh0bSlcbiAgICogY291bnRyeSBjb2RlcyBmb3IgdGhlIGNvdW50cmllcyB0aGF0IHVzZXJzIGNhbiBzZWxlY3QuIEJ5IGRlZmF1bHQsIGFsbCBjb3VudHJpZXMgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VwcG9ydGVkQ291bnRyeUlTT3ModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRW5zdXJlIGFsbCB2YWx1ZXMgYXJlIHRoZSBzYW1lIGNhc2UuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgodikgPT4gdi50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfc3VwcG9ydGVkQ291bnRyeUlTT3MgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXR1cENvdW50cmllcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdXBwb3J0ZWRDb3VudHJ5SVNPcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19zdXBwb3J0ZWRDb3VudHJ5SVNPcyB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPFNreUNvdW50cnlGaWVsZENvdW50cnk+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNreUNvdW50cnlGaWVsZENvdW50cnk+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGNvdW50cnkgZmllbGQgaXMgZm9jdXNlZCBvdXQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgaWYgbm8gbG9uZ2VyIG5lZWRlZCBhZnRlciBhIHNjYWxhYmxlIGZvY3VzIG1vbml0b3Igc2VydmljZSBpcyBpbXBsZW1lbnRlZFxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvdW50cnlGaWVsZEZvY3Vzb3V0OiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBwdWJsaWMgY291bnRyaWVzOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5W10gPSBbXTtcblxuICBwdWJsaWMgY291bnRyeVNlYXJjaEZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgcHVibGljIHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA9IDI7XG5cbiAgQFZpZXdDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSlcbiAgcHVibGljIGNvdW50cnlTZWFyY2hBdXRvY29tcGxldGVEaXJlY3RpdmU6XG4gICAgfCBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRDb3VudHJ5KG5ld0NvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXRoaXMuI2NvdW50cmllc0FyZUVxdWFsKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LCBuZXdDb3VudHJ5KSkge1xuICAgICAgY29uc3QgbmV3Q291bnRyeUlzbyA9IG5ld0NvdW50cnk/LmlzbzI7XG4gICAgICBpZiAobmV3Q291bnRyeUlzbykge1xuICAgICAgICBjb25zdCBpc29Db3VudHJ5ID0gdGhpcy5jb3VudHJpZXMuZmluZChcbiAgICAgICAgICAoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSBuZXdDb3VudHJ5SXNvLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc29Db3VudHJ5KSB7XG4gICAgICAgICAgbmV3Q291bnRyeSA9IGlzb0NvdW50cnk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jX3NlbGVjdGVkQ291bnRyeSA9IG5ld0NvdW50cnk7XG5cbiAgICAgIHRoaXMuI3NvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KG5ld0NvdW50cnkpO1xuXG4gICAgICB0aGlzLiNpbnRlcm5hbEZvcm1DaGFuZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuXG4gICAgICBpZiAoIXRoaXMuI2lzSW5pdGlhbENoYW5nZSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5ld0NvdW50cnkpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlLmVtaXQobmV3Q291bnRyeSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI25nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgICAvLyBEbyBub3QgbWFyayB0aGUgZmllbGQgYXMgXCJkaXJ0eVwiXG4gICAgICAgIC8vIGlmIHRoZSBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUuXG4gICAgICAgIHRoaXMuI25nQ29udHJvbC5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2lzSW5pdGlhbENoYW5nZSA9IGZhbHNlO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBpZiBzdGF0ZW1lbnQgaXMgY29tcGxleC4gVGhlIGNvbnRyb2wgdHlwZSBjaGVjayBlbnN1cmVzIHRoYXRcbiAgICAgICAqIHdlIG9ubHkgd2F0Y2ggZm9yIHRoZSBpbml0aWFsIHRpbWUgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIG9uIHJlYWN0aXZlIGZvcm1zLiBIb3dldmVyLFxuICAgICAgICogdGVtcGxhdGUgZm9ybXMgd2lsbCBzZW5kIHRocm91Z2ggYG51bGxgIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uXG4gICAgICAgKiBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciB3aGVuIHRoZSBub24tbnVsbCBwYXNzIHRocm91Z2ggaGFwcGVucy5cbiAgICAgICAqL1xuICAgIH0gZWxzZSBpZiAoISh0aGlzLiNuZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsKSB8fCBuZXdDb3VudHJ5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnRyeSgpOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGVkQ291bnRyeTtcbiAgfVxuXG4gIHB1YmxpYyBjb250ZXh0OiBTa3lDb3VudHJ5RmllbGRDb250ZXh0IHwgbnVsbCA9IGluamVjdChcbiAgICBTS1lfQ09VTlRSWV9GSUVMRF9DT05URVhULFxuICAgIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgcHVibGljIGlucHV0SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFyaWFEZXNjcmliZWRCeTogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZGVmYXVsdENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkO1xuXG4gICNpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgI2ludGVybmFsRm9ybUNoYW5nZSA9IGZhbHNlO1xuXG4gICNpc0luaXRpYWxDaGFuZ2UgPSB0cnVlO1xuXG4gICNuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2RlZmF1bHRDb3VudHJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfc2VsZWN0ZWRDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkO1xuXG4gICNfc3VwcG9ydGVkQ291bnRyeUlTT3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jaW5qZWN0b3IgPSBpbmplY3RvcjtcblxuICAgIHRoaXMuaW5wdXRJZCA9IGBza3ktY291bnRyeS1maWVsZC1pbnB1dC0ke3VuaXF1ZUlkKyt9YDtcblxuICAgIHRoaXMuI3NldHVwQ291bnRyaWVzKCk7XG5cbiAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rIGZvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlSW5wdXRCb3goKTtcblxuICAgIHRoaXMuI25nQ29udHJvbCA9IHRoaXMuI2luamVjdG9yLmdldDxOZ0NvbnRyb2wgfCBudWxsPihcbiAgICAgIE5nQ29udHJvbCBhcyB1bmtub3duIGFzIFR5cGU8TmdDb250cm9sPixcbiAgICAgIG51bGwsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLiNuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI25nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaW5pdGlhbCBjaGFuZ2UgYm9vbGVhbiBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgc2V0dGluZyB0aGUgdmFsdWUuIFdoZW4gbm8gZm9ybVxuICAgICAgICogaXMgcHJlc2VudCB3ZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICovXG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdENvdW50cnkpIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvdW50cnkgPSBERUZBVUxUX0NPVU5UUllfQ09ERTtcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiAhdGhpcy4jaW50ZXJuYWxGb3JtQ2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQW5ndWxhciBsaWZlY3ljbGUgaG9vayBmb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3RydWN0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIHRvdWNoZWQgdmFsdWUgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIGlzIGJsdXJyZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY291bnRyeSB0byB2YWxpZGF0ZSBhZ2FpbnN0IGJhc2VkIG9uIHRoZSBjb3VudHkncyBpc28yIGNvZGUuXG4gICAqIEBwYXJhbSBuZXdDb3VudHJ5IFRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uJ3MgdHdvLWxldHRlciBjb2RlXG4gICAqIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3RlZChuZXdDb3VudHJ5OiBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAobmV3Q291bnRyeS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuZmluZChcbiAgICAgICAgICAoY291bnRyeUluZm8pID0+IGNvdW50cnlJbmZvLmlzbzIgPT09IG5ld0NvdW50cnkuc2VsZWN0ZWRJdGVtLmlzbzIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIEF1dG9jb21wbGV0ZSB0ZXh0YXJlYSBsb3NlcyBmb2N1c1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZUZvY3Vzb3V0KGU6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50cnlGaWVsZEZvY3Vzb3V0LmVtaXQoZSk7XG4gIH1cblxuICAvLyBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0cyB0aGVzZSBtZXRob2RzLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIG9uQ2hhbmdlID0gKHZhbHVlOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShcbiAgICBmbjogKHZhbHVlOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKSA9PiB2b2lkLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQWxsb3dzIEFuZ3VsYXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcyAmJlxuICAgICAgICAgIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MuaW5kZXhPZihjb250cm9sLnZhbHVlLmlzbzIpIDwgMCkgfHxcbiAgICAgICAgIXRoaXMuY291bnRyaWVzLmZpbmQoKGNvdW50cnkpID0+IGNvdW50cnkuaXNvMiA9PT0gY29udHJvbC52YWx1ZS5pc28yKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7IHVuc3VwcG9ydGVkQ291bnRyeTogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgKCRldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkuc2VsZWN0KCk7XG4gIH1cblxuICAjY291bnRyaWVzQXJlRXF1YWwoXG4gICAgY291bnRyeTE6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQsXG4gICAgY291bnRyeTI6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChjb3VudHJ5MSAmJiBjb3VudHJ5Mikge1xuICAgICAgcmV0dXJuIGNvdW50cnkxLmlzbzIgPT09IGNvdW50cnkyLmlzbzI7XG4gICAgfVxuXG4gICAgLy8gTk9URTogV2UgYXJlIGRvaW5nIHRoaXMgaW4gIHRoaXMgd2F5IGJlY2F1c2UgdGVtcGxhdGUgZm9ybXMgd2lsbCBzZW5kIHRocm91Z2ggYG51bGxgXG4gICAgLy8gYW5kIHRoZW4gYHVuZGVmaW5lZGAgb24gZW1wdHkgaW5pdGlhbGl6YXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBidXQgd2lsbFxuICAgIC8vIG5vdCBwYXNzIGEgc3RhbmRhcmQgdHJpcGxlIGVxdWFscyBjaGVjay5cbiAgICByZXR1cm4gIWNvdW50cnkxICYmICFjb3VudHJ5MjtcbiAgfVxuXG4gICNjb3VudHJpZXNFcXVhbChcbiAgICBhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5LFxuICAgIGI6IFNreUNvdW50cnlGaWVsZENvdW50cnksXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhLmlzbzIgPT09IGIuaXNvMiAmJiBhLm5hbWUgPT09IGIubmFtZTtcbiAgfVxuXG4gICNzZXR1cENvdW50cmllcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50cmllcyA9IGNsb25lQ291bnRyeURhdGEoaW50bFRlbElucHV0LmdldENvdW50cnlEYXRhKCkpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuY29udGV4dD8uaW5QaG9uZUZpZWxkKSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsaWJyYXJ5IHdlIGdldCB0aGUgY291bnRyeSBkYXRhIGZyb20gaW5jbHVkZXMgZXh0cmEgcGhvbmUgcHJvcGVydGllcy5cbiAgICAgICAqIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZXNlIHVubGVzcyB3ZSBhcmUgaW4gYSBwaG9uZSBmaWVsZFxuICAgICAgICovXG4gICAgICB0aGlzLmNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5KSA9PiB7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmRpYWxDb2RlO1xuICAgICAgICBkZWxldGUgY291bnRyeS5hcmVhQ29kZXM7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LnByaW9yaXR5O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4jc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuXG4gICAgaWYgKHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MgJiYgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuY291bnRyaWVzLmZpbHRlcihcbiAgICAgICAgKGNvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvdW50cnkuaXNvMikgPj0gMDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3NvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KFxuICAgIHNlbGVjdGVkQ291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkQ291bnRyeUluZGV4OiBudW1iZXI7XG4gICAgbGV0IHNlbGVjdGVkQ291bnRyeURhdGE6IFNreUNvdW50cnlGaWVsZENvdW50cnk7XG5cbiAgICBjb25zdCBzb3J0ZWROZXdDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICgodGhpcy4jZGVmYXVsdENvdW50cnlEYXRhICYmXG4gICAgICAgICAgdGhpcy4jY291bnRyaWVzRXF1YWwoYSwgdGhpcy4jZGVmYXVsdENvdW50cnlEYXRhKSkgfHxcbiAgICAgICAgICAoYS5uYW1lICYmIGIubmFtZSAmJiBhLm5hbWUgPCBiLm5hbWUpKSAmJlxuICAgICAgICAoIXRoaXMuI2RlZmF1bHRDb3VudHJ5RGF0YSB8fFxuICAgICAgICAgICF0aGlzLiNjb3VudHJpZXNFcXVhbCh0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEsIGIpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdGVkQ291bnRyeSkge1xuICAgICAgLy8gTm90ZTogV2UgYXJlIGxvb2tpbmcgdXAgdGhpcyBkYXRhIGhlcmUgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyB0aGUgb2ZmaWNpYWwgZGF0YSBmcm9tIHRoZVxuICAgICAgLy8gbGlicmFyeSBhbmQgbm90IHRoZSBkYXRhIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG9uIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGZvdW5kQ291bnRyeSA9IHRoaXMuY291bnRyaWVzLmZpbmQoXG4gICAgICAgIChjb3VudHJ5KSA9PiBjb3VudHJ5LmlzbzIgPT09IHNlbGVjdGVkQ291bnRyeS5pc28yLnRvTG9jYWxlTG93ZXJDYXNlKCksXG4gICAgICApO1xuXG4gICAgICBpZiAoZm91bmRDb3VudHJ5KSB7XG4gICAgICAgIHNlbGVjdGVkQ291bnRyeURhdGEgPSBmb3VuZENvdW50cnk7XG4gICAgICAgIHNlbGVjdGVkQ291bnRyeUluZGV4ID0gdGhpcy5jb3VudHJpZXMuaW5kZXhPZihzZWxlY3RlZENvdW50cnlEYXRhKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRDb3VudHJ5SW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMuY291bnRyaWVzLnNwbGljZShzZWxlY3RlZENvdW50cnlJbmRleCwgMSk7XG4gICAgICAgICAgc29ydGVkTmV3Q291bnRyaWVzLnNwbGljZSgwLCAwLCBzZWxlY3RlZENvdW50cnlEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY291bnRyaWVzID0gc29ydGVkTmV3Q291bnRyaWVzO1xuICB9XG5cbiAgI3VwZGF0ZUlucHV0Qm94KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFN2YyAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRCb3hIb3N0U3ZjLmNvbnRyb2xJZDtcbiAgICAgIHRoaXMuYXJpYURlc2NyaWJlZEJ5ID0gdGhpcy5pbnB1dEJveEhvc3RTdmMuYXJpYURlc2NyaWJlZEJ5O1xuXG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFN2Yy5wb3B1bGF0ZSh7XG4gICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmICghaW5wdXRCb3hIb3N0U3ZjKSB7XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlUmVmXCIgLz5cbn1cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlUmVmPlxuICA8c3BhblxuICAgIGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWNvdW50cnktZmllbGQtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICA+XG4gICAgPHNreS1hdXRvY29tcGxldGVcbiAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpbnB1dEJveEhvc3RTdmM/LmxhYmVsSWQgPz8gaW5wdXRJZFwiXG4gICAgICBbZGF0YV09XCJjb3VudHJpZXNcIlxuICAgICAgW2Ryb3Bkb3duSGludFRleHRdPVwiXG4gICAgICAgICdza3l1eF9jb3VudHJ5X2ZpZWxkX2Ryb3Bkb3duX2hpbnRfdGV4dCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgICBbcHJvcGVydGllc1RvU2VhcmNoXT1cIlsnbmFtZScsICdpc28yJ11cIlxuICAgICAgW3NlYXJjaFJlc3VsdFRlbXBsYXRlXT1cImNvdW50cnlTZWFyY2hSZXN1bHRUZW1wbGF0ZVwiXG4gICAgICBbc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXT1cInNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1wiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ291bnRyeVNlbGVjdGVkKCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktY291bnRyeS1maWVsZC1pbnB1dFwiPlxuICAgICAgICA8IS0tIFRoZSBjaGVjayBmb3IgbGFiZWwgdGV4dCBvbiB0aGUgYXJpYS1sYWJlbCBpcyB0byBhbGxvdyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2hpbGUgYWxzbyByZXNwZWN0aW5nIGxhYmVsIHRleHQgZnVuY3Rpb25hbGl0eS4gLS0+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cInNlbGVjdGVkQ291bnRyeVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgIHNreUF1dG9jb21wbGV0ZVxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5IHwgYXN5bmNcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBjb250ZXh0Py5pblBob25lRmllbGRcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2NvdW50cnlfZmllbGRfZHJvcGRvd25faGludF90ZXh0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgOiBpbnB1dEJveEhvc3RTdmM/LmxhYmVsVGV4dFxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiAoJ3NreXV4X2NvdW50cnlfZmllbGRfZHJvcGRvd25faGludF90ZXh0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uQXV0b2NvbXBsZXRlRm9jdXNvdXQoJGV2ZW50KVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgPC9za3ktYXV0b2NvbXBsZXRlPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvdW50cnlTZWFyY2hSZXN1bHRUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLXNlYXJjaC1yZXN1bHQtZmxhZ1wiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiJ2l0aV9fZmxhZyBpdGlfXycgKyBpdGVtLmlzbzIudG9Mb3dlckNhc2UoKVwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLXNlYXJjaC1yZXN1bHQtaW5mb1wiPlxuICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgIEBpZiAoY29udGV4dD8uaW5QaG9uZUZpZWxkKSB7XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktY291bnRyeS1maWVsZC1zZWFyY2gtcmVzdWx0LWRpYWwtY29kZVwiXG4gICAgICA+XG4gICAgICAgIHt7IGl0ZW0uZGlhbENvZGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyCountryFieldComponent } from './country-field.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyCountryFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldModule, declarations: [SkyCountryFieldComponent], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule], exports: [SkyCountryFieldComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldModule, imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCountryFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZXJFLE1BQU0sT0FBTyxxQkFBcUI7OEdBQXJCLHFCQUFxQjsrR0FBckIscUJBQXFCLGlCQVpqQix3QkFBd0IsYUFFckMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYix3QkFBd0I7WUFDeEIsY0FBYyxhQUVOLHdCQUF3QjsrR0FFdkIscUJBQXFCLFlBVjlCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7OzJGQUlMLHFCQUFxQjtrQkFiakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDeEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvdW50cnktZmllbGQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5Q291bnRyeUZpZWxkQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreUF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreUNvdW50cnlGaWVsZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvdW50cnlGaWVsZE1vZHVsZSB7fVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkySearchAdapterService {\n #renderer;\n constructor(renderer) {\n this.#renderer = renderer;\n }\n selectInput(searchEl) {\n this.#getInputEl(searchEl).select();\n }\n focusInput(searchEl) {\n this.#getInputEl(searchEl).focus();\n }\n startInputAnimation(searchEl) {\n const buttonWidth = this.#getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.#getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n this.#getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n this.#renderer.setStyle(this.#getInputContainerEl(searchEl), 'min-width', minWidth.toString() + 'px');\n }\n endInputAnimation(searchEl) {\n this.#renderer.setStyle(this.#getInputContainerEl(searchEl), 'min-width', '');\n }\n #getInputContainerEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n #getSearchOpenButtonEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n #getSearchContainerEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n #getInputEl(searchEl) {\n return searchEl.nativeElement.querySelector('input');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchAdapterService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Renderer2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxTQUFTLENBQVk7SUFFckIsWUFBWSxRQUFtQjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQW9CO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxRQUFvQjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFvQjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEUsTUFBTSxRQUFRLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDaEQsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUNuQyxXQUFXLEVBQ1gsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFvQjtRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUNuQyxXQUFXLEVBQ1gsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBb0I7UUFDdkMsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFvQjtRQUN6QyxPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQW9CO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CO1FBQzlCLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs4R0FwRFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVNlYXJjaEFkYXB0ZXJTZXJ2aWNlIHtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SW5wdXQoc2VhcmNoRWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNnZXRJbnB1dEVsKHNlYXJjaEVsKS5zZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0lucHV0KHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jZ2V0SW5wdXRFbChzZWFyY2hFbCkuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydElucHV0QW5pbWF0aW9uKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9uV2lkdGggPSB0aGlzLiNnZXRTZWFyY2hPcGVuQnV0dG9uRWwoc2VhcmNoRWwpLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFdpZHRoID0gdGhpcy4jZ2V0U2VhcmNoQ29udGFpbmVyRWwoc2VhcmNoRWwpLm9mZnNldExlZnQ7XG4gICAgY29uc3QgbWluV2lkdGggPSBidXR0b25XaWR0aCArIG9mZnNldFdpZHRoO1xuXG4gICAgdGhpcy4jZ2V0SW5wdXRDb250YWluZXJFbChzZWFyY2hFbCkuc3R5bGUubWluV2lkdGggPVxuICAgICAgbWluV2lkdGgudG9TdHJpbmcoKSArICdweCc7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuI2dldElucHV0Q29udGFpbmVyRWwoc2VhcmNoRWwpLFxuICAgICAgJ21pbi13aWR0aCcsXG4gICAgICBtaW5XaWR0aC50b1N0cmluZygpICsgJ3B4JyxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGVuZElucHV0QW5pbWF0aW9uKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLiNnZXRJbnB1dENvbnRhaW5lckVsKHNlYXJjaEVsKSxcbiAgICAgICdtaW4td2lkdGgnLFxuICAgICAgJycsXG4gICAgKTtcbiAgfVxuXG4gICNnZXRJbnB1dENvbnRhaW5lckVsKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBzZWFyY2hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktc2VhcmNoLWlucHV0LWNvbnRhaW5lcicpO1xuICB9XG5cbiAgI2dldFNlYXJjaE9wZW5CdXR0b25FbChzZWFyY2hFbDogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gc2VhcmNoRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LXNlYXJjaC1idG4tb3BlbicpO1xuICB9XG5cbiAgI2dldFNlYXJjaENvbnRhaW5lckVsKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBzZWFyY2hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktc2VhcmNoLWNvbnRhaW5lcicpO1xuICB9XG5cbiAgI2dldElucHV0RWwoc2VhcmNoRWw6IEVsZW1lbnRSZWYpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gc2VhcmNoRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICB9XG59XG4iXX0=","import { animate, state, style, transition, trigger, } from '@angular/animations';\nimport { Component, DestroyRef, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyContentInfoProvider, SkyMediaQueryService, } from '@skyux/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { SkySearchAdapterService } from './search-adapter.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./search-adapter.service\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/forms\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/theme\";\nimport * as i7 from \"@skyux/core\";\nimport * as i8 from \"@skyux/i18n\";\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\nexport class SkySearchComponent {\n /**\n * The expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n set expandMode(value) {\n this.#_expandMode = value ?? EXPAND_MODE_RESPONSIVE;\n }\n get expandMode() {\n return this.#_expandMode;\n }\n /**\n * How many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n set debounceTime(value) {\n this.#_debounceTime = value ?? 0;\n this.#setupSearchChangedEvent();\n }\n get debounceTime() {\n return this.#_debounceTime;\n }\n /**\n * Whether to disable the filter button.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value ?? false;\n }\n get disabled() {\n return this.#_disabled;\n }\n #changeRef;\n #contentInfoProvider;\n #elRef;\n #manualFocus;\n #searchAdapter;\n #searchUpdated;\n #searchUpdatedSub;\n #_debounceTime;\n #_disabled;\n #_expandMode;\n #destroyRef;\n #mediaQuerySvc;\n #breakpoint;\n constructor(elRef, searchAdapter, changeRef) {\n /**\n * Fires when the search text is applied.\n */\n this.searchApply = new EventEmitter();\n /**\n * Fires when the search text is changed.\n */\n this.searchChange = new EventEmitter();\n /**\n * Fires when the search text is cleared.\n */\n this.searchClear = new EventEmitter();\n this.clearButtonShown = false;\n this.dismissButtonShown = false;\n this.inputAnimate = INPUT_SHOWN_STATE;\n this.isCollapsible = true;\n this.isFullWidth = false;\n this.mobileSearchShown = false;\n this.searchButtonShown = false;\n this.#contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });\n this.#manualFocus = false;\n this.#searchUpdated = new Subject();\n this.#_debounceTime = 0;\n this.#_disabled = false;\n this.#_expandMode = EXPAND_MODE_RESPONSIVE;\n this.#destroyRef = inject(DestroyRef);\n this.#mediaQuerySvc = inject(SkyMediaQueryService);\n this.#breakpoint = toSignal(this.#mediaQuerySvc.breakpointChange);\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n this.contentInfoObs = this.#contentInfoProvider?.getInfo();\n }\n ngOnInit() {\n if (this.#searchShouldCollapse()) {\n this.#mediaQuerySvc.breakpointChange\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((breakpoint) => {\n this.#mediaQueryCallback(breakpoint);\n });\n }\n this.#setupSearchChangedEvent();\n }\n ngOnChanges(changes) {\n if (this.#expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n if (this.#searchBindingChanged(changes)) {\n this.#searchUpdated.next(this.searchText ?? '');\n this.clearButtonShown = !!(this.searchText && this.searchText !== '');\n if (this.#shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.#changeRef.detectChanges();\n }\n clearSearchText() {\n this.searchText = '';\n this.clearButtonShown = false;\n this.#searchAdapter.focusInput(this.#elRef);\n this.#searchUpdated.next(this.searchText);\n this.searchApply.emit(this.searchText);\n this.searchClear.emit();\n }\n enterPress(event, searchText) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n applySearchText(searchText) {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = !!(searchText && searchText !== '');\n if (searchText && searchText !== '') {\n this.#searchAdapter.selectInput(this.#elRef);\n }\n this.searchApply.emit(searchText);\n }\n searchTextChanged(searchText) {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n toggleSearchInput(showInput) {\n if (this.#searchShouldCollapse()) {\n this.#manualFocus = true;\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n inputAnimationStart(event) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n if (event.toState === INPUT_SHOWN_STATE && this.#breakpoint() === 'xs') {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n inputAnimationEnd(event) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n const breakpoint = this.#breakpoint();\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs';\n if ((event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs') ||\n breakpoint !== 'xs') {\n this.mobileSearchShown = false;\n }\n setTimeout(() => {\n if (this.#manualFocus && !this.searchButtonShown) {\n this.#searchAdapter.focusInput(this.#elRef);\n this.#manualFocus = false;\n }\n });\n }\n }\n ngOnDestroy() {\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n #searchBindingChanged(changes) {\n return (changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue);\n }\n #expandModeBindingChanged(changes) {\n return (changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue);\n }\n #shouldOpenInput() {\n return (this.searchText !== '' &&\n this.#breakpoint() === 'xs' &&\n this.#searchShouldCollapse());\n }\n #mediaQueryCallback(breakpoint) {\n if (this.#searchShouldCollapse()) {\n if (breakpoint === 'xs') {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n else {\n this.mobileSearchShown = false;\n }\n }\n this.#changeRef.markForCheck();\n }\n #searchShouldCollapse() {\n return ((this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true);\n }\n #setupSearchChangedEvent() {\n this.#searchUpdatedSub?.unsubscribe();\n this.#searchUpdatedSub = this.#searchUpdated\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchComponent, deps: [{ token: i0.ElementRef }, { token: i1.SkySearchAdapterService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkySearchComponent, isStandalone: false, selector: \"sky-search\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", searchText: \"searchText\", expandMode: \"expandMode\", debounceTime: \"debounceTime\", disabled: \"disabled\", placeholderText: \"placeholderText\" }, outputs: { searchApply: \"searchApply\", searchChange: \"searchChange\", searchClear: \"searchClear\" }, providers: [SkySearchAdapterService], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"sky-search-container\\\">\\n <div class=\\\"sky-search-button-container\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_open' | skyLibResources\\\"\\n [hidden]=\\\"!searchButtonShown\\\"\\n [ngClass]=\\\"{ 'sky-search-btn-open-applied': clearButtonShown }\\\"\\n (click)=\\\"toggleSearchInput(true)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </div>\\n <div\\n class=\\\"sky-search-dismiss-container\\\"\\n [hidden]=\\\"searchButtonShown\\\"\\n [ngClass]=\\\"{\\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\\n }\\\"\\n >\\n <div class=\\\"sky-search-item-input\\\">\\n <div\\n class=\\\"sky-search-input-container\\\"\\n [@inputState]=\\\"inputAnimate\\\"\\n [ngClass]=\\\"{\\n 'sky-search-input-container-has-value': searchText?.trim()\\n }\\\"\\n (@inputState.start)=\\\"inputAnimationStart($event)\\\"\\n (@inputState.done)=\\\"inputAnimationEnd($event)\\\"\\n >\\n <sky-input-box [disabled]=\\\"disabled\\\">\\n <input\\n #searchInput=\\\"skyId\\\"\\n class=\\\"sky-form-control sky-search-input sky-rounded-corners\\\"\\n type=\\\"text\\\"\\n skyId\\n [attr.aria-label]=\\\"\\n ariaLabelledBy\\n ? undefined\\n : ariaLabel ||\\n ((contentInfoObs | async)?.descriptor?.type === 'text'\\n ? ('skyux_search_aria_label_descriptor'\\n | skyLibResources\\n : (contentInfoObs | async)?.descriptor?.value)\\n : ('skyux_search_label' | skyLibResources))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.placeholder]=\\\"\\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngModel]=\\\"searchText\\\"\\n (keyup)=\\\"enterPress($event, searchText)\\\"\\n (ngModelChange)=\\\"searchTextChanged($event)\\\"\\n />\\n <span\\n class=\\\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\\\"\\n [hidden]=\\\"!clearButtonShown\\\"\\n >\\n <button\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"clearSearchText()\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </button>\\n </span>\\n <span\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-group-btn sky-input-box-btn-inset\\\"\\n >\\n <button\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_label' | skyLibResources\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"applySearchText(searchText)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </span>\\n <div\\n *skyThemeIf=\\\"'modern'\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset-left\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </div>\\n </sky-input-box>\\n </div>\\n </div>\\n <div class=\\\"sky-search-item-dismiss\\\">\\n @if (mobileSearchShown) {\\n <button\\n class=\\\"sky-btn sky-search-btn-dismiss\\\"\\n type=\\\"button\\\"\\n [attr.title]=\\\"'skyux_search_dismiss' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"toggleSearchInput(false)\\\"\\n >\\n <sky-icon *skyThemeIf=\\\"'default'\\\" iconName=\\\"chevron-left\\\" />\\n <sky-icon *skyThemeIf=\\\"'modern'\\\" iconName=\\\"chevron-double-left\\\" />\\n </button>\\n }\\n </div>\\n </div>\\n</div>\\n\\n<ng-template #searchIconTemplate>\\n <sky-icon iconName=\\\"search\\\" />\\n</ng-template>\\n\", styles: [\".sky-search-container:not(.sky-theme-modern *){--sky-override-search-applied-background-color: #fff;--sky-override-search-applied-border: 2px solid #72bf44;--sky-override-search-applied-box-shadow: none;--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 11px;--sky-override-search-applied-mobile-button-vertical-padding: 5px;--sky-override-search-clear-padding-right: 6px;--sky-override-search-container-padding: 5px;--sky-override-search-mobile-background-color: #ffffff;--sky-override-search-mobile-button-horizontal-padding: 12px;--sky-override-search-mobile-button-vertical-padding: 6px;--sky-override-search-mobile-font-size: 15px}.sky-theme-modern:not(.sky-theme-brand-base) .sky-search-container{--sky-override-search-applied-background-color: var( --sky-color-background-action-secondary-base );--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 15px;--sky-override-search-applied-mobile-button-vertical-padding: 9px;--sky-override-search-applied-border-width: 2px;--sky-override-search-background-color: var(--modern-color-transparent);--sky-override-search-button-height-width: 40px;--sky-override-search-mobile-button-horizontal-padding: 15px;--sky-override-search-mobile-button-vertical-padding: 9px;--sky-override-search-toolbar-icon-color: var(--sky-color-icon-default);--sky-override-search-toolbar-item-text-color: var(--sky-color-text-default)}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-apply{padding-left:6px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-clear{padding-right:var(--sky-override-search-clear-padding-right)}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:var(--sky-override-search-mobile-font-size, var(--sky-font-size-body-m))}}sky-search .sky-btn.sky-search-btn-open{padding-top:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open{padding-top:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied .sky-btn.sky-search-btn-open:hover{background-color:var(--sky-override-search-applied-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-search-applied-border, none);box-shadow:var(--sky-override-search-applied-box-shadow, inset 0 0 0 var(--sky-override-search-applied-border-width, var(--sky-border-width-selected-s)) var(--sky-override-search-applied-color, var(--sky-color-border-selected)));color:var(--sky-override-search-applied-color, var(--sky-color-icon-action))}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:var(--sky-override-search-mobile-background-color, var(--sky-color-background-action-secondary-base));inset:0;padding:var(--sky-override-search-container-padding, var(--sky-comp-search-space-offset-top) var(--sky-comp-search-space-offset-right) var(--sky-comp-search-space-offset-bottom) var(--sky-comp-search-space-offset-left))}.sky-theme-modern sky-search sky-input-box{--sky-background-color-input-box-group: var( --sky-override-search-background-color, var(--sky-color-background-action-secondary-base) );--sky-background-color-input-box-group-focused: var( --sky-override-search-background-color, var(--sky-color-background-action-secondary-base) )}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{height:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-top) + var(--sky-comp-search-space-inset-bottom)));width:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-left) + var(--sky-comp-search-space-inset-right)))}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:var(--sky-color-icon-default);font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-dismiss{color:var(--sky-color-icon-default);height:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-button-space-inset-top) + var(--sky-comp-button-space-inset-bottom)));width:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-button-space-inset-left) + var(--sky-comp-button-space-inset-right)));padding:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{box-shadow:none}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{border:none;border-radius:var(--sky-border-radius-0);box-shadow:inset 0 -1px 0 0 var(--sky-color-border-selected)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 var(--sky-space-gap-icon-m)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-default)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:var(--sky-comp-search-space-inset-top) var(--sky-comp-search-space-inset-right) var(--sky-comp-search-space-inset-bottom) 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:var(--sky-font-style-body-s);color:var(--sky-color-text-default);font-weight:var(--bb-font-weight-regular)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box{--sky-background-color-input-box-group: transparent;--sky-background-color-input-box-group-focused: transparent}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box .sky-input-group-icon .sky-icon{color:var(--sky-override-search-toolbar-icon-color, var(--sky-color-icon-selected))}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{color:var(--sky-override-search-toolbar-item-text-color, var(--sky-color-text-selected))}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i3.λ10, selector: \"sky-input-box\", inputs: [\"hasErrors\", \"disabled\", \"labelText\", \"characterLimit\", \"stacked\", \"helpPopoverTitle\", \"helpPopoverContent\", \"helpKey\", \"hintText\"] }, { kind: \"directive\", type: i4.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i6.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"directive\", type: i6.λ3, selector: \"[skyThemeIf]\", inputs: [\"skyThemeIf\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i8.SkyLibResourcesPipe, name: \"skyLibResources\" }], animations: [\n trigger('inputState', [\n state(INPUT_HIDDEN_STATE, style({\n opacity: 0,\n width: 0,\n })),\n state(INPUT_SHOWN_STATE, style({\n opacity: 1,\n width: '100%',\n })),\n transition('* <=> *', animate('150ms')),\n ]),\n ], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-search', encapsulation: ViewEncapsulation.None, animations: [\n trigger('inputState', [\n state(INPUT_HIDDEN_STATE, style({\n opacity: 0,\n width: 0,\n })),\n state(INPUT_SHOWN_STATE, style({\n opacity: 1,\n width: '100%',\n })),\n transition('* <=> *', animate('150ms')),\n ]),\n ], providers: [SkySearchAdapterService], standalone: false, template: \"<div class=\\\"sky-search-container\\\">\\n <div class=\\\"sky-search-button-container\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_open' | skyLibResources\\\"\\n [hidden]=\\\"!searchButtonShown\\\"\\n [ngClass]=\\\"{ 'sky-search-btn-open-applied': clearButtonShown }\\\"\\n (click)=\\\"toggleSearchInput(true)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </div>\\n <div\\n class=\\\"sky-search-dismiss-container\\\"\\n [hidden]=\\\"searchButtonShown\\\"\\n [ngClass]=\\\"{\\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\\n }\\\"\\n >\\n <div class=\\\"sky-search-item-input\\\">\\n <div\\n class=\\\"sky-search-input-container\\\"\\n [@inputState]=\\\"inputAnimate\\\"\\n [ngClass]=\\\"{\\n 'sky-search-input-container-has-value': searchText?.trim()\\n }\\\"\\n (@inputState.start)=\\\"inputAnimationStart($event)\\\"\\n (@inputState.done)=\\\"inputAnimationEnd($event)\\\"\\n >\\n <sky-input-box [disabled]=\\\"disabled\\\">\\n <input\\n #searchInput=\\\"skyId\\\"\\n class=\\\"sky-form-control sky-search-input sky-rounded-corners\\\"\\n type=\\\"text\\\"\\n skyId\\n [attr.aria-label]=\\\"\\n ariaLabelledBy\\n ? undefined\\n : ariaLabel ||\\n ((contentInfoObs | async)?.descriptor?.type === 'text'\\n ? ('skyux_search_aria_label_descriptor'\\n | skyLibResources\\n : (contentInfoObs | async)?.descriptor?.value)\\n : ('skyux_search_label' | skyLibResources))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.placeholder]=\\\"\\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngModel]=\\\"searchText\\\"\\n (keyup)=\\\"enterPress($event, searchText)\\\"\\n (ngModelChange)=\\\"searchTextChanged($event)\\\"\\n />\\n <span\\n class=\\\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\\\"\\n [hidden]=\\\"!clearButtonShown\\\"\\n >\\n <button\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"clearSearchText()\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </button>\\n </span>\\n <span\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-group-btn sky-input-box-btn-inset\\\"\\n >\\n <button\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_label' | skyLibResources\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"applySearchText(searchText)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </span>\\n <div\\n *skyThemeIf=\\\"'modern'\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset-left\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </div>\\n </sky-input-box>\\n </div>\\n </div>\\n <div class=\\\"sky-search-item-dismiss\\\">\\n @if (mobileSearchShown) {\\n <button\\n class=\\\"sky-btn sky-search-btn-dismiss\\\"\\n type=\\\"button\\\"\\n [attr.title]=\\\"'skyux_search_dismiss' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"toggleSearchInput(false)\\\"\\n >\\n <sky-icon *skyThemeIf=\\\"'default'\\\" iconName=\\\"chevron-left\\\" />\\n <sky-icon *skyThemeIf=\\\"'modern'\\\" iconName=\\\"chevron-double-left\\\" />\\n </button>\\n }\\n </div>\\n </div>\\n</div>\\n\\n<ng-template #searchIconTemplate>\\n <sky-icon iconName=\\\"search\\\" />\\n</ng-template>\\n\", styles: [\".sky-search-container:not(.sky-theme-modern *){--sky-override-search-applied-background-color: #fff;--sky-override-search-applied-border: 2px solid #72bf44;--sky-override-search-applied-box-shadow: none;--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 11px;--sky-override-search-applied-mobile-button-vertical-padding: 5px;--sky-override-search-clear-padding-right: 6px;--sky-override-search-container-padding: 5px;--sky-override-search-mobile-background-color: #ffffff;--sky-override-search-mobile-button-horizontal-padding: 12px;--sky-override-search-mobile-button-vertical-padding: 6px;--sky-override-search-mobile-font-size: 15px}.sky-theme-modern:not(.sky-theme-brand-base) .sky-search-container{--sky-override-search-applied-background-color: var( --sky-color-background-action-secondary-base );--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 15px;--sky-override-search-applied-mobile-button-vertical-padding: 9px;--sky-override-search-applied-border-width: 2px;--sky-override-search-background-color: var(--modern-color-transparent);--sky-override-search-button-height-width: 40px;--sky-override-search-mobile-button-horizontal-padding: 15px;--sky-override-search-mobile-button-vertical-padding: 9px;--sky-override-search-toolbar-icon-color: var(--sky-color-icon-default);--sky-override-search-toolbar-item-text-color: var(--sky-color-text-default)}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-apply{padding-left:6px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-clear{padding-right:var(--sky-override-search-clear-padding-right)}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:var(--sky-override-search-mobile-font-size, var(--sky-font-size-body-m))}}sky-search .sky-btn.sky-search-btn-open{padding-top:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open{padding-top:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied .sky-btn.sky-search-btn-open:hover{background-color:var(--sky-override-search-applied-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-search-applied-border, none);box-shadow:var(--sky-override-search-applied-box-shadow, inset 0 0 0 var(--sky-override-search-applied-border-width, var(--sky-border-width-selected-s)) var(--sky-override-search-applied-color, var(--sky-color-border-selected)));color:var(--sky-override-search-applied-color, var(--sky-color-icon-action))}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:var(--sky-override-search-mobile-background-color, var(--sky-color-background-action-secondary-base));inset:0;padding:var(--sky-override-search-container-padding, var(--sky-comp-search-space-offset-top) var(--sky-comp-search-space-offset-right) var(--sky-comp-search-space-offset-bottom) var(--sky-comp-search-space-offset-left))}.sky-theme-modern sky-search sky-input-box{--sky-background-color-input-box-group: var( --sky-override-search-background-color, var(--sky-color-background-action-secondary-base) );--sky-background-color-input-box-group-focused: var( --sky-override-search-background-color, var(--sky-color-background-action-secondary-base) )}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{height:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-top) + var(--sky-comp-search-space-inset-bottom)));width:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-left) + var(--sky-comp-search-space-inset-right)))}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:var(--sky-color-icon-default);font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-dismiss{color:var(--sky-color-icon-default);height:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-button-space-inset-top) + var(--sky-comp-button-space-inset-bottom)));width:var(--sky-override-search-button-height-width, calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-button-space-inset-left) + var(--sky-comp-button-space-inset-right)));padding:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{box-shadow:none}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{border:none;border-radius:var(--sky-border-radius-0);box-shadow:inset 0 -1px 0 0 var(--sky-color-border-selected)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 var(--sky-space-gap-icon-m)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-default)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:var(--sky-comp-search-space-inset-top) var(--sky-comp-search-space-inset-right) var(--sky-comp-search-space-inset-bottom) 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:var(--sky-font-style-body-s);color:var(--sky-color-text-default);font-weight:var(--bb-font-weight-regular)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box{--sky-background-color-input-box-group: transparent;--sky-background-color-input-box-group-focused: transparent}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box .sky-input-group-icon .sky-icon{color:var(--sky-override-search-toolbar-icon-color, var(--sky-color-icon-selected))}.sky-theme-modern .sky-toolbar-item sky-search .sky-search-container .sky-search-input-container sky-input-box .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{color:var(--sky-override-search-toolbar-item-text-color, var(--sky-color-text-selected))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkySearchAdapterService }, { type: i0.ChangeDetectorRef }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], searchApply: [{\n type: Output\n }], searchChange: [{\n type: Output\n }], searchClear: [{\n type: Output\n }], searchText: [{\n type: Input\n }], expandMode: [{\n type: Input\n }], debounceTime: [{\n type: Input\n }], disabled: [{\n type: Input\n }], placeholderText: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQUVuRSxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQztBQUM1QyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUE2QmhDLE1B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O3NCQURqQixNQUFNO2dCQU9BLFlBQVk7c0JBRGxCLE1BQU07Z0JBT0EsV0FBVztzQkFEakIsTUFBTTtnQkFPQSxVQUFVO3NCQURoQixLQUFLO2dCQVdLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBY0ssWUFBWTtzQkFEdEIsS0FBSztnQkFlSyxRQUFRO3NCQURsQixLQUFLO2dCQWVDLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbmltYXRpb25FdmVudCxcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgU2t5QnJlYWtwb2ludCxcbiAgU2t5Q29udGVudEluZm8sXG4gIFNreUNvbnRlbnRJbmZvUHJvdmlkZXIsXG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NlYXJjaC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5jb25zdCBJTlBVVF9TSE9XTl9TVEFURSA9ICdpbnB1dFNob3duJztcbmNvbnN0IElOUFVUX0hJRERFTl9TVEFURSA9ICdpbnB1dEhpZGRlbic7XG5jb25zdCBFWFBBTkRfTU9ERV9SRVNQT05TSVZFID0gJ3Jlc3BvbnNpdmUnO1xuY29uc3QgRVhQQU5EX01PREVfRklUID0gJ2ZpdCc7XG5jb25zdCBFWFBBTkRfTU9ERV9OT05FID0gJ25vbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5wdXRTdGF0ZScsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICBJTlBVVF9ISURERU5fU1RBVEUsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgSU5QVVRfU0hPV05fU1RBVEUsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPD0+IConLCBhbmltYXRlKCcxNTBtcycpKSxcbiAgICBdKSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbU2t5U2VhcmNoQWRhcHRlclNlcnZpY2VdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBzZWFyY2ggaW5wdXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIFVzZSBhIGNvbnRleHQtc2Vuc2l0aXZlIGxhYmVsLCBzdWNoIGFzIFwiU2VhcmNoIGNvbnN0aXR1ZW50cy5cIiBDb250ZXh0IGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHdoZW4gbXVsdGlwbGUgc2VhcmNoIGlucHV0cyBhcmUgaW4gY2xvc2UgcHJveGltaXR5LlxuICAgKiBJbiB0b29sYmFycywgc2VhcmNoIGlucHV0cyB1c2UgdGhlIGBsaXN0RGVzY3JpcHRvcmAgdG8gcHJvdmlkZSBjb250ZXh0LCBhbmQgdGhlIEFSSUEgbGFiZWwgZGVmYXVsdHMgdG8gXCJTZWFyY2ggPGxpc3REZXNjcmlwdG9yPi5cIlxuICAgKiBJZiB0aGUgYm94IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHNlYXJjaC4gVGhpcyBzZXRzIHRoZSBzZWFyY2gncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGJveCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWFyY2ggdGV4dCBpcyBhcHBsaWVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hBcHBseSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWFyY2ggdGV4dCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VhcmNoIHRleHQgaXMgY2xlYXJlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VhcmNoQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2VhcmNoIGNyaXRlcmlhIGZvciB0aGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwYW5kIG1vZGUgZm9yIHRoZSBzZWFyY2ggaW5wdXQuIFRoZSB2YWxpZCBvcHRpb25zXG4gICAqIGluY2x1ZGUgYFwicmVzcG9uc2l2ZVwiYCB0byBjb2xsYXBzZSB0aGUgc2VhcmNoIGlucHV0IGludG8gYSBidXR0b24gb25cbiAgICogbW9iaWxlIGRldmljZXMsIGBcIm5vbmVcImAgdG8gKm5vdCogY29sbGFwc2UgdGhlIHNlYXJjaCBpbnB1dCBvbiBtb2JpbGVcbiAgICogZGV2aWNlcywgYW5kIGBcImZpdFwiYCB0byBleHRlbmQgdGhlIHNlYXJjaCBpbnB1dCB0byBmaXQgdGhlIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IFwicmVzcG9uc2l2ZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4cGFuZE1vZGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19leHBhbmRNb2RlID0gdmFsdWUgPz8gRVhQQU5EX01PREVfUkVTUE9OU0lWRTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhwYW5kTW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfZXhwYW5kTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2VhcmNoaW5nIGFmdGVyIHVzZXJzIGVudGVyIHRleHQgaW4gdGhlIHNlYXJjaCBpbnB1dC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kZWJvdW5jZVRpbWUgPSB2YWx1ZSA/PyAwO1xuICAgIHRoaXMuI3NldHVwU2VhcmNoQ2hhbmdlZEV2ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZmlsdGVyIGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIHNlYXJjaCBpbnB1dCB1bnRpbCB1c2Vyc1xuICAgKiBlbnRlciBzZWFyY2ggY3JpdGVyaWEuXG4gICAqIEBkZWZhdWx0IFwiRmluZCBpbiB0aGlzIGxpc3RcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVyVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjbGVhckJ1dHRvblNob3duID0gZmFsc2U7XG5cbiAgcHVibGljIGRpc21pc3NCdXR0b25TaG93biA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpbnB1dEFuaW1hdGU6IHN0cmluZyA9IElOUFVUX1NIT1dOX1NUQVRFO1xuXG4gIHB1YmxpYyBpc0NvbGxhcHNpYmxlID0gdHJ1ZTtcblxuICBwdWJsaWMgaXNGdWxsV2lkdGggPSBmYWxzZTtcblxuICBwdWJsaWMgbW9iaWxlU2VhcmNoU2hvd24gPSBmYWxzZTtcblxuICBwdWJsaWMgc2VhcmNoQnV0dG9uU2hvd24gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgY29udGVudEluZm9PYnM6IE9ic2VydmFibGU8U2t5Q29udGVudEluZm8+IHwgdW5kZWZpbmVkO1xuXG4gICNjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNjb250ZW50SW5mb1Byb3ZpZGVyID0gaW5qZWN0KFNreUNvbnRlbnRJbmZvUHJvdmlkZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgI2VsUmVmOiBFbGVtZW50UmVmO1xuXG4gICNtYW51YWxGb2N1cyA9IGZhbHNlO1xuXG4gICNzZWFyY2hBZGFwdGVyOiBTa3lTZWFyY2hBZGFwdGVyU2VydmljZTtcblxuICAjc2VhcmNoVXBkYXRlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAjc2VhcmNoVXBkYXRlZFN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNfZGVib3VuY2VUaW1lID0gMDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI19leHBhbmRNb2RlID0gRVhQQU5EX01PREVfUkVTUE9OU0lWRTtcblxuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcmVhZG9ubHkgI21lZGlhUXVlcnlTdmMgPSBpbmplY3QoU2t5TWVkaWFRdWVyeVNlcnZpY2UpO1xuICByZWFkb25seSAjYnJlYWtwb2ludCA9IHRvU2lnbmFsKHRoaXMuI21lZGlhUXVlcnlTdmMuYnJlYWtwb2ludENoYW5nZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgc2VhcmNoQWRhcHRlcjogU2t5U2VhcmNoQWRhcHRlclNlcnZpY2UsXG4gICAgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiNzZWFyY2hBZGFwdGVyID0gc2VhcmNoQWRhcHRlcjtcbiAgICB0aGlzLiNjaGFuZ2VSZWYgPSBjaGFuZ2VSZWY7XG5cbiAgICB0aGlzLmNvbnRlbnRJbmZvT2JzID0gdGhpcy4jY29udGVudEluZm9Qcm92aWRlcj8uZ2V0SW5mbygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpKSB7XG4gICAgICB0aGlzLiNtZWRpYVF1ZXJ5U3ZjLmJyZWFrcG9pbnRDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpKVxuICAgICAgICAuc3Vic2NyaWJlKChicmVha3BvaW50KSA9PiB7XG4gICAgICAgICAgdGhpcy4jbWVkaWFRdWVyeUNhbGxiYWNrKGJyZWFrcG9pbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiNzZXR1cFNlYXJjaENoYW5nZWRFdmVudCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZXhwYW5kTW9kZUJpbmRpbmdDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZXhwYW5kTW9kZSkge1xuICAgICAgICBjYXNlIEVYUEFORF9NT0RFX05PTkU6XG4gICAgICAgICAgdGhpcy5pc0NvbGxhcHNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc0Z1bGxXaWR0aCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVYUEFORF9NT0RFX0ZJVDpcbiAgICAgICAgICB0aGlzLmlzQ29sbGFwc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzRnVsbFdpZHRoID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmlzQ29sbGFwc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNGdWxsV2lkdGggPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy4jc2VhcmNoQmluZGluZ0NoYW5nZWQoY2hhbmdlcykpIHtcbiAgICAgIHRoaXMuI3NlYXJjaFVwZGF0ZWQubmV4dCh0aGlzLnNlYXJjaFRleHQgPz8gJycpO1xuICAgICAgdGhpcy5jbGVhckJ1dHRvblNob3duID0gISEodGhpcy5zZWFyY2hUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCAhPT0gJycpO1xuICAgICAgaWYgKHRoaXMuI3Nob3VsZE9wZW5JbnB1dCgpKSB7XG4gICAgICAgIHRoaXMuaW5wdXRBbmltYXRlID0gSU5QVVRfU0hPV05fU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuI2NoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2hUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuY2xlYXJCdXR0b25TaG93biA9IGZhbHNlO1xuXG4gICAgdGhpcy4jc2VhcmNoQWRhcHRlci5mb2N1c0lucHV0KHRoaXMuI2VsUmVmKTtcbiAgICB0aGlzLiNzZWFyY2hVcGRhdGVkLm5leHQodGhpcy5zZWFyY2hUZXh0KTtcblxuICAgIHRoaXMuc2VhcmNoQXBwbHkuZW1pdCh0aGlzLnNlYXJjaFRleHQpO1xuXG4gICAgdGhpcy5zZWFyY2hDbGVhci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgZW50ZXJQcmVzcyhcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICBzZWFyY2hUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInIHx8IGV2ZW50LmNvZGUgPT09ICdOdW1wYWRFbnRlcicpIHtcbiAgICAgIHRoaXMuYXBwbHlTZWFyY2hUZXh0KHNlYXJjaFRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhcHBseVNlYXJjaFRleHQoc2VhcmNoVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgLy8gRG91YmxlIGNoZWNrIHRoYXQgc2VhcmNoIHRleHQgaXMgZGVmaW5lZCBiZWZvcmUgYXR0ZW1wdGluZyB0byB0cmltIG9mZiB3aGl0ZXNwYWNlXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoVGV4dCAhPT0gdGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQnV0dG9uU2hvd24gPSAhIShzZWFyY2hUZXh0ICYmIHNlYXJjaFRleHQgIT09ICcnKTtcbiAgICBpZiAoc2VhcmNoVGV4dCAmJiBzZWFyY2hUZXh0ICE9PSAnJykge1xuICAgICAgdGhpcy4jc2VhcmNoQWRhcHRlci5zZWxlY3RJbnB1dCh0aGlzLiNlbFJlZik7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hBcHBseS5lbWl0KHNlYXJjaFRleHQpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaFRleHRDaGFuZ2VkKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgdGhpcy4jc2VhcmNoVXBkYXRlZC5uZXh0KHNlYXJjaFRleHQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaElucHV0KHNob3dJbnB1dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpKSB7XG4gICAgICB0aGlzLiNtYW51YWxGb2N1cyA9IHRydWU7XG4gICAgICBpZiAoc2hvd0lucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXRBbmltYXRlID0gSU5QVVRfU0hPV05fU1RBVEU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0QW5pbWF0ZSA9IElOUFVUX0hJRERFTl9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jc2VhcmNoU2hvdWxkQ29sbGFwc2UoKSkge1xuICAgICAgdGhpcy4jc2VhcmNoQWRhcHRlci5zdGFydElucHV0QW5pbWF0aW9uKHRoaXMuI2VsUmVmKTtcblxuICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09IElOUFVUX1NIT1dOX1NUQVRFICYmIHRoaXMuI2JyZWFrcG9pbnQoKSA9PT0gJ3hzJykge1xuICAgICAgICB0aGlzLm1vYmlsZVNlYXJjaFNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hCdXR0b25TaG93biA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jc2VhcmNoU2hvdWxkQ29sbGFwc2UoKSkge1xuICAgICAgdGhpcy4jc2VhcmNoQWRhcHRlci5lbmRJbnB1dEFuaW1hdGlvbih0aGlzLiNlbFJlZik7XG5cbiAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSB0aGlzLiNicmVha3BvaW50KCk7XG5cbiAgICAgIHRoaXMuc2VhcmNoQnV0dG9uU2hvd24gPVxuICAgICAgICBldmVudC50b1N0YXRlID09PSBJTlBVVF9ISURERU5fU1RBVEUgJiYgYnJlYWtwb2ludCA9PT0gJ3hzJztcblxuICAgICAgaWYgKFxuICAgICAgICAoZXZlbnQudG9TdGF0ZSA9PT0gSU5QVVRfSElEREVOX1NUQVRFICYmIGJyZWFrcG9pbnQgPT09ICd4cycpIHx8XG4gICAgICAgIGJyZWFrcG9pbnQgIT09ICd4cydcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1vYmlsZVNlYXJjaFNob3duID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy4jbWFudWFsRm9jdXMgJiYgIXRoaXMuc2VhcmNoQnV0dG9uU2hvd24pIHtcbiAgICAgICAgICB0aGlzLiNzZWFyY2hBZGFwdGVyLmZvY3VzSW5wdXQodGhpcy4jZWxSZWYpO1xuICAgICAgICAgIHRoaXMuI21hbnVhbEZvY3VzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNzZWFyY2hVcGRhdGVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jc2VhcmNoVXBkYXRlZFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gICNzZWFyY2hCaW5kaW5nQ2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoYW5nZXNbJ3NlYXJjaFRleHQnXSAmJlxuICAgICAgY2hhbmdlc1snc2VhcmNoVGV4dCddLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXNbJ3NlYXJjaFRleHQnXS5jdXJyZW50VmFsdWVcbiAgICApO1xuICB9XG5cbiAgI2V4cGFuZE1vZGVCaW5kaW5nQ2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoYW5nZXNbJ2V4cGFuZE1vZGUnXSAmJlxuICAgICAgY2hhbmdlc1snZXhwYW5kTW9kZSddLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXNbJ2V4cGFuZE1vZGUnXS5jdXJyZW50VmFsdWVcbiAgICApO1xuICB9XG5cbiAgI3Nob3VsZE9wZW5JbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZWFyY2hUZXh0ICE9PSAnJyAmJlxuICAgICAgdGhpcy4jYnJlYWtwb2ludCgpID09PSAneHMnICYmXG4gICAgICB0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpXG4gICAgKTtcbiAgfVxuXG4gICNtZWRpYVF1ZXJ5Q2FsbGJhY2soYnJlYWtwb2ludDogU2t5QnJlYWtwb2ludCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpKSB7XG4gICAgICBpZiAoYnJlYWtwb2ludCA9PT0gJ3hzJykge1xuICAgICAgICB0aGlzLmlucHV0QW5pbWF0ZSA9IElOUFVUX0hJRERFTl9TVEFURTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEFuaW1hdGUgIT09IElOUFVUX1NIT1dOX1NUQVRFKSB7XG4gICAgICAgIHRoaXMuaW5wdXRBbmltYXRlID0gSU5QVVRfU0hPV05fU1RBVEU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vYmlsZVNlYXJjaFNob3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNzZWFyY2hTaG91bGRDb2xsYXBzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaXNDb2xsYXBzaWJsZSB8fCB0aGlzLmlzQ29sbGFwc2libGUgPT09IHVuZGVmaW5lZCkgJiZcbiAgICAgIHRoaXMuaXNGdWxsV2lkdGggIT09IHRydWVcbiAgICApO1xuICB9XG5cbiAgI3NldHVwU2VhcmNoQ2hhbmdlZEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuI3NlYXJjaFVwZGF0ZWRTdWI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLiNzZWFyY2hVcGRhdGVkU3ViID0gdGhpcy4jc2VhcmNoVXBkYXRlZFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktc2VhcmNoLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwic2t5LXNlYXJjaC1idXR0b24tY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb24gc2t5LXNlYXJjaC1idG4tb3BlblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X3NlYXJjaF9vcGVuJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICBbaGlkZGVuXT1cIiFzZWFyY2hCdXR0b25TaG93blwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdza3ktc2VhcmNoLWJ0bi1vcGVuLWFwcGxpZWQnOiBjbGVhckJ1dHRvblNob3duIH1cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaElucHV0KHRydWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSWNvblRlbXBsYXRlXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1zZWFyY2gtZGlzbWlzcy1jb250YWluZXJcIlxuICAgIFtoaWRkZW5dPVwic2VhcmNoQnV0dG9uU2hvd25cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktc2VhcmNoLWRpc21pc3MtYWJzb2x1dGUnOiBtb2JpbGVTZWFyY2hTaG93biB8fCBpc0Z1bGxXaWR0aFxuICAgIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS1zZWFyY2gtaXRlbS1pbnB1dFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1zZWFyY2gtaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgW0BpbnB1dFN0YXRlXT1cImlucHV0QW5pbWF0ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LXNlYXJjaC1pbnB1dC1jb250YWluZXItaGFzLXZhbHVlJzogc2VhcmNoVGV4dD8udHJpbSgpXG4gICAgICAgIH1cIlxuICAgICAgICAoQGlucHV0U3RhdGUuc3RhcnQpPVwiaW5wdXRBbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKEBpbnB1dFN0YXRlLmRvbmUpPVwiaW5wdXRBbmltYXRpb25FbmQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaW5wdXQtYm94IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0PVwic2t5SWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sIHNreS1zZWFyY2gtaW5wdXQgc2t5LXJvdW5kZWQtY29ybmVyc1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBza3lJZFxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnlcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogYXJpYUxhYmVsIHx8XG4gICAgICAgICAgICAgICAgICAoKGNvbnRlbnRJbmZvT2JzIHwgYXN5bmMpPy5kZXNjcmlwdG9yPy50eXBlID09PSAndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgPyAoJ3NreXV4X3NlYXJjaF9hcmlhX2xhYmVsX2Rlc2NyaXB0b3InXG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGNvbnRlbnRJbmZvT2JzIHwgYXN5bmMpPy5kZXNjcmlwdG9yPy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiAoJ3NreXV4X3NlYXJjaF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJUZXh0IHx8ICgnc2t5dXhfc2VhcmNoX3BsYWNlaG9sZGVyJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAoa2V5dXApPVwiZW50ZXJQcmVzcygkZXZlbnQsIHNlYXJjaFRleHQpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRleHRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0biBza3ktaW5wdXQtZ3JvdXAtY2xlYXIgc2t5LWlucHV0LWJveC1idG4taW5zZXRcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCIhY2xlYXJCdXR0b25TaG93blwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1zZWFyY2gtYnRuIHNreS1zZWFyY2gtYnRuLWNsZWFyXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hUZXh0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c2t5LWljb24gaWNvbk5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwLWJ0biBza3ktaW5wdXQtYm94LWJ0bi1pbnNldFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1zZWFyY2gtYnRuIHNreS1zZWFyY2gtYnRuLWFwcGx5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X3NlYXJjaF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTZWFyY2hUZXh0KHNlYXJjaFRleHQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtaWNvbiBza3ktaW5wdXQtYm94LWljb24taW5zZXQtbGVmdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2t5LWlucHV0LWJveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktc2VhcmNoLWl0ZW0tZGlzbWlzc1wiPlxuICAgICAgQGlmIChtb2JpbGVTZWFyY2hTaG93bikge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1zZWFyY2gtYnRuLWRpc21pc3NcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidza3l1eF9zZWFyY2hfZGlzbWlzcycgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktYnRuLWljb24tYm9yZGVybGVzcyc6ICdtb2Rlcm4nXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaElucHV0KGZhbHNlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uTmFtZT1cImNoZXZyb24tbGVmdFwiIC8+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uTmFtZT1cImNoZXZyb24tZG91YmxlLWxlZnRcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uVGVtcGxhdGU+XG4gIDxza3ktaWNvbiBpY29uTmFtZT1cInNlYXJjaFwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkySearchComponent } from './search.component';\nimport * as i0 from \"@angular/core\";\nexport class SkySearchModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchModule, declarations: [SkySearchComponent], imports: [CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule], exports: [SkySearchComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchModule, imports: [CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySearchModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBZXhELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFaWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsV0FBVztZQUNYLGFBQWE7WUFDYixjQUFjO1lBQ2QsV0FBVyxhQUVILGtCQUFrQjsrR0FFakIsZUFBZSxZQVZ4QixZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxXQUFXOzsyRkFJRixlQUFlO2tCQWIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsV0FBVztxQkFDWjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2guY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5U2VhcmNoQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lJbnB1dEJveE1vZHVsZSxcbiAgICBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVNlYXJjaENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlYXJjaE1vZHVsZSB7fVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkySelectionModalItemSelectedPipe {\n transform(id, selectedIdMap) {\n return selectedIdMap.has(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, isStandalone: true, name: \"skySelectionModalItemSelected\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, decorators: [{\n type: Pipe,\n args: [{\n standalone: true,\n name: 'skySelectionModalItemSelected',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWl0ZW0tc2VsZWN0ZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwtaXRlbS1zZWxlY3RlZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRDs7R0FFRztBQUtILE1BQU0sT0FBTyxpQ0FBaUM7SUFDckMsU0FBUyxDQUFDLEVBQVcsRUFBRSxhQUFvQztRQUNoRSxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs4R0FIVSxpQ0FBaUM7NEdBQWpDLGlDQUFpQzs7MkZBQWpDLGlDQUFpQztrQkFKN0MsSUFBSTttQkFBQztvQkFDSixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLCtCQUErQjtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgbmFtZTogJ3NreVNlbGVjdGlvbk1vZGFsSXRlbVNlbGVjdGVkJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VsZWN0aW9uTW9kYWxJdGVtU2VsZWN0ZWRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oaWQ6IHVua25vd24sIHNlbGVjdGVkSWRNYXA6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZElkTWFwLmhhcyhpZCk7XG4gIH1cbn1cbiJdfQ==","/**\n * @internal\n * Context for the selection modal. These values are provided by the selection modal service.\n */\nexport class SkySelectionModalContext {\n constructor(descriptorProperty, idProperty, initialSearch, initialValue, searchAsync, selectMode, selectionDescriptor, showAddButton, userConfig) {\n this.descriptorProperty = descriptorProperty;\n this.idProperty = idProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.searchAsync = searchAsync;\n this.selectMode = selectMode;\n this.selectionDescriptor = selectionDescriptor;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tbW9kYWwvdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQW1CbkMsWUFDRSxrQkFBMEIsRUFDMUIsVUFBa0IsRUFDbEIsYUFBcUIsRUFDckIsWUFBdUIsRUFDdkIsV0FBK0MsRUFDL0MsVUFBbUMsRUFDbkMsbUJBQTJCLEVBQzNCLGFBQXNCLEVBQ3RCLFVBQStDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLWZ1bmN0aW9uJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIH0gZnJvbSAnLi4vLi4vbG9va3VwL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vbG9va3VwL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtbmF0aXZlLXBpY2tlci1jb25maWcnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQ29udGV4dCBmb3IgdGhlIHNlbGVjdGlvbiBtb2RhbC4gVGhlc2UgdmFsdWVzIGFyZSBwcm92aWRlZCBieSB0aGUgc2VsZWN0aW9uIG1vZGFsIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQge1xuICBwdWJsaWMgZGVzY3JpcHRvclByb3BlcnR5OiBzdHJpbmc7XG5cbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZztcblxuICBwdWJsaWMgaW5pdGlhbFNlYXJjaDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IHVua25vd25bXTtcblxuICBwdWJsaWMgc2VhcmNoQXN5bmM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRnVuY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdGlvbkRlc2NyaXB0b3I6IHN0cmluZztcblxuICBwdWJsaWMgc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGU7XG5cbiAgcHVibGljIHNob3dBZGRCdXR0b246IGJvb2xlYW47XG5cbiAgcHVibGljIHVzZXJDb25maWc6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRlc2NyaXB0b3JQcm9wZXJ0eTogc3RyaW5nLFxuICAgIGlkUHJvcGVydHk6IHN0cmluZyxcbiAgICBpbml0aWFsU2VhcmNoOiBzdHJpbmcsXG4gICAgaW5pdGlhbFZhbHVlOiB1bmtub3duW10sXG4gICAgc2VhcmNoQXN5bmM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRnVuY3Rpb24sXG4gICAgc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUsXG4gICAgc2VsZWN0aW9uRGVzY3JpcHRvcjogc3RyaW5nLFxuICAgIHNob3dBZGRCdXR0b246IGJvb2xlYW4sXG4gICAgdXNlckNvbmZpZzogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb25maWcsXG4gICkge1xuICAgIHRoaXMuZGVzY3JpcHRvclByb3BlcnR5ID0gZGVzY3JpcHRvclByb3BlcnR5O1xuICAgIHRoaXMuaWRQcm9wZXJ0eSA9IGlkUHJvcGVydHk7XG4gICAgdGhpcy5pbml0aWFsU2VhcmNoID0gaW5pdGlhbFNlYXJjaDtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLnNlYXJjaEFzeW5jID0gc2VhcmNoQXN5bmM7XG4gICAgdGhpcy5zZWxlY3RNb2RlID0gc2VsZWN0TW9kZTtcbiAgICB0aGlzLnNlbGVjdGlvbkRlc2NyaXB0b3IgPSBzZWxlY3Rpb25EZXNjcmlwdG9yO1xuICAgIHRoaXMuc2hvd0FkZEJ1dHRvbiA9IHNob3dBZGRCdXR0b247XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdXNlckNvbmZpZztcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';\nimport { SkyIdService, SkyLiveAnnouncerService, SkyViewkeeperModule, } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/icon\";\nimport * as i4 from \"@skyux/lists\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/modals\";\nimport * as i7 from \"../search/search.component\";\nimport * as i8 from \"@skyux/layout\";\nimport * as i9 from \"@skyux/indicators\";\nimport * as i10 from \"@skyux/core\";\n/**\n * @internal\n */\nexport class SkySelectionModalComponent {\n #continuationData;\n #currentSearchSub;\n #ngUnsubscribe;\n #offset;\n #changeDetector;\n #idSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor() {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n this.addClick = new Subject();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.displayedItems = [];\n this.hasMoreItems = false;\n this.isLoadingMore = false;\n this.isSearching = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.items = [];\n this.onlyShowSelected = false;\n this.repeaterItemTemplate = null;\n this.selectedIdMap = new Map();\n this.#ngUnsubscribe = new Subject();\n this.#offset = 0;\n this.context = inject(SkySelectionModalContext);\n this.modalInstance = inject(SkyModalInstance);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#idSvc = inject(SkyIdService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.id = this.#idSvc.generateId();\n }\n ngOnInit() {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n this.#createInitialSelectedItemsMap();\n this.#loadSearchResults();\n }\n ngOnDestroy() {\n this.#cancelCurrentSearch();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n addButtonClicked() {\n this.addClick.next();\n }\n clearAll() {\n this.selectedIdMap = new Map(this.selectedIdMap);\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n this.updateDisplayedItems();\n this.#changeDetector.markForCheck();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemClick(selectedItem) {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addItem(itemToAdd) {\n // Add the selected item, then perform the search again in case the\n // newly-added item should be displayed as a search results.\n this.#offset = 0;\n this.onItemSelect(true, itemToAdd);\n this.#loadSearchResults();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onItemSelect(newSelectState, itemToSelect) {\n const itemId = itemToSelect[this.context.idProperty];\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n }\n else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n else {\n this.selectedIdMap.delete(itemId);\n }\n }\n this.updateDisplayedItems();\n }\n searchApplied(searchText) {\n this.#offset = 0;\n this.searchText = searchText;\n this.#loadSearchResults();\n }\n selectAll() {\n this.selectedIdMap = new Map();\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n this.updateDisplayedItems();\n }\n infiniteScrollEnd() {\n this.#cancelCurrentSearch();\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n this.#performSearch((result) => {\n this.items = this.items.concat(result.items);\n this.updateDisplayedItems();\n this.isLoadingMore = false;\n });\n }\n }\n save() {\n const selectedItems = Array.from(this.selectedIdMap.values(), (itemData, index) => ({\n index,\n itemData,\n })).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n this.modalInstance.save(selectedItems);\n }\n updateDisplayedItems() {\n const selectedItems = this.items.filter((item) => this.selectedIdMap.has(item[this.context.idProperty]));\n if (this.onlyShowSelected) {\n this.displayedItems = selectedItems;\n }\n else {\n this.displayedItems = this.items;\n }\n setTimeout(() => {\n this.#announceSelectionState(selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n });\n }\n #loadSearchResults() {\n this.#cancelCurrentSearch();\n this.isSearching = true;\n this.#performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n this.#changeDetector.markForCheck();\n }\n #createInitialSelectedItemsMap() {\n this.selectedIdMap = new Map(this.context.initialValue.map((item) => [\n item[this.context.idProperty],\n item,\n ]));\n }\n #performSearch(processResults) {\n this.#currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.#offset,\n searchText: this.searchText || '',\n continuationData: this.#continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n this.#continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore || false;\n this.#offset = this.items.length;\n this.updateDisplayedItems();\n this.#changeDetector.markForCheck();\n });\n }\n #cancelCurrentSearch() {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n #announceSelectionState(selectedItemCount, displayedItemCount) {\n this.#resourcesSvc\n .getString('skyux_lookup_show_more_displayed_items_updated', selectedItemCount.toString(), displayedItemCount.toString())\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkySelectionModalComponent, isStandalone: true, selector: \"sky-selection-modal\", ngImport: i0, template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <sky-wait [isWaiting]=\\\"isSearching\\\" />\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [label]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDisplayedItems()\\\"\\n >\\n <sky-checkbox-label>\\n {{\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources\\n }}\\n </sky-checkbox-label>\\n </sky-checkbox>\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (!isSearching && displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater\\n class=\\\"sky-lookup-show-more-repeater\\\"\\n expandMode=\\\"none\\\"\\n [ngClass]=\\\"{ 'hover-rows': context.selectMode === 'single' }\\\"\\n >\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n [isSelected]=\\\"\\n item[context.idProperty]\\n | skySelectionModalItemSelected: selectedIdMap\\n \\\"\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: { item: item }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"hasMoreItems\\\"\\n [loading]=\\\"isLoadingMore\\\"\\n (scrollEnd)=\\\"infiniteScrollEnd()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [disabled]=\\\"isSearching\\\"\\n (click)=\\\"save()\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\">\\n {{ item[context.descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-modal:not(.sky-theme-modern *){--sky-override-selection-modal-no-results-padding: 20px 0}.sky-lookup-show-more-no-results{padding:var(--sky-override-selection-modal-no-results-padding, var(--sky-space-inset-vertical-top-xl) var(--sky-space-inset-vertical-right-xl) var(--sky-space-inset-vertical-bottom-xl) var(--sky-space-inset-vertical-left-xl))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: SkyCheckboxModule }, { kind: \"component\", type: i2.λ3, selector: \"sky-checkbox\", inputs: [\"label\", \"labelledBy\", \"id\", \"disabled\", \"tabindex\", \"name\", \"helpPopoverContent\", \"helpPopoverTitle\", \"icon\", \"iconName\", \"checkboxType\", \"checked\", \"indeterminate\", \"required\", \"labelText\", \"labelHidden\", \"hintText\", \"stacked\", \"helpKey\"], outputs: [\"change\", \"checkedChange\", \"disabledChange\", \"indeterminateChange\"] }, { kind: \"component\", type: i2.λ4, selector: \"sky-checkbox-label\" }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i3.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyInfiniteScrollModule }, { kind: \"component\", type: i4.λ6, selector: \"sky-infinite-scroll\", inputs: [\"enabled\", \"loading\"], outputs: [\"scrollEnd\"] }, { kind: \"ngmodule\", type: SkyLookupResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyModalModule }, { kind: \"component\", type: i6.λ5, selector: \"sky-modal\", inputs: [\"formErrors\", \"headingText\", \"helpKey\", \"helpPopoverContent\", \"helpPopoverTitle\", \"ariaRole\", \"tiledBody\", \"ariaDescribedBy\", \"ariaLabelledBy\", \"layout\"] }, { kind: \"component\", type: i6.λ2, selector: \"sky-modal-content\" }, { kind: \"component\", type: i6.λ3, selector: \"sky-modal-footer\" }, { kind: \"component\", type: i6.λ4, selector: \"sky-modal-header\" }, { kind: \"ngmodule\", type: SkyRepeaterModule }, { kind: \"component\", type: i4.λ11, selector: \"sky-repeater\", inputs: [\"activeIndex\", \"ariaLabel\", \"reorderable\", \"expandMode\"], outputs: [\"activeIndexChange\", \"orderChange\"] }, { kind: \"component\", type: i4.λ10, selector: \"sky-repeater-item\", inputs: [\"disabled\", \"itemName\", \"inlineFormConfig\", \"inlineFormTemplate\", \"isExpanded\", \"isSelected\", \"reorderable\", \"selectable\", \"showInlineForm\", \"tag\"], outputs: [\"collapse\", \"expand\", \"inlineFormClose\", \"isSelectedChange\"] }, { kind: \"component\", type: i4.λ8, selector: \"sky-repeater-item-content\" }, { kind: \"ngmodule\", type: SkySearchModule }, { kind: \"component\", type: i7.SkySearchComponent, selector: \"sky-search\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"searchText\", \"expandMode\", \"debounceTime\", \"disabled\", \"placeholderText\"], outputs: [\"searchApply\", \"searchChange\", \"searchClear\"] }, { kind: \"pipe\", type: SkySelectionModalItemSelectedPipe, name: \"skySelectionModalItemSelected\" }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"ngmodule\", type: SkyToolbarModule }, { kind: \"component\", type: i8.λ37, selector: \"sky-toolbar\", inputs: [\"listDescriptor\"] }, { kind: \"component\", type: i8.λ39, selector: \"sky-toolbar-item\" }, { kind: \"component\", type: i8.λ38, selector: \"sky-toolbar-section\" }, { kind: \"component\", type: i8.λ40, selector: \"sky-toolbar-view-actions\" }, { kind: \"ngmodule\", type: SkyWaitModule }, { kind: \"component\", type: i9.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }, { kind: \"ngmodule\", type: SkyViewkeeperModule }, { kind: \"directive\", type: i10.λ3, selector: \"[skyViewkeeper]\", inputs: [\"skyViewkeeper\", \"skyViewkeeperOmitShadow\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalItemSelectedPipe,\n SkyThemeModule,\n SkyToolbarModule,\n SkyWaitModule,\n SkyViewkeeperModule,\n ], template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <sky-wait [isWaiting]=\\\"isSearching\\\" />\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [label]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDisplayedItems()\\\"\\n >\\n <sky-checkbox-label>\\n {{\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources\\n }}\\n </sky-checkbox-label>\\n </sky-checkbox>\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (!isSearching && displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater\\n class=\\\"sky-lookup-show-more-repeater\\\"\\n expandMode=\\\"none\\\"\\n [ngClass]=\\\"{ 'hover-rows': context.selectMode === 'single' }\\\"\\n >\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n [isSelected]=\\\"\\n item[context.idProperty]\\n | skySelectionModalItemSelected: selectedIdMap\\n \\\"\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: { item: item }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"hasMoreItems\\\"\\n [loading]=\\\"isLoadingMore\\\"\\n (scrollEnd)=\\\"infiniteScrollEnd()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [disabled]=\\\"isSearching\\\"\\n (click)=\\\"save()\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\">\\n {{ item[context.descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-modal:not(.sky-theme-modern *){--sky-override-selection-modal-no-results-padding: 20px 0}.sky-lookup-show-more-no-results{padding:var(--sky-override-selection-modal-no-results-padding, var(--sky-space-inset-vertical-top-xl) var(--sky-space-inset-vertical-right-xl) var(--sky-space-inset-vertical-bottom-xl) var(--sky-space-inset-vertical-left-xl))}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFnQixN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QiwwZUFDakIsYUFBYSwrS0FDYix1QkFBdUIsMkpBQ3ZCLHdCQUF3Qix1R0FDeEIsY0FBYyxvY0FDZCxpQkFBaUIsb2tCQUNqQixlQUFlLG1SQUNmLGlDQUFpQyxxRUFDakMsY0FBYyw4QkFDZCxnQkFBZ0IsNFVBQ2hCLGFBQWEseUxBQ2IsbUJBQW1COzsyRkFHViwwQkFBMEI7a0JBckJ0QyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixpQ0FBaUM7d0JBQ2pDLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG1CQUFtQjtxQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUlkU2VydmljZSxcbiAgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UsXG4gIFNreVZpZXdrZWVwZXJNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5V2FpdE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRvb2xiYXJNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGF5b3V0JztcbmltcG9ydCB7IFNreUluZmluaXRlU2Nyb2xsTW9kdWxlLCBTa3lSZXBlYXRlck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9saXN0cyc7XG5pbXBvcnQgeyBTa3lNb2RhbEluc3RhbmNlLCBTa3lNb2RhbE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVNlYXJjaE1vZHVsZSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbEl0ZW1TZWxlY3RlZFBpcGUgfSBmcm9tICcuL3NlbGVjdGlvbi1tb2RhbC1pdGVtLXNlbGVjdGVkLnBpcGUnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdCB9IGZyb20gJy4vdHlwZXMvc2VsZWN0aW9uLW1vZGFsLXNlYXJjaC1yZXN1bHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2VsZWN0aW9uLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lDaGVja2JveE1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUluZmluaXRlU2Nyb2xsTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lNb2RhbE1vZHVsZSxcbiAgICBTa3lSZXBlYXRlck1vZHVsZSxcbiAgICBTa3lTZWFyY2hNb2R1bGUsXG4gICAgU2t5U2VsZWN0aW9uTW9kYWxJdGVtU2VsZWN0ZWRQaXBlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVRvb2xiYXJNb2R1bGUsXG4gICAgU2t5V2FpdE1vZHVsZSxcbiAgICBTa3lWaWV3a2VlcGVyTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBuZXcgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICovXG4gIHB1YmxpYyBhZGRDbGljayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHVibGljIGRpc3BsYXllZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBoYXNNb3JlSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogVXNlZCB0byBhc3NvY2lhdGUgdGhpcyBtb2RhbCB3aXRoIGl0cyBvd25pbmcgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpc0xvYWRpbmdNb3JlID0gZmFsc2U7XG5cbiAgcHVibGljIGlzU2VhcmNoaW5nID0gZmFsc2U7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBvbmx5U2hvd1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlcGVhdGVySXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHNlbGVjdGVkSWRNYXAgPSBuZXcgTWFwPHVua25vd24sIHVua25vd24+KCk7XG5cbiAgI2NvbnRpbnVhdGlvbkRhdGE6IHVua25vd247XG5cbiAgI2N1cnJlbnRTZWFyY2hTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI29mZnNldCA9IDA7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoU2t5U2VsZWN0aW9uTW9kYWxDb250ZXh0KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsSW5zdGFuY2UgPSBpbmplY3QoU2t5TW9kYWxJbnN0YW5jZSk7XG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5jb250ZXh0LnVzZXJDb25maWcuaXRlbVRlbXBsYXRlIHx8IG51bGw7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5jb250ZXh0LmluaXRpYWxTZWFyY2g7XG5cbiAgICB0aGlzLiNjcmVhdGVJbml0aWFsU2VsZWN0ZWRJdGVtc01hcCgpO1xuICAgIHRoaXMuI2xvYWRTZWFyY2hSZXN1bHRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jY2FuY2VsQ3VycmVudFNlYXJjaCgpO1xuXG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZElkTWFwID0gbmV3IE1hcCh0aGlzLnNlbGVjdGVkSWRNYXApO1xuXG4gICAgLy8gT25seSBkZXNlbGVjdCBpdGVtcyB0aGF0IGhhdmUgYmVlbiBsb2FkZWQ7IGl0ZW1zIHRoYXQgd291bGQgYmUgbG9hZGVkXG4gICAgLy8gYWZ0ZXIgYW4gaW5maW5pdGUgc2Nyb2xsIGV2ZW50IHNob3VsZCByZW1haW4gc2VsZWN0ZWQuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZE1hcC5kZWxldGUoaXRlbVt0aGlzLmNvbnRleHQuaWRQcm9wZXJ0eV0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkSXRlbXMoKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHVibGljIGl0ZW1DbGljayhzZWxlY3RlZEl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRleHQuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMub25JdGVtU2VsZWN0KCFzZWxlY3RlZEl0ZW0uc2VsZWN0ZWQsIHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHVibGljIGFkZEl0ZW0oaXRlbVRvQWRkOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBBZGQgdGhlIHNlbGVjdGVkIGl0ZW0sIHRoZW4gcGVyZm9ybSB0aGUgc2VhcmNoIGFnYWluIGluIGNhc2UgdGhlXG4gICAgLy8gbmV3bHktYWRkZWQgaXRlbSBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGEgc2VhcmNoIHJlc3VsdHMuXG4gICAgdGhpcy4jb2Zmc2V0ID0gMDtcbiAgICB0aGlzLm9uSXRlbVNlbGVjdCh0cnVlLCBpdGVtVG9BZGQpO1xuICAgIHRoaXMuI2xvYWRTZWFyY2hSZXN1bHRzKCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgb25JdGVtU2VsZWN0KG5ld1NlbGVjdFN0YXRlOiBib29sZWFuLCBpdGVtVG9TZWxlY3Q6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW1Ub1NlbGVjdFt0aGlzLmNvbnRleHQuaWRQcm9wZXJ0eV07XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgTWFwIHNvIHRoZSBwaXBlIHRyYW5zZm9ybSB3aWxsIGV4ZWN1dGUgb24gdGhlIG5leHRcbiAgICAvLyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgIHRoaXMuc2VsZWN0ZWRJZE1hcCA9IG5ldyBNYXAodGhpcy5zZWxlY3RlZElkTWFwKTtcblxuICAgIGlmICh0aGlzLmNvbnRleHQuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWRNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLnNldChpdGVtSWQsIGl0ZW1Ub1NlbGVjdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWRNYXAuc2V0KGl0ZW1JZCwgaXRlbVRvU2VsZWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZE1hcC5kZWxldGUoaXRlbUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURpc3BsYXllZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoQXBwbGllZChzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNvZmZzZXQgPSAwO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG5cbiAgICB0aGlzLiNsb2FkU2VhcmNoUmVzdWx0cygpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSWRNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLnNldChpdGVtW3RoaXMuY29udGV4dC5pZFByb3BlcnR5XSwgaXRlbSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRJdGVtcygpO1xuICB9XG5cbiAgcHVibGljIGluZmluaXRlU2Nyb2xsRW5kKCk6IHZvaWQge1xuICAgIHRoaXMuI2NhbmNlbEN1cnJlbnRTZWFyY2goKTtcblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGVsc2UgY2FzZSB3b3VsZCBvbmx5IGhhcHBlbiBpZiB0aGlzIHdhcyBjYWxsZWQgZGlyZWN0bHkgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmhhc01vcmVJdGVtcykge1xuICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlID0gdHJ1ZTtcblxuICAgICAgdGhpcy4jcGVyZm9ybVNlYXJjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmNvbmNhdChyZXN1bHQuaXRlbXMpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkSXRlbXMoKTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLnZhbHVlcygpLFxuICAgICAgKGl0ZW1EYXRhLCBpbmRleCkgPT4gKHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGl0ZW1EYXRhLFxuICAgICAgfSksXG4gICAgKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5pbmRleE9mKGEuaXRlbURhdGEpIDwgdGhpcy5pdGVtcy5pbmRleE9mKGIuaXRlbURhdGEpXG4gICAgICAgID8gLTFcbiAgICAgICAgOiAxO1xuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RhbEluc3RhbmNlLnNhdmUoc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGlzcGxheWVkSXRlbXMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLmhhcyhpdGVtW3RoaXMuY29udGV4dC5pZFByb3BlcnR5XSksXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm9ubHlTaG93U2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2Fubm91bmNlU2VsZWN0aW9uU3RhdGUoXG4gICAgICAgIHNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zLmxlbmd0aCxcbiAgICAgICk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gICNsb2FkU2VhcmNoUmVzdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG5cbiAgICB0aGlzLmlzU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuI3BlcmZvcm1TZWFyY2goKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5pc1NlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pdGVtcyA9IHJlc3VsdC5pdGVtcztcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI2NyZWF0ZUluaXRpYWxTZWxlY3RlZEl0ZW1zTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZE1hcCA9IG5ldyBNYXAoXG4gICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLm1hcCgoaXRlbSkgPT4gW1xuICAgICAgICAoaXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5jb250ZXh0LmlkUHJvcGVydHldLFxuICAgICAgICBpdGVtLFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxuXG4gICNwZXJmb3JtU2VhcmNoKFxuICAgIHByb2Nlc3NSZXN1bHRzOiAocmVzdWx0OiBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdCkgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHRoaXMuY29udGV4dFxuICAgICAgLnNlYXJjaEFzeW5jKHtcbiAgICAgICAgZGlzcGxheVR5cGU6ICdtb2RhbCcsXG4gICAgICAgIG9mZnNldDogdGhpcy4jb2Zmc2V0LFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQgfHwgJycsXG4gICAgICAgIGNvbnRpbnVhdGlvbkRhdGE6IHRoaXMuI2NvbnRpbnVhdGlvbkRhdGEsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBwcm9jZXNzUmVzdWx0cyhyZXN1bHQpO1xuXG4gICAgICAgIHRoaXMuI2NvbnRpbnVhdGlvbkRhdGEgPSByZXN1bHQuY29udGludWF0aW9uRGF0YTtcbiAgICAgICAgdGhpcy5oYXNNb3JlSXRlbXMgPSByZXN1bHQuaGFzTW9yZSB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy4jb2Zmc2V0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICAjY2FuY2VsQ3VycmVudFNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VycmVudFNlYXJjaFN1Yikge1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1NlYXJjaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNhbm5vdW5jZVNlbGVjdGlvblN0YXRlKFxuICAgIHNlbGVjdGVkSXRlbUNvdW50OiBudW1iZXIsXG4gICAgZGlzcGxheWVkSXRlbUNvdW50OiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfZGlzcGxheWVkX2l0ZW1zX3VwZGF0ZWQnLFxuICAgICAgICBzZWxlY3RlZEl0ZW1Db3VudC50b1N0cmluZygpLFxuICAgICAgICBkaXNwbGF5ZWRJdGVtQ291bnQudG9TdHJpbmcoKSxcbiAgICAgIClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZVN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKHJlc291cmNlU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgQGlmIChjb250ZXh0LnVzZXJDb25maWc/LnRpdGxlKSB7XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICB9IEBlbHNlIHtcbiAgICAgIHt7XG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgIH19XG4gICAgfVxuICA8L3NreS1tb2RhbC1oZWFkZXI+XG4gIDxza3ktbW9kYWwtY29udGVudFxuICAgIFtza3lWaWV3a2VlcGVyXT1cIlsnLnNreS1sb29rdXAtc2hvdy1tb3JlLXRvb2xiYXItd3JhcHBlciddXCJcbiAgPlxuICAgIDxza3ktd2FpdCBbaXNXYWl0aW5nXT1cImlzU2VhcmNoaW5nXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyXCI+XG4gICAgICA8c2t5LXRvb2xiYXJcbiAgICAgICAgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC10b29sYmFyXCJcbiAgICAgICAgW2xpc3REZXNjcmlwdG9yXT1cImNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclwiXG4gICAgICA+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgQGlmIChjb250ZXh0LnNob3dBZGRCdXR0b24pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkX2J1dHRvbl9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQnV0dG9uQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImFkZFwiIC8+XG4gICAgICAgICAgICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICAgIEBpZiAoY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIDxza3ktdG9vbGJhciBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLW11bHRpc2VsZWN0LXRvb2xiYXJcIj5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zZWxlY3QtYWxsLWJ0blwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xlYXItYWxsLWJ0blwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgWyhjaGVja2VkKV09XCJvbmx5U2hvd1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZURpc3BsYXllZEl0ZW1zKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNreS1jaGVja2JveC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc2t5LWNoZWNrYm94LWxhYmVsPlxuICAgICAgICAgICAgICA8L3NreS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFpc1NlYXJjaGluZyAmJiBkaXNwbGF5ZWRJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LWxvb2t1cC1zaG93LW1vcmUtbm8tcmVzdWx0c1wiPlxuICAgICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9ub19yZXN1bHRzJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxza3ktcmVwZWF0ZXJcbiAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtcmVwZWF0ZXJcIlxuICAgICAgZXhwYW5kTW9kZT1cIm5vbmVcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaG92ZXItcm93cyc6IGNvbnRleHQuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScgfVwiXG4gICAgPlxuICAgICAgQGZvciAoaXRlbSBvZiBkaXNwbGF5ZWRJdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICA8c2t5LXJlcGVhdGVyLWl0ZW1cbiAgICAgICAgICBbaXNTZWxlY3RlZF09XCJcbiAgICAgICAgICAgIGl0ZW1bY29udGV4dC5pZFByb3BlcnR5XVxuICAgICAgICAgICAgICB8IHNreVNlbGVjdGlvbk1vZGFsSXRlbVNlbGVjdGVkOiBzZWxlY3RlZElkTWFwXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc2VsZWN0YWJsZV09XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJpdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgIChpc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJlcGVhdGVySXRlbVRlbXBsYXRlID8/IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgICAgfVxuICAgIDwvc2t5LXJlcGVhdGVyPlxuICAgIDxza3ktaW5maW5pdGUtc2Nyb2xsXG4gICAgICBbZW5hYmxlZF09XCJoYXNNb3JlSXRlbXNcIlxuICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nTW9yZVwiXG4gICAgICAoc2Nyb2xsRW5kKT1cImluZmluaXRlU2Nyb2xsRW5kKClcIlxuICAgIC8+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2NvbnRleHQnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1NlYXJjaGluZ1wiXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3QnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1jbG9zZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbEluc3RhbmNlLmNsb3NlKClcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NhbmNlbCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9za3ktbW9kYWwtZm9vdGVyPlxuPC9za3ktbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAge3sgaXRlbVtjb250ZXh0LmRlc2NyaXB0b3JQcm9wZXJ0eV0gfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { Subject } from 'rxjs';\n/**\n * Represents an instance of a selection modal.\n */\nexport class SkySelectionModalInstance {\n /**\n * An event that the selection modal instance emits when it closes.\n * It emits a `SkySelectionModalCloseArgs` object with a `selectedItems` property that includes\n * items selected by users on close or save and a `reason` property that indicates\n * whether the selection modal was saved or closed without saving.\n * The `reason` property accepts `\"cancel\"`, `\"close\"`, and `\"save\"`.\n */\n get closed() {\n return this.#closedObs;\n }\n /**\n * @internal\n */\n get itemAdded() {\n return this.#itemAddedObs;\n }\n #closed = new Subject();\n #closedObs;\n #itemAdded = new Subject();\n #itemAddedObs;\n constructor(id) {\n this.id = id;\n this.#closedObs = this.#closed.asObservable();\n this.#itemAddedObs = this.#itemAdded.asObservable();\n }\n /**\n * @internal\n */\n close(args) {\n this.#closed.next(args);\n this.#closed.complete();\n }\n /**\n * @internal\n */\n addItem(itemToAdd) {\n this.#itemAdded.next(itemToAdd);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLW1vZGFsL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTNDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7Ozs7O09BTUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBT0QsT0FBTyxHQUFHLElBQUksT0FBTyxFQUE4QixDQUFDO0lBQ3BELFVBQVUsQ0FBeUM7SUFDbkQsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFDcEMsYUFBYSxDQUFzQjtJQUVuQyxZQUFZLEVBQVU7UUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFnQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxTQUFrQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzIH0gZnJvbSAnLi9zZWxlY3Rpb24tbW9kYWwtY2xvc2UtYXJncyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiBhIHNlbGVjdGlvbiBtb2RhbC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2Uge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCB0aGUgc2VsZWN0aW9uIG1vZGFsIGluc3RhbmNlIGVtaXRzIHdoZW4gaXQgY2xvc2VzLlxuICAgKiBJdCBlbWl0cyBhIGBTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJnc2Agb2JqZWN0IHdpdGggYSBgc2VsZWN0ZWRJdGVtc2AgcHJvcGVydHkgdGhhdCBpbmNsdWRlc1xuICAgKiBpdGVtcyBzZWxlY3RlZCBieSB1c2VycyBvbiBjbG9zZSBvciBzYXZlIGFuZCBhIGByZWFzb25gIHByb3BlcnR5IHRoYXQgaW5kaWNhdGVzXG4gICAqIHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBtb2RhbCB3YXMgc2F2ZWQgb3IgY2xvc2VkIHdpdGhvdXQgc2F2aW5nLlxuICAgKiBUaGUgYHJlYXNvbmAgcHJvcGVydHkgYWNjZXB0cyBgXCJjYW5jZWxcImAsIGBcImNsb3NlXCJgLCBhbmQgYFwic2F2ZVwiYC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2xvc2VkKCk6IE9ic2VydmFibGU8U2t5U2VsZWN0aW9uTW9kYWxDbG9zZUFyZ3M+IHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VkT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGdldCBpdGVtQWRkZWQoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuI2l0ZW1BZGRlZE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gICNjbG9zZWQgPSBuZXcgU3ViamVjdDxTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJncz4oKTtcbiAgI2Nsb3NlZE9iczogT2JzZXJ2YWJsZTxTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJncz47XG4gICNpdGVtQWRkZWQgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuICAjaXRlbUFkZGVkT2JzOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jaXRlbUFkZGVkT2JzID0gdGhpcy4jaXRlbUFkZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNsb3NlKGFyZ3M6IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzKTogdm9pZCB7XG4gICAgdGhpcy4jY2xvc2VkLm5leHQoYXJncyk7XG4gICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWRkSXRlbShpdGVtVG9BZGQ6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLiNpdGVtQWRkZWQubmV4dChpdGVtVG9BZGQpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkySelectionModalComponent } from './selection-modal.component';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalInstance } from './types/selection-modal-instance';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/modals\";\n/**\n * Displays a modal for selecting one or more values.\n */\nexport class SkySelectionModalService {\n #modalSvc;\n constructor(modalSvc) {\n this.#modalSvc = modalSvc;\n }\n /**\n * Opens the selection modal.\n * @param args Parameters for the selection modal.\n */\n open(args) {\n const initialValue = args.value;\n const context = new SkySelectionModalContext(args.descriptorProperty, args.idProperty, args.initialSearch || '', initialValue || [], (searchArgs) => {\n return args.searchAsync({\n offset: searchArgs.offset,\n searchText: searchArgs.searchText,\n continuationData: searchArgs.continuationData,\n });\n }, args.selectMode, args.selectionDescriptor ||\n (args.selectMode === 'single' ? 'item' : 'items'), args.showAddButton || false, {\n itemTemplate: args.itemTemplate,\n title: args.title,\n });\n const modalInstance = this.#modalSvc.open(SkySelectionModalComponent, {\n providers: [\n {\n provide: SkySelectionModalContext,\n useValue: context,\n },\n ],\n size: 'large',\n wrapperClass: args.wrapperClass,\n });\n const instance = new SkySelectionModalInstance(modalInstance.componentInstance.id);\n instance.itemAdded\n .pipe(takeUntil(modalInstance.closed))\n .subscribe((item) => {\n modalInstance.componentInstance.addItem(item);\n });\n modalInstance.closed.subscribe((modalCloseArgs) => {\n let closeArgs;\n switch (modalCloseArgs.reason) {\n case 'save':\n closeArgs = {\n reason: 'save',\n selectedItems: modalCloseArgs.data.map((item) => item.itemData),\n };\n break;\n case 'cancel':\n closeArgs = { reason: 'cancel' };\n break;\n default:\n closeArgs = { reason: 'close' };\n }\n instance.close(closeArgs);\n });\n const selectionModal = modalInstance.componentInstance;\n selectionModal.addClick\n .pipe(takeUntil(modalInstance.closed))\n .subscribe(() => {\n if (args.addClick) {\n const addArgs = {\n itemAdded(args) {\n selectionModal.addItem(args.item);\n },\n };\n args.addClick(addArgs);\n }\n });\n return instance;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalService, deps: [{ token: i1.SkyModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyModalService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tbW9kYWwvc2VsZWN0aW9uLW1vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQUc3RTs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsU0FBUyxDQUFrQjtJQUUzQixZQUFZLFFBQXlCO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxJQUFJLENBQUMsSUFBK0I7UUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixDQUMxQyxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQ3hCLFlBQVksSUFBSSxFQUFFLEVBQ2xCLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDekIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO2dCQUNqQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO2FBQzlDLENBQWlELENBQUM7UUFDckQsQ0FBQyxFQUNELElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLG1CQUFtQjtZQUN0QixDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNuRCxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssRUFDM0I7WUFDRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQ0YsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ3BFLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxRQUFRLEVBQUUsT0FBTztpQkFDbEI7YUFDRjtZQUNELElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUkseUJBQXlCLENBQzVDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQ25DLENBQUM7UUFFRixRQUFRLENBQUMsU0FBUzthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFTCxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ2hELElBQUksU0FBcUMsQ0FBQztZQUUxQyxRQUFRLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxNQUFNO29CQUNULFNBQVMsR0FBRzt3QkFDVixNQUFNLEVBQUUsTUFBTTt3QkFDZCxhQUFhLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3BDLENBQUMsSUFBMkIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDL0M7cUJBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE1BQU07Z0JBQ1I7b0JBQ0UsU0FBUyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFFRCxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBRXZELGNBQWMsQ0FBQyxRQUFRO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxPQUFPLEdBQXVDO29CQUNsRCxTQUFTLENBQUMsSUFBSTt3QkFDWixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztpQkFDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0FoR1Usd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtcmVzdWx0JztcblxuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxBZGRDbGlja0V2ZW50QXJncyB9IGZyb20gJy4vdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWFkZC1jbGljay1ldmVudC1hcmdzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzIH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtY2xvc2UtYXJncyc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQgfSBmcm9tICcuL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbE9wZW5BcmdzIH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtb3Blbi1hcmdzJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIG1vZGFsIGZvciBzZWxlY3Rpbmcgb25lIG9yIG1vcmUgdmFsdWVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlIHtcbiAgI21vZGFsU3ZjOiBTa3lNb2RhbFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IobW9kYWxTdmM6IFNreU1vZGFsU2VydmljZSkge1xuICAgIHRoaXMuI21vZGFsU3ZjID0gbW9kYWxTdmM7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIHNlbGVjdGlvbiBtb2RhbC5cbiAgICogQHBhcmFtIGFyZ3MgUGFyYW1ldGVycyBmb3IgdGhlIHNlbGVjdGlvbiBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBvcGVuKGFyZ3M6IFNreVNlbGVjdGlvbk1vZGFsT3BlbkFyZ3MpOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBhcmdzLnZhbHVlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQoXG4gICAgICBhcmdzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGFyZ3MuaWRQcm9wZXJ0eSxcbiAgICAgIGFyZ3MuaW5pdGlhbFNlYXJjaCB8fCAnJyxcbiAgICAgIGluaXRpYWxWYWx1ZSB8fCBbXSxcbiAgICAgIChzZWFyY2hBcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBhcmdzLnNlYXJjaEFzeW5jKHtcbiAgICAgICAgICBvZmZzZXQ6IHNlYXJjaEFyZ3Mub2Zmc2V0LFxuICAgICAgICAgIHNlYXJjaFRleHQ6IHNlYXJjaEFyZ3Muc2VhcmNoVGV4dCxcbiAgICAgICAgICBjb250aW51YXRpb25EYXRhOiBzZWFyY2hBcmdzLmNvbnRpbnVhdGlvbkRhdGEsXG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNSZXN1bHQ+O1xuICAgICAgfSxcbiAgICAgIGFyZ3Muc2VsZWN0TW9kZSxcbiAgICAgIGFyZ3Muc2VsZWN0aW9uRGVzY3JpcHRvciB8fFxuICAgICAgICAoYXJncy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJyA/ICdpdGVtJyA6ICdpdGVtcycpLFxuICAgICAgYXJncy5zaG93QWRkQnV0dG9uIHx8IGZhbHNlLFxuICAgICAge1xuICAgICAgICBpdGVtVGVtcGxhdGU6IGFyZ3MuaXRlbVRlbXBsYXRlLFxuICAgICAgICB0aXRsZTogYXJncy50aXRsZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IG1vZGFsSW5zdGFuY2UgPSB0aGlzLiNtb2RhbFN2Yy5vcGVuKFNreVNlbGVjdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreVNlbGVjdGlvbk1vZGFsQ29udGV4dCxcbiAgICAgICAgICB1c2VWYWx1ZTogY29udGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgd3JhcHBlckNsYXNzOiBhcmdzLndyYXBwZXJDbGFzcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoXG4gICAgICBtb2RhbEluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlLmlkLFxuICAgICk7XG5cbiAgICBpbnN0YW5jZS5pdGVtQWRkZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbChtb2RhbEluc3RhbmNlLmNsb3NlZCkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtKSA9PiB7XG4gICAgICAgIG1vZGFsSW5zdGFuY2UuY29tcG9uZW50SW5zdGFuY2UuYWRkSXRlbShpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgbW9kYWxJbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKChtb2RhbENsb3NlQXJncykgPT4ge1xuICAgICAgbGV0IGNsb3NlQXJnczogU2t5U2VsZWN0aW9uTW9kYWxDbG9zZUFyZ3M7XG5cbiAgICAgIHN3aXRjaCAobW9kYWxDbG9zZUFyZ3MucmVhc29uKSB7XG4gICAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICAgIGNsb3NlQXJncyA9IHtcbiAgICAgICAgICAgIHJlYXNvbjogJ3NhdmUnLFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogbW9kYWxDbG9zZUFyZ3MuZGF0YS5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiB7IGl0ZW1EYXRhOiB1bmtub3duIH0pID0+IGl0ZW0uaXRlbURhdGEsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgICAgY2xvc2VBcmdzID0geyByZWFzb246ICdjYW5jZWwnIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2xvc2VBcmdzID0geyByZWFzb246ICdjbG9zZScgfTtcbiAgICAgIH1cblxuICAgICAgaW5zdGFuY2UuY2xvc2UoY2xvc2VBcmdzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGlvbk1vZGFsID0gbW9kYWxJbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZTtcblxuICAgIHNlbGVjdGlvbk1vZGFsLmFkZENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwobW9kYWxJbnN0YW5jZS5jbG9zZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmFkZENsaWNrKSB7XG4gICAgICAgICAgY29uc3QgYWRkQXJnczogU2t5U2VsZWN0aW9uTW9kYWxBZGRDbGlja0V2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIGl0ZW1BZGRlZChhcmdzKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGFsLmFkZEl0ZW0oYXJncy5pdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGFyZ3MuYWRkQ2xpY2soYWRkQXJncyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyLookupAdapterService {\n focusInput(elRef) {\n const inputEl = elRef.nativeElement.querySelector('.sky-lookup-input');\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupAdapterService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQUMzQixVQUFVLENBQUMsS0FBaUI7UUFDakMsTUFBTSxPQUFPLEdBQ1gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6RCxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7OEdBVlUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBBZGFwdGVyU2VydmljZSB7XG4gIHB1YmxpYyBmb2N1c0lucHV0KGVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbDogSFRNTEVsZW1lbnQgPVxuICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LWxvb2t1cC1pbnB1dCcpO1xuXG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgaW5wdXRFbC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19","import { Directive, EventEmitter, Input, Output, } from '@angular/core';\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyLookupAutocompleteAdapter {\n constructor() {\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable. The event is also fired with empty search text\n * when the \"Show more\" picker is opened without search text.\n */\n this.searchAsync = new EventEmitter();\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n this.#_descriptorProperty = 'name';\n this.#_propertiesToSearch = ['name'];\n }\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n set descriptorProperty(value) {\n this.#_descriptorProperty = value || 'name';\n }\n get descriptorProperty() {\n return this.#_descriptorProperty;\n }\n /**\n * The array of object properties to search when utilizing the `data` property and the built-in search function.\n * @default [\"name\"]\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n set propertiesToSearch(value) {\n this.#_propertiesToSearch = value ?? ['name'];\n this.#updateDefaultSearchOptions();\n }\n get propertiesToSearch() {\n return this.#_propertiesToSearch;\n }\n /**\n * The function to dynamically manage the data source when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n set search(value) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n get search() {\n return this.#_search;\n }\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the `data` input and the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n set searchFilters(value) {\n this.#_searchFilters = value;\n this.#updateDefaultSearchOptions();\n }\n get searchFilters() {\n return this.#_searchFilters;\n }\n #_descriptorProperty;\n #_propertiesToSearch;\n #_search;\n #_searchFilters;\n #updateDefaultSearchOptions() {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupAutocompleteAdapter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyLookupAutocompleteAdapter, isStandalone: true, inputs: { debounceTime: \"debounceTime\", descriptorProperty: \"descriptorProperty\", propertiesToSearch: \"propertiesToSearch\", search: \"search\", searchResultTemplate: \"searchResultTemplate\", searchTextMinimumCharacters: \"searchTextMinimumCharacters\", searchFilters: \"searchFilters\", searchResultsLimit: \"searchResultsLimit\" }, outputs: { searchAsync: \"searchAsync\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupAutocompleteAdapter, decorators: [{\n type: Directive\n }], propDecorators: { debounceTime: [{\n type: Input\n }], descriptorProperty: [{\n type: Input\n }], propertiesToSearch: [{\n type: Input\n }], search: [{\n type: Input\n }], searchResultTemplate: [{\n type: Input\n }], searchTextMinimumCharacters: [{\n type: Input\n }], searchFilters: [{\n type: Input\n }], searchResultsLimit: [{\n type: Input\n }], searchAsync: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWF1dG9jb21wbGV0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC1hdXRvY29tcGxldGUtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQUs1Rzs7R0FFRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFEekM7UUE4R0U7Ozs7V0FJRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtDLENBQUM7UUFFakUsb0JBQWUsR0FBRyxvQ0FBb0MsQ0FBQztZQUM1RCxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUM1QixhQUFhLEVBQUUsU0FBUztTQUN6QixDQUFDLENBQUM7UUFFSCx5QkFBb0IsR0FBRyxNQUFNLENBQUM7UUFFOUIseUJBQW9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQWVqQztJQWxJQzs7OztPQUlHO0lBQ0gsSUFDVyxrQkFBa0IsQ0FBQyxLQUF5QjtRQUNyRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUNXLGtCQUFrQixDQUFDLEtBQTJCO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWdEO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ2xCLEtBQUs7Z0JBQ0wsb0NBQW9DLENBQUM7b0JBQ25DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtpQkFDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBbUJEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLGFBQWEsQ0FDdEIsS0FBd0Q7UUFFeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFN0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUd0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQXVCRCxvQkFBb0IsQ0FBVTtJQUU5QixvQkFBb0IsQ0FBWTtJQUVoQyxRQUFRLENBQTRDO0lBRXBELGVBQWUsQ0FBb0Q7SUFFbkUsMkJBQTJCO1FBQ3pCLG9EQUFvRDtRQUNwRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsb0NBQW9DLENBQUM7Z0JBQzFELGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzNDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0ExSVUsNEJBQTRCO2tHQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFNBQVM7OEJBUUQsWUFBWTtzQkFEbEIsS0FBSztnQkFTSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBZUssa0JBQWtCO3NCQUQ1QixLQUFLO2dCQW1CSyxNQUFNO3NCQURoQixLQUFLO2dCQXFCQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBVUMsMkJBQTJCO3NCQURqQyxLQUFLO2dCQVlLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBcUJDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFTQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXIgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1maWx0ZXInO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyIHtcbiAgLyoqXG4gICAqIEhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzZWFyY2hpbmcgd2hpbGUgdXNlcnNcbiAgICogZW50ZXIgdGV4dCBpbiB0aGUgbG9va3VwIGZpZWxkLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVib3VuY2VUaW1lOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgcHJvcGVydHkgdG8gZGlzcGxheSBpbiB0aGUgdGV4dCBpbnB1dCBhZnRlciB1c2Vyc1xuICAgKiBzZWxlY3QgYW4gaXRlbSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgXCJuYW1lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVzY3JpcHRvclByb3BlcnR5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGVzY3JpcHRvclByb3BlcnR5ID0gdmFsdWUgfHwgJ25hbWUnO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdG9yUHJvcGVydHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rlc2NyaXB0b3JQcm9wZXJ0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2Ygb2JqZWN0IHByb3BlcnRpZXMgdG8gc2VhcmNoIHdoZW4gdXRpbGl6aW5nIHRoZSBgZGF0YWAgcHJvcGVydHkgYW5kIHRoZSBidWlsdC1pbiBzZWFyY2ggZnVuY3Rpb24uXG4gICAqIEBkZWZhdWx0IFtcIm5hbWVcIl1cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGVtaXR0ZXIgYW5kIGNhbGxiYWNrIGluc3RlYWQgdG8gcHJvdmlkZSBkYXRhIHRvIHRoZSBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcm9wZXJ0aWVzVG9TZWFyY2godmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Byb3BlcnRpZXNUb1NlYXJjaCA9IHZhbHVlID8/IFsnbmFtZSddO1xuXG4gICAgdGhpcy4jdXBkYXRlRGVmYXVsdFNlYXJjaE9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvcGVydGllc1RvU2VhcmNoKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jX3Byb3BlcnRpZXNUb1NlYXJjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gZHluYW1pY2FsbHkgbWFuYWdlIHRoZSBkYXRhIHNvdXJjZSB3aGVuIHVzZXJzXG4gICAqIGNoYW5nZSB0aGUgdGV4dCBpbiB0aGUgbG9va3VwIGZpZWxkLiBUaGUgc2VhcmNoIGZ1bmN0aW9uIG11c3QgcmV0dXJuXG4gICAqIGFuIGFycmF5IG9yIGEgcHJvbWlzZSBvZiBhbiBhcnJheS4gVGhlIGBzZWFyY2hgIHByb3BlcnR5IGlzIHBhcnRpY3VsYXJseVxuICAgKiB1c2VmdWwgd2hlbiB0aGUgZGF0YSBzb3VyY2UgZG9lcyBub3QgbGl2ZSBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYHNlYXJjaEFzeW5jYCBldmVudCBlbWl0dGVyIGFuZCBjYWxsYmFjayBpbnN0ZWFkIHRvIHByb3ZpZGUgc2VhcmNoZWQgZGF0YSB0byB0aGUgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWFyY2ggPSB2YWx1ZTtcbiAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCA9XG4gICAgICB2YWx1ZSB8fFxuICAgICAgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaCgpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2g7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHRoYXQgZm9ybWF0cyBlYWNoIG9wdGlvbiBpbiB0aGUgZHJvcGRvd24gbGlzdC4gVGhlIGxvb2t1cCBjb21wb25lbnRcbiAgICogaW5qZWN0cyB2YWx1ZXMgaW50byB0aGUgdGVtcGxhdGUgYXMgYGl0ZW1gIHZhcmlhYmxlcyB0aGF0IHJlZmVyZW5jZSBhbGwgdGhlIG9iamVjdFxuICAgKiBwcm9wZXJ0aWVzIG9mIHRoZSBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaFJlc3VsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB1c2VycyBtdXN0IGVudGVyIGJlZm9yZVxuICAgKiB0aGUgbG9va3VwIGNvbXBvbmVudCBzZWFyY2hlcyB0aGUgZGF0YSBzb3VyY2UgYW5kIGRpc3BsYXlzIHNlYXJjaCByZXN1bHRzXG4gICAqIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZ2FpbnN0IGVhY2ggc2VhcmNoIHJlc3VsdCBpbiBvcmRlclxuICAgKiB0byBmaWx0ZXIgdGhlIHNlYXJjaCByZXN1bHRzIHdoZW4gdXNpbmcgdGhlIGBkYXRhYCBpbnB1dCBhbmQgdGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uLiBXaGVuXG4gICAqIHVzaW5nIGEgY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiB2aWEgdGhlIGBzZWFyY2hgIHByb3BlcnR5IGZpbHRlcnMgbXVzdCBiZVxuICAgKiBhcHBsaWVkIG1hbnVhbGx5IGluc2lkZSB0aGF0IGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gYHRydWVgIG9yXG4gICAqIGBmYWxzZWAgZm9yIGVhY2ggcmVzdWx0IHRvIGluZGljYXRlIHdoZXRoZXIgdG8gZGlzcGxheSBpdCBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGVtaXR0ZXIgYW5kIGNhbGxiYWNrIGluc3RlYWQgdG8gcHJvdmlkZSBzZWFyY2hlZCBkYXRhIHRvIHRoZSBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hGaWx0ZXJzKFxuICAgIHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlcltdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNfc2VhcmNoRmlsdGVycyA9IHZhbHVlO1xuXG4gICAgdGhpcy4jdXBkYXRlRGVmYXVsdFNlYXJjaE9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoRmlsdGVycygpOlxuICAgIHwgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlYXJjaEZpbHRlcnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlYXJjaCByZXN1bHRzIHRvIGRpc3BsYXkgaW4gdGhlIGRyb3Bkb3duXG4gICAqIGxpc3QuIEJ5IGRlZmF1bHQsIHRoZSBsb29rdXAgY29tcG9uZW50IGRpc3BsYXlzIGFsbCBtYXRjaGluZyByZXN1bHRzLlxuICAgKiBUaGlzIHByb3BlcnR5IGhhcyBubyBlZmZlY3Qgb24gdGhlIHJlc3VsdHMgaW4gdGhlIFwiU2hvdyBtb3JlXCIgcGlja2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaFJlc3VsdHNMaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGVudGVyIG5ldyBzZWFyY2ggaW5mb3JtYXRpb24gYW5kIGFsbG93cyByZXN1bHRzIHRvIGJlXG4gICAqIHJldHVybmVkIHZpYSBhbiBvYnNlcnZhYmxlLiBUaGUgZXZlbnQgaXMgYWxzbyBmaXJlZCB3aXRoIGVtcHR5IHNlYXJjaCB0ZXh0XG4gICAqIHdoZW4gdGhlIFwiU2hvdyBtb3JlXCIgcGlja2VyIGlzIG9wZW5lZCB3aXRob3V0IHNlYXJjaCB0ZXh0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hBc3luYyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzPigpO1xuXG4gIHB1YmxpYyBzZWFyY2hPckRlZmF1bHQgPSBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oe1xuICAgIHByb3BlcnRpZXNUb1NlYXJjaDogWyduYW1lJ10sXG4gICAgc2VhcmNoRmlsdGVyczogdW5kZWZpbmVkLFxuICB9KTtcblxuICAjX2Rlc2NyaXB0b3JQcm9wZXJ0eSA9ICduYW1lJztcblxuICAjX3Byb3BlcnRpZXNUb1NlYXJjaCA9IFsnbmFtZSddO1xuXG4gICNfc2VhcmNoOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjX3NlYXJjaEZpbHRlcnM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW10gfCB1bmRlZmluZWQ7XG5cbiAgI3VwZGF0ZURlZmF1bHRTZWFyY2hPcHRpb25zKCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGRlZmF1bHQgc2VhcmNoIGlmIGl0IGlzIHdoYXQgaXMgYmVpbmcgdXNlZC5cbiAgICBpZiAodGhpcy5zZWFyY2ggIT09IHRoaXMuc2VhcmNoT3JEZWZhdWx0KSB7XG4gICAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCA9IHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbih7XG4gICAgICAgIHByb3BlcnRpZXNUb1NlYXJjaDogdGhpcy5wcm9wZXJ0aWVzVG9TZWFyY2gsXG4gICAgICAgIHNlYXJjaEZpbHRlcnM6IHRoaXMuc2VhcmNoRmlsdGVycyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19","/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n constructor(descriptorProperty, initialSearch, initialValue, items, search, selectMode, showAddButton, userConfig) {\n this.descriptorProperty = descriptorProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.items = items;\n this.search = search;\n this.selectMode = selectMode;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9DQUFvQztJQWlCL0MsWUFDRSxrQkFBMEIsRUFDMUIsYUFBcUIsRUFDckIsWUFBbUIsRUFDbkIsS0FBWSxFQUNaLE1BQXFDLEVBQ3JDLFVBQW1DLEVBQ25DLGFBQXNCLEVBQ3RCLFVBQStDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWZ1bmN0aW9uJztcblxuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfSBmcm9tICcuL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW5hdGl2ZS1waWNrZXItY29uZmlnJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIENvbnRleHQgZm9yIHRoZSBzaG93IG1vcmUgbmF0aXZlIHBpY2tlci4gVGhlc2UgdmFsdWVzIGFyZSBwcm92aWRlZCBieSB0aGUgbG9va3VwIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB7XG4gIHB1YmxpYyBkZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZztcblxuICBwdWJsaWMgaW5pdGlhbFNlYXJjaDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IGFueVtdO1xuXG4gIHB1YmxpYyBpdGVtczogYW55W107XG5cbiAgcHVibGljIHNlYXJjaDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlO1xuXG4gIHB1YmxpYyBzaG93QWRkQnV0dG9uOiBib29sZWFuO1xuXG4gIHB1YmxpYyB1c2VyQ29uZmlnOiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZyxcbiAgICBpbml0aWFsU2VhcmNoOiBzdHJpbmcsXG4gICAgaW5pdGlhbFZhbHVlOiBhbnlbXSxcbiAgICBpdGVtczogYW55W10sXG4gICAgc2VhcmNoOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbixcbiAgICBzZWxlY3RNb2RlOiBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSxcbiAgICBzaG93QWRkQnV0dG9uOiBib29sZWFuLFxuICAgIHVzZXJDb25maWc6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSA9IGRlc2NyaXB0b3JQcm9wZXJ0eTtcbiAgICB0aGlzLmluaXRpYWxTZWFyY2ggPSBpbml0aWFsU2VhcmNoO1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlO1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICB0aGlzLnNlbGVjdE1vZGUgPSBzZWxlY3RNb2RlO1xuICAgIHRoaXMuc2hvd0FkZEJ1dHRvbiA9IHNob3dBZGRCdXR0b247XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdXNlckNvbmZpZztcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';\nimport { SkyIdService, SkyLiveAnnouncerService, SkyViewkeeperModule, } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { Subject, take } from 'rxjs';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/icon\";\nimport * as i4 from \"@skyux/lists\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/modals\";\nimport * as i7 from \"../search/search.component\";\nimport * as i8 from \"@skyux/layout\";\nimport * as i9 from \"@skyux/core\";\n/**\n * @internal\n * Internal component to implement the native picker.\n */\nexport class SkyLookupShowMoreModalComponent {\n #itemIndex;\n #ngUnsubscribe;\n #changeDetector;\n #idSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor() {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n this.addClick = new Subject();\n this.items = [];\n this.itemsLoading = false;\n this.dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n this.displayedItems = [];\n this.itemsHaveMore = false;\n this.onlyShowSelected = false;\n this.repeaterItemTemplate = null;\n this.searchText = '';\n this.selectedItems = [];\n this.#itemIndex = 0;\n this.#ngUnsubscribe = new Subject();\n this.modalInstance = inject(SkyModalInstance);\n this.context = inject(SkyLookupShowMoreNativePickerContext);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#idSvc = inject(SkyIdService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.id = this.#idSvc.generateId();\n }\n ngAfterViewInit() {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n void this.addItems();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n addButtonClicked() {\n this.addClick.next();\n }\n async addItems() {\n this.itemsLoading = true;\n if (!this.items || this.items.length === 0) {\n const selectedItems = this.selectedItems.slice();\n this.items = this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n });\n this.items.forEach((item) => {\n const isInitialValue = this.context.initialValue === item.value;\n const initialIsArray = Array.isArray(this.context.initialValue);\n const initialValueContainsItem = this.context.initialValue.findIndex((initialItem) => initialItem === item.value) >= 0;\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (selectedItems.findIndex((selectedItem) => selectedItem.index === itemIndex) < 0) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n // if onlyShowSelected is checked, then only iterate through the initial selection\n const items = this.onlyShowSelected\n ? this.items.filter((item) => item.selected)\n : this.items;\n this.#itemIndex = this.#itemIndex + 10;\n const searchedItems = await this.searchItems(items);\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n }\n else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n this.#announceSelectionState(this.selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n }\n async clearAll() {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n itemClick(selectedItem) {\n if (this.context.selectMode === 'single') {\n void this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n onItemSelect(newSelectState, itemToSelect) {\n const items = this.items;\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = items.findIndex((item) => item.value === itemToSelect.value);\n this.selectedItems = [\n { index: itemIndex, itemData: items[itemIndex].value },\n ];\n }\n }\n else {\n const selectedItems = this.selectedItems;\n const allItemsIndex = items.findIndex((item) => item.value === itemToSelect.value);\n const selectedItemsIndex = selectedItems.findIndex((selectedItem) => selectedItem.index === allItemsIndex);\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: items[allItemsIndex].value,\n });\n }\n else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n this.selectedItems = selectedItems;\n }\n void this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n searchApplied(searchText) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n this.modalInstance.scrollContentToTop();\n }\n this.searchText = searchText;\n this.itemsLoading = true;\n this.#changeDetector.detectChanges();\n // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.\n // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.\n setTimeout(() => {\n void this.updateDataState();\n }, 100);\n }\n searchItems(items) {\n const searchText = this.searchText;\n if (searchText) {\n const resultValues = this.context.search(searchText, items.map((item) => {\n return item.value;\n }), { context: 'modal' });\n if (resultValues instanceof Array) {\n const result = items.filter((item) => resultValues.indexOf(item.value) >= 0);\n return Promise.resolve(result);\n }\n else {\n return resultValues.then((values) => {\n const result = items.filter((item) => values.indexOf(item.value) >= 0);\n return Promise.resolve(result);\n });\n }\n }\n else {\n return Promise.resolve(items);\n }\n }\n async selectAll() {\n const items = this.items;\n const selectedItems = this.selectedItems;\n this.displayedItems.forEach((item) => {\n if (!item.selected) {\n item.selected = true;\n const index = items.indexOf(item);\n /* istanbul ignore else */\n if (selectedItems.findIndex((selectedItem) => selectedItem.index === index) < 0) {\n selectedItems.push({\n index: index,\n itemData: items[index].value,\n });\n }\n }\n });\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n async updateDataState() {\n const items = this.items;\n const selectedItems = this.selectedItems;\n items?.forEach((item, index) => {\n item.selected =\n selectedItems.findIndex((selectedItem) => selectedItem.index === index) !== -1;\n });\n let searchedItems = await this.searchItems(items);\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n }\n else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n this.#announceSelectionState(selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n }\n async updateItemData(data) {\n this.context.items = data;\n this.items = [];\n this.#itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item, index) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n await this.addItems();\n this.#changeDetector.markForCheck();\n }\n #announceSelectionState(selectedItemCount, displayedItemCount) {\n this.#resourcesSvc\n .getString('skyux_lookup_show_more_displayed_items_updated', selectedItemCount.toString(), displayedItemCount.toString())\n .pipe(take(1))\n .subscribe((resourcesString) => {\n this.#liveAnnouncerSvc.announce(resourcesString);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupShowMoreModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyLookupShowMoreModalComponent, isStandalone: true, selector: \"sky-lookup-show-more-modal\", ngImport: i0, template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.userConfig.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [label]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDataState()\\\"\\n >\\n <sky-checkbox-label>\\n {{\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources\\n }}\\n </sky-checkbox-label>\\n </sky-checkbox>\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater class=\\\"sky-lookup-show-more-repeater\\\" expandMode=\\\"none\\\">\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n [(isSelected)]=\\\"item.selected\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: { item: item.value }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"itemsHaveMore\\\"\\n [loading]=\\\"itemsLoading\\\"\\n (scrollEnd)=\\\"addItems()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"modalInstance.save(selectedItems)\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\">\\n {{ item[context.descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: SkyCheckboxModule }, { kind: \"component\", type: i2.λ3, selector: \"sky-checkbox\", inputs: [\"label\", \"labelledBy\", \"id\", \"disabled\", \"tabindex\", \"name\", \"helpPopoverContent\", \"helpPopoverTitle\", \"icon\", \"iconName\", \"checkboxType\", \"checked\", \"indeterminate\", \"required\", \"labelText\", \"labelHidden\", \"hintText\", \"stacked\", \"helpKey\"], outputs: [\"change\", \"checkedChange\", \"disabledChange\", \"indeterminateChange\"] }, { kind: \"component\", type: i2.λ4, selector: \"sky-checkbox-label\" }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i3.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyInfiniteScrollModule }, { kind: \"component\", type: i4.λ6, selector: \"sky-infinite-scroll\", inputs: [\"enabled\", \"loading\"], outputs: [\"scrollEnd\"] }, { kind: \"ngmodule\", type: SkyLookupResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyModalModule }, { kind: \"component\", type: i6.λ5, selector: \"sky-modal\", inputs: [\"formErrors\", \"headingText\", \"helpKey\", \"helpPopoverContent\", \"helpPopoverTitle\", \"ariaRole\", \"tiledBody\", \"ariaDescribedBy\", \"ariaLabelledBy\", \"layout\"] }, { kind: \"component\", type: i6.λ2, selector: \"sky-modal-content\" }, { kind: \"component\", type: i6.λ3, selector: \"sky-modal-footer\" }, { kind: \"component\", type: i6.λ4, selector: \"sky-modal-header\" }, { kind: \"ngmodule\", type: SkyRepeaterModule }, { kind: \"component\", type: i4.λ11, selector: \"sky-repeater\", inputs: [\"activeIndex\", \"ariaLabel\", \"reorderable\", \"expandMode\"], outputs: [\"activeIndexChange\", \"orderChange\"] }, { kind: \"component\", type: i4.λ10, selector: \"sky-repeater-item\", inputs: [\"disabled\", \"itemName\", \"inlineFormConfig\", \"inlineFormTemplate\", \"isExpanded\", \"isSelected\", \"reorderable\", \"selectable\", \"showInlineForm\", \"tag\"], outputs: [\"collapse\", \"expand\", \"inlineFormClose\", \"isSelectedChange\"] }, { kind: \"component\", type: i4.λ8, selector: \"sky-repeater-item-content\" }, { kind: \"ngmodule\", type: SkySearchModule }, { kind: \"component\", type: i7.SkySearchComponent, selector: \"sky-search\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"searchText\", \"expandMode\", \"debounceTime\", \"disabled\", \"placeholderText\"], outputs: [\"searchApply\", \"searchChange\", \"searchClear\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"ngmodule\", type: SkyToolbarModule }, { kind: \"component\", type: i8.λ37, selector: \"sky-toolbar\", inputs: [\"listDescriptor\"] }, { kind: \"component\", type: i8.λ39, selector: \"sky-toolbar-item\" }, { kind: \"component\", type: i8.λ38, selector: \"sky-toolbar-section\" }, { kind: \"component\", type: i8.λ40, selector: \"sky-toolbar-view-actions\" }, { kind: \"ngmodule\", type: SkyViewkeeperModule }, { kind: \"directive\", type: i9.λ3, selector: \"[skyViewkeeper]\", inputs: [\"skyViewkeeper\", \"skyViewkeeperOmitShadow\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupShowMoreModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-lookup-show-more-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n ], template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.userConfig.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [label]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDataState()\\\"\\n >\\n <sky-checkbox-label>\\n {{\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources\\n }}\\n </sky-checkbox-label>\\n </sky-checkbox>\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater class=\\\"sky-lookup-show-more-repeater\\\" expandMode=\\\"none\\\">\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n [(isSelected)]=\\\"item.selected\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: { item: item.value }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"itemsHaveMore\\\"\\n [loading]=\\\"itemsLoading\\\"\\n (scrollEnd)=\\\"addItems()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"modalInstance.save(selectedItems)\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\">\\n {{ item[context.descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUdULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxl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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FyV1UsK0JBQStCO2tHQUEvQiwrQkFBK0Isc0ZDckQ1Qyw4eUxBaUtBLDhQRHpISSxZQUFZLG1TQUNaLGlCQUFpQiwwZUFDakIsYUFBYSwrS0FDYix1QkFBdUIsMkpBQ3ZCLHdCQUF3Qix1R0FDeEIsY0FBYyxvY0FDZCxpQkFBaUIsb2tCQUNqQixlQUFlLHVSQUNmLGNBQWMsOEJBQ2QsZ0JBQWdCLDRVQUNoQixtQkFBbUI7OzJGQUdWLCtCQUErQjtrQkFuQjNDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUlkU2VydmljZSxcbiAgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UsXG4gIFNreVZpZXdrZWVwZXJNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuaW1wb3J0IHsgU2t5SW5maW5pdGVTY3JvbGxNb2R1bGUsIFNreVJlcGVhdGVyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xpc3RzJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UsIFNreU1vZGFsTW9kdWxlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5TG9va3VwUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1sb29rdXAtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogSW50ZXJuYWwgY29tcG9uZW50IHRvIGltcGxlbWVudCB0aGUgbmF0aXZlIHBpY2tlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5TW9kYWxNb2R1bGUsXG4gICAgU2t5UmVwZWF0ZXJNb2R1bGUsXG4gICAgU2t5U2VhcmNoTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVRvb2xiYXJNb2R1bGUsXG4gICAgU2t5Vmlld2tlZXBlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG5ldyBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgcHVibGljIGFkZENsaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogVXNlZCB0byBhc3NvY2lhdGUgdGhpcyBtb2RhbCB3aXRoIGl0cyBvd25pbmcgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcblxuICBwdWJsaWMgaXRlbXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGRhdGFNYW5hZ2VyQ29uZmlnID0ge1xuICAgIHNvcnRPcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnYXonLFxuICAgICAgICBsYWJlbDogJ0FscGhhYmV0aWNhbCAoQSAtIFopJyxcbiAgICAgICAgZGVzY2VuZGluZzogZmFsc2UsXG4gICAgICAgIHByb3BlcnR5TmFtZTogJ25hbWUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICd6YScsXG4gICAgICAgIGxhYmVsOiAnQWxwaGFiZXRpY2FsIChaIC0gQSknLFxuICAgICAgICBkZXNjZW5kaW5nOiB0cnVlLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6ICduYW1lJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICBwdWJsaWMgZGlzcGxheWVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGl0ZW1zSGF2ZU1vcmUgPSBmYWxzZTtcblxuICBwdWJsaWMgb25seVNob3dTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZXBlYXRlckl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID0gW107XG5cbiAgI2l0ZW1JbmRleCA9IDA7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kYWxJbnN0YW5jZSA9IGluamVjdChTa3lNb2RhbEluc3RhbmNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0KTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5jb250ZXh0LnVzZXJDb25maWcuaXRlbVRlbXBsYXRlIHx8IG51bGw7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5jb250ZXh0LmluaXRpYWxTZWFyY2g7XG4gICAgdm9pZCB0aGlzLmFkZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSXRlbXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pdGVtc0xvYWRpbmcgPSB0cnVlO1xuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogYW55W10gPSB0aGlzLnNlbGVjdGVkSXRlbXMuc2xpY2UoKTtcblxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY29udGV4dC5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzSW5pdGlhbFZhbHVlOiBib29sZWFuID1cbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlID09PSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGluaXRpYWxJc0FycmF5OiBib29sZWFuID0gQXJyYXkuaXNBcnJheShcbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWVDb250YWluc0l0ZW06IGJvb2xlYW4gPVxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgKGluaXRpYWxJdGVtOiBhbnkpID0+IGluaXRpYWxJdGVtID09PSBpdGVtLnZhbHVlLFxuICAgICAgICAgICkgPj0gMDtcblxuICAgICAgICBpZiAoaXNJbml0aWFsVmFsdWUgfHwgKGluaXRpYWxJc0FycmF5ICYmIGluaXRpYWxWYWx1ZUNvbnRhaW5zSXRlbSkpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaXRlbUluZGV4LFxuICAgICAgICAgICAgKSA8IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7IGluZGV4OiBpdGVtSW5kZXgsIGl0ZW1EYXRhOiBpdGVtLnZhbHVlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgb25seVNob3dTZWxlY3RlZCBpcyBjaGVja2VkLCB0aGVuIG9ubHkgaXRlcmF0ZSB0aHJvdWdoIHRoZSBpbml0aWFsIHNlbGVjdGlvblxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5vbmx5U2hvd1NlbGVjdGVkXG4gICAgICA/IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNlbGVjdGVkKVxuICAgICAgOiB0aGlzLml0ZW1zO1xuXG4gICAgdGhpcy4jaXRlbUluZGV4ID0gdGhpcy4jaXRlbUluZGV4ICsgMTA7XG5cbiAgICBjb25zdCBzZWFyY2hlZEl0ZW1zID0gYXdhaXQgdGhpcy5zZWFyY2hJdGVtcyhpdGVtcyk7XG5cbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuI2l0ZW1JbmRleCA+IHNlYXJjaGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pdGVtc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuI2Fubm91bmNlU2VsZWN0aW9uU3RhdGUoXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5sZW5ndGgsXG4gICAgKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNsZWFyQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaXRlbUNsaWNrKHNlbGVjdGVkSXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdm9pZCB0aGlzLm9uSXRlbVNlbGVjdCghc2VsZWN0ZWRJdGVtLnNlbGVjdGVkLCBzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3QobmV3U2VsZWN0U3RhdGU6IGJvb2xlYW4sIGl0ZW1Ub1NlbGVjdDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgLyogU2FuaXR5IGNoZWNrIC0gc2luZ2xlIHNlbGVjdCBtb2RlIHNob3VsZCBvbmx5IGFsb3cgZm9yIGEgYHRydWVgIHNlbGVjdCBzdGF0ZSAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICBpdGVtVG9TZWxlY3Quc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsdWUgIT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlICE9PSBpdGVtVG9TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW1xuICAgICAgICAgIHsgaW5kZXg6IGl0ZW1JbmRleCwgaXRlbURhdGE6IGl0ZW1zW2l0ZW1JbmRleF0udmFsdWUgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcztcbiAgICAgIGNvbnN0IGFsbEl0ZW1zSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBpdGVtVG9TZWxlY3QudmFsdWUsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtc0luZGV4ID0gc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gYWxsSXRlbXNJbmRleCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSAmJiBzZWxlY3RlZEl0ZW1zSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGFsbEl0ZW1zSW5kZXgsXG4gICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2FsbEl0ZW1zSW5kZXhdLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIW5ld1NlbGVjdFN0YXRlICYmIHNlbGVjdGVkSXRlbXNJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5zcGxpY2Uoc2VsZWN0ZWRJdGVtc0luZGV4LCAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICB9XG5cbiAgICB2b2lkIHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoQXBwbGllZChzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgIT09IHNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuI2l0ZW1JbmRleCA9IDEwO1xuICAgICAgdGhpcy5tb2RhbEluc3RhbmNlLnNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzY3JvbGwgZXZlbnQgbWFrZXMgaXQgYWxsIHRoZSB3YXkgdGhyb3VnaCB0aGUgaW5maW5pdGUgc2Nyb2xsIHdvcmtmbG93IGJlZm9yZSB1cGRhdGluZyB0aGUgZGF0YSBzdGF0ZS5cbiAgICAvLyBXaXRob3V0IHRoaXMsIHRoZSBpbmZpbml0ZSBzY3JvbGwgY2FuIGFkZCBpdGVtcyBpbXByb3Blcmx5IGJlY2F1c2UgaXQgY2FuIHNlZSB0aGUgYWJvdmUgc2Nyb2xsIGFmdGVyIHRoZSBpdGVtcyBmaW5pc2ggc2VhcmNoaW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoSXRlbXMoaXRlbXM6IGFueVtdKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XG5cbiAgICBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgY29uc3QgcmVzdWx0VmFsdWVzID0gdGhpcy5jb250ZXh0LnNlYXJjaChcbiAgICAgICAgc2VhcmNoVGV4dCxcbiAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICB7IGNvbnRleHQ6ICdtb2RhbCcgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHRWYWx1ZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IHJlc3VsdFZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHRWYWx1ZXMudGhlbigodmFsdWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IHZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VsZWN0QWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcztcblxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXM6IHsgaW5kZXg6IG51bWJlcjsgaXRlbURhdGE6IGFueSB9W10gPVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YoaXRlbSk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgICAgKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmluZGV4ID09PSBpbmRleCxcbiAgICAgICAgICApIDwgMFxuICAgICAgICApIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2luZGV4XS52YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURhdGFTdGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXM7XG5cbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcztcblxuICAgIGl0ZW1zPy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPVxuICAgICAgICBzZWxlY3RlZEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGluZGV4LFxuICAgICAgICApICE9PSAtMTtcbiAgICB9KTtcblxuICAgIGxldCBzZWFyY2hlZEl0ZW1zID0gYXdhaXQgdGhpcy5zZWFyY2hJdGVtcyhpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5vbmx5U2hvd1NlbGVjdGVkKSB7XG4gICAgICBzZWFyY2hlZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkSXRlbXMgPSBzZWFyY2hlZEl0ZW1zLnNsaWNlKDAsIHRoaXMuI2l0ZW1JbmRleCk7XG5cbiAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXRlbXNIYXZlTW9yZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy4jYW5ub3VuY2VTZWxlY3Rpb25TdGF0ZShcbiAgICAgIHNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5sZW5ndGgsXG4gICAgKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUl0ZW1EYXRhKGRhdGE6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb250ZXh0Lml0ZW1zID0gZGF0YTtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgdGhpcy4jaXRlbUluZGV4ID0gMTA7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKHNlbGVjdGVkSXRlbSkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0Lml0ZW1zLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtLml0ZW1EYXRhID09PSBpdGVtKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5hZGRJdGVtcygpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjYW5ub3VuY2VTZWxlY3Rpb25TdGF0ZShcbiAgICBzZWxlY3RlZEl0ZW1Db3VudDogbnVtYmVyLFxuICAgIGRpc3BsYXllZEl0ZW1Db3VudDogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNvdXJjZXNTdmNcbiAgICAgIC5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2Rpc3BsYXllZF9pdGVtc191cGRhdGVkJyxcbiAgICAgICAgc2VsZWN0ZWRJdGVtQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgZGlzcGxheWVkSXRlbUNvdW50LnRvU3RyaW5nKCksXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UocmVzb3VyY2VzU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgQGlmIChjb250ZXh0LnVzZXJDb25maWc/LnRpdGxlKSB7XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICB9IEBlbHNlIHtcbiAgICAgIHt7XG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgfX1cbiAgICB9XG4gIDwvc2t5LW1vZGFsLWhlYWRlcj5cbiAgPHNreS1tb2RhbC1jb250ZW50XG4gICAgW3NreVZpZXdrZWVwZXJdPVwiWycuc2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyJ11cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLXRvb2xiYXItd3JhcHBlclwiPlxuICAgICAgPHNreS10b29sYmFyXG4gICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtdG9vbGJhclwiXG4gICAgICAgIFtsaXN0RGVzY3JpcHRvcl09XCJjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclwiXG4gICAgICA+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgQGlmIChjb250ZXh0LnNob3dBZGRCdXR0b24pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkX2J1dHRvbl9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC51c2VyQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRCdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiYWRkXCIgLz5cbiAgICAgICAgICAgICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9hZGQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8L3NreS10b29sYmFyPlxuICAgICAgQGlmIChjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgPHNreS10b29sYmFyIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtbXVsdGlzZWxlY3QtdG9vbGJhclwiPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLXNlbGVjdC1hbGwtYnRuXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2FsbF9idXR0b25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQudXNlckNvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLWNsZWFyLWFsbC1idG5cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jbGVhcl9hbGxfYnV0dG9uX2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQudXNlckNvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cIm9ubHlTaG93U2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRGF0YVN0YXRlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNreS1jaGVja2JveC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc2t5LWNoZWNrYm94LWxhYmVsPlxuICAgICAgICAgICAgICA8L3NreS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGRpc3BsYXllZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cInNreS1mb250LWRlZW1waGFzaXplZCBza3ktbG9va3VwLXNob3ctbW9yZS1uby1yZXN1bHRzXCI+XG4gICAgICAgIHt7ICdza3l1eF9sb29rdXBfc2hvd19tb3JlX25vX3Jlc3VsdHMnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPHNreS1yZXBlYXRlciBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLXJlcGVhdGVyXCIgZXhwYW5kTW9kZT1cIm5vbmVcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZGlzcGxheWVkSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwiY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXCJcbiAgICAgICAgICBbKGlzU2VsZWN0ZWQpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJpdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgIChpc1NlbGVjdGVkQ2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJlcGVhdGVySXRlbVRlbXBsYXRlID8/IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtLnZhbHVlIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgICAgfVxuICAgIDwvc2t5LXJlcGVhdGVyPlxuICAgIDxza3ktaW5maW5pdGUtc2Nyb2xsXG4gICAgICBbZW5hYmxlZF09XCJpdGVtc0hhdmVNb3JlXCJcbiAgICAgIFtsb2FkaW5nXT1cIml0ZW1zTG9hZGluZ1wiXG4gICAgICAoc2Nyb2xsRW5kKT1cImFkZEl0ZW1zKClcIlxuICAgIC8+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2NvbnRleHQnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQudXNlckNvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICBcIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsSW5zdGFuY2Uuc2F2ZShzZWxlY3RlZEl0ZW1zKVwiXG4gICAgPlxuICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0JyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xvc2VcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwibW9kYWxJbnN0YW5jZS5jbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jYW5jZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gIDwvc2t5LW1vZGFsLWZvb3Rlcj5cbjwvc2t5LW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIHt7IGl0ZW1bY29udGV4dC5kZXNjcmlwdG9yUHJvcGVydHldIH19XG48L25nLXRlbXBsYXRlPlxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewEncapsulation, booleanAttribute, inject, } from '@angular/core';\nimport { SkyAppWindowRef, SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyTokensMessageType, } from '@skyux/indicators';\nimport { SkyModalService } from '@skyux/modals';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkySelectionModalService } from '../selection-modal/selection-modal.service';\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../autocomplete/autocomplete.component\";\nimport * as i6 from \"../autocomplete/autocomplete-input.directive\";\nimport * as i7 from \"@skyux/icon\";\nimport * as i8 from \"@skyux/indicators\";\nimport * as i9 from \"@skyux/i18n\";\nexport class SkyLookupComponent extends SkyLookupAutocompleteAdapter {\n /**\n * The data source for the lookup component to search when users\n * enter text. You can specify static data such as an array of objects, or\n * you can pull data from a database.\n * @default []\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n set data(value) {\n this.#_data = value;\n if (this.#openNativePicker && !this.#hasSearchAsync()) {\n this.#openNativePicker.componentInstance.updateItemData(value);\n }\n }\n get data() {\n return this.#_data || [];\n }\n /**\n * Whether to disable the lookup field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value ?? false;\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * Whether the lookup field is required.\n * @default false\n */\n set required(value) {\n this.#_required = value;\n this.inputBoxHostSvc?.setRequired(value);\n }\n get required() {\n return this.#_required;\n }\n /**\n * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n set enableShowMore(value) {\n this.#_enableShowMore = value ?? false;\n }\n get enableShowMore() {\n return this.#_enableShowMore;\n }\n /**\n * Whether to display a button that lets users add options to the list.\n * @default false\n */\n set showAddButton(value) {\n this.#_showAddButton = value ?? false;\n }\n get showAddButton() {\n return this.#_showAddButton;\n }\n /**\n * The ability for users to select one option or multiple options.\n * @default \"multiple\"\n */\n set selectMode(value) {\n const multipleToSingle = value === 'single' && this.selectMode === 'multiple';\n this.#_selectMode = value;\n this.#updateForSelectMode();\n if (multipleToSingle) {\n const value = this.#getValue();\n if (value?.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.#setValue([value[0]], { emitEvent: true });\n this.#changeDetector.detectChanges();\n });\n }\n }\n }\n get selectMode() {\n return this.#_selectMode || 'multiple';\n }\n get tokens() {\n return this.#_tokens;\n }\n set tokens(tokens) {\n const value = this.#getValue();\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this.#_tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.#changeDetector.markForCheck();\n });\n }\n else {\n this.#_tokens = tokens;\n this.#changeDetector.markForCheck();\n }\n }\n /**\n * @internal\n * @deprecated This is exposed for unit tests only; refactor unit tests to\n * derive the control value a different way.\n */\n get value() {\n return this.#getValue();\n }\n set autocompleteInputDirective(value) {\n this.#_autocompleteInputDirective = value;\n this.#updateForSelectMode();\n }\n get autocompleteInputDirective() {\n return this.#_autocompleteInputDirective;\n }\n #idle;\n #markForTokenFocusOnKeyUp;\n #ngUnsubscribe;\n #notifyChange;\n #notifyTouched;\n #openNativePicker;\n #openSelectionModal;\n #_required;\n #_autocompleteInputDirective;\n #_data;\n #_disabled;\n #_enableShowMore;\n #_selectMode;\n #_showAddButton;\n #_tokens;\n #_value;\n #adapter;\n #changeDetector;\n #elementRef;\n #idService;\n #logSvc;\n #modalService;\n #resourcesService;\n #selectionModalSvc;\n #windowRef;\n #getValue() {\n return this.#_value ? this.#_value : [];\n }\n #setValue(newValue, options) {\n this.#_value = newValue;\n if (this.selectMode === 'multiple' && !this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n if (options.emitEvent) {\n this.#notifyChange?.(this.#_value);\n }\n this.#updateForSelectMode();\n }\n constructor(ngControl, inputBoxHostSvc, themeSvc) {\n super();\n this.inputBoxHostSvc = inputBoxHostSvc;\n this.themeSvc = themeSvc;\n /**\n * Fires when users select the button to add options to the list.\n */\n this.addClick = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n /**\n * @internal\n */\n this.selectionModalOpenChange = new EventEmitter();\n this.autocompleteController = new Subject();\n this.isInputFocused = false;\n this.tokensController = new Subject();\n this.#idle = new Subject();\n this.#markForTokenFocusOnKeyUp = false;\n this.#ngUnsubscribe = new Subject();\n this.#_required = false;\n this.#_disabled = false;\n this.#_enableShowMore = false;\n this.#_showAddButton = false;\n this.#adapter = inject(SkyLookupAdapterService);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#elementRef = inject(ElementRef);\n this.#idService = inject(SkyIdService);\n this.#logSvc = inject(SkyLogService);\n this.#modalService = inject(SkyModalService);\n this.#resourcesService = inject(SkyLibResourcesService);\n this.#selectionModalSvc = inject(SkySelectionModalService);\n this.#windowRef = inject(SkyAppWindowRef);\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n ngOnInit() {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.controlId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\n this.inputBoxHostSvc?.setRequired(this.required);\n }\n else {\n this.controlId = this.#idService.generateId();\n }\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngAfterViewInit() {\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n ngOnDestroy() {\n this.#removeEventListeners();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.addClick.complete();\n this.openChange.complete();\n this.tokensController.complete();\n }\n addButtonClicked() {\n this.addClick.emit({\n itemAdded: (args) => this.#onAddButtonComplete(args),\n });\n }\n onAutocompleteSelectionChange(change) {\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n }\n else {\n this.#setValue([], { emitEvent: true });\n }\n }\n onAutocompleteBlur() {\n this.#notifyTouched?.();\n }\n onTokensChange(change) {\n if (!change) {\n return;\n }\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.#focusInput();\n }\n this.tokens = change;\n const value = change.map((token) => {\n return token.value;\n });\n this.#setValue(value, { emitEvent: true });\n }\n }\n onTokensFocusIndexOverRange() {\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#focusInput();\n });\n }\n onTokensKeyUp(event) {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n case 'Del':\n case 'Delete':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n onTokensRendered() {\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.RepositionDropdown);\n }\n writeValue(value) {\n // Since we are dealing with arrays - clone the array being sent in to ensure we aren't modifying a consumers outer array\n this.#setValue(value ? value.slice() : [], { emitEvent: false });\n }\n registerOnChange(fn) {\n this.#notifyChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n // Allows Angular to disable the input.\n setDisabledState(disabled) {\n this.#removeEventListeners();\n if (!disabled) {\n this.#addEventListeners();\n }\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n clearSearchText() {\n if (this.autocompleteInputDirective) {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = '';\n }\n }\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n inputKeydown(event) {\n const value = event.target.value;\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.#markForTokenFocusOnKeyUp = false;\n }\n else {\n this.#markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n inputKeyup(event) {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.#markForTokenFocusOnKeyUp) {\n this.#sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n event.stopPropagation();\n }\n }\n onSearchButtonClick() {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective?.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n let searchValue = '';\n if (!isValueInTextBox && this.autocompleteInputDirective) {\n searchValue = this.autocompleteInputDirective.inputTextValue;\n }\n this.openPicker(searchValue);\n this.autocompleteInputDirective?.restoreInputTextValueToPreviousState();\n }\n onShowMoreClick(event) {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n openPicker(initialSearch) {\n if (this.showMoreConfig?.customPicker) {\n this.showMorePickerId = undefined;\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch,\n initialValue: this.#getValue(),\n });\n }\n else {\n const initialValue = this.#getValue();\n this.selectionModalOpenChange.emit(true);\n if (this.#hasSearchAsync()) {\n this.#openSelectionModal =\n this.#createSelectionModalInstance(initialSearch);\n this.showMorePickerId = this.#openSelectionModal.id;\n this.#openSelectionModal.closed.subscribe((closeArgs) => {\n this.#processPickerResult(closeArgs.reason === 'save'\n ? closeArgs.selectedItems\n : initialValue);\n this.selectionModalOpenChange.emit(false);\n });\n }\n else {\n this.#openNativePicker =\n this.#createNativePickerInstance(initialSearch);\n this.showMorePickerId = this.#openNativePicker.componentInstance.id;\n this.#openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n this.#openNativePicker.closed.subscribe((closeArgs) => {\n let selectedItems;\n if (closeArgs.reason === 'save') {\n selectedItems = [];\n this.data.forEach((item, dataIndex) => {\n if (closeArgs.data.some((savedItem) => {\n return savedItem.index === dataIndex;\n })) {\n selectedItems.push(item);\n }\n });\n }\n else {\n selectedItems = initialValue;\n }\n this.#processPickerResult(selectedItems);\n this.selectionModalOpenChange.emit(false);\n });\n this.#changeDetector.markForCheck();\n }\n }\n }\n onAutocompleteOpenChange($event) {\n if ($event) {\n this.openChange.emit(true);\n }\n else if (!this.#pickerModalOpen()) {\n this.openChange.emit(false);\n }\n }\n onFocus($event) {\n $event.target.select();\n }\n #createSelectionModalInstance(initialSearch) {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n if (this.idProperty === undefined) {\n this.#logSvc.error(\"The lookup component's 'idProperty' input is required when `enableShowMore` and 'searchAsync' are used together.\");\n }\n return this.#selectionModalSvc.open({\n descriptorProperty: this.descriptorProperty,\n idProperty: this.idProperty,\n searchAsync: (args) => {\n const searchAsyncArgs = {\n displayType: 'modal',\n offset: args.offset,\n searchText: args.searchText,\n continuationData: args.continuationData,\n };\n this.searchAsync.emit(searchAsyncArgs);\n return searchAsyncArgs.result;\n },\n selectMode: this.selectMode,\n addClick: () => {\n this.addButtonClicked();\n },\n initialSearch,\n itemTemplate: modalConfig.itemTemplate,\n selectionDescriptor: modalConfig.selectionDescriptor,\n showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n wrapperClass: this.wrapperClass,\n });\n }\n #createNativePickerInstance(initialSearch) {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n if (!modalConfig.selectionDescriptor) {\n modalConfig.selectionDescriptor =\n this.selectMode === 'single' ? 'item' : 'items';\n }\n const contextProviderValue = new SkyLookupShowMoreNativePickerContext(this.descriptorProperty, initialSearch, initialValue, this.data, this.searchOrDefault, this.selectMode, this.showAddButton, modalConfig);\n return this.#modalService.open(SkyLookupShowMoreModalComponent, {\n providers: [\n {\n provide: SkyLookupShowMoreNativePickerContext,\n useValue: contextProviderValue,\n },\n {\n provide: SkyLookupAdapterService,\n useValue: this.#adapter,\n },\n ],\n size: 'large',\n wrapperClass: this.wrapperClass,\n });\n }\n #processPickerResult(selectedItems) {\n this.#openSelectionModal = undefined;\n this.#openNativePicker = undefined;\n this.showMorePickerId = undefined;\n /* istanbul ignore next */\n selectedItems = selectedItems || [];\n this.#setValue(selectedItems, { emitEvent: true });\n this.#focusInput();\n this.#changeDetector.markForCheck();\n }\n onSearchAsync(args) {\n this.searchAsync.emit(args);\n }\n #addToSelected(item) {\n const value = this.#getValue();\n let selectedItems;\n if (this.selectMode === 'single') {\n selectedItems = [item];\n }\n else {\n selectedItems = value;\n const idProperty = this.idProperty || '';\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (!this.idProperty ||\n !value.some((existingItem) => existingItem[idProperty] === item[idProperty])) {\n selectedItems.push(item);\n }\n this.clearSearchText();\n }\n this.#setValue(selectedItems, { emitEvent: true });\n }\n #addEventListeners() {\n this.#idle = new Subject();\n this.#focusInputOnHostClick();\n }\n #removeEventListeners() {\n this.#idle.next();\n this.#idle.complete();\n }\n #focusInputOnHostClick() {\n let hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n const documentObj = this.#windowRef.nativeWindow.document;\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n observableFromEvent(documentObj, 'click')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n this.#changeDetector.markForCheck();\n });\n observableFromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n this.#changeDetector.markForCheck();\n });\n if (hostElement) {\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.#focusInput();\n }\n });\n }\n }\n #focusInput() {\n if (this.lookupWrapperRef) {\n this.#adapter.focusInput(this.lookupWrapperRef);\n }\n }\n #onAddButtonComplete(args) {\n if (this.#openSelectionModal) {\n // Notify the selection modal of the new item. The selection\n // modal will decide whether the new item should be added\n // to the value when the user confirms or cancels the\n // selection modal.\n this.#openSelectionModal.addItem(args.item);\n }\n else {\n let addItemToValue;\n if (this.#hasSearchAsync()) {\n addItemToValue = true;\n }\n else {\n if (args.data) {\n this.data = args.data;\n }\n if (this.data.indexOf(args.item) >= 0) {\n if (this.#openNativePicker) {\n // Notify the picker of the new item. The picker will\n // decide whether the new item should be added to the\n // value when the user confirms or cancels the picker.\n this.#openNativePicker\n .componentInstance.onItemSelect(true, { value: args.item, selected: false });\n }\n else {\n addItemToValue = true;\n }\n }\n }\n if (addItemToValue) {\n const oldValue = this.#getValue();\n const newValue = this.selectMode === 'multiple'\n ? oldValue.concat(args.item)\n : [args.item];\n this.#setValue(newValue, { emitEvent: true });\n }\n }\n }\n #parseTokens(data) {\n return data.map((item) => {\n return {\n value: item,\n };\n });\n }\n #sendAutocompleteMessage(type) {\n this.autocompleteController.next({ type });\n }\n #sendTokensMessage(type) {\n this.tokensController.next({ type });\n }\n #updateForSelectMode() {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n const value = this.#getValue();\n this.autocompleteInputDirective.value = value && value[0];\n }\n else {\n this.clearSearchText();\n }\n }\n }\n #hasSearchAsync() {\n return this.searchAsync.observers.length > 0;\n }\n #pickerModalOpen() {\n return !!(this.#openNativePicker || this.#openSelectionModal);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyLookupComponent, isStandalone: false, selector: \"sky-lookup\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", autocompleteAttribute: \"autocompleteAttribute\", data: \"data\", disabled: \"disabled\", required: [\"required\", \"required\", booleanAttribute], enableShowMore: \"enableShowMore\", placeholderText: \"placeholderText\", idProperty: \"idProperty\", showAddButton: \"showAddButton\", showMoreConfig: \"showMoreConfig\", selectMode: \"selectMode\", wrapperClass: \"wrapperClass\" }, outputs: { addClick: \"addClick\", openChange: \"openChange\", selectionModalOpenChange: \"selectionModalOpenChange\" }, providers: [SkyLookupAdapterService], viewQueries: [{ propertyName: \"autocompleteInputDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true, read: SkyAutocompleteInputDirective }, { propertyName: \"showMoreButtonTemplateRef\", first: true, predicate: [\"showMoreButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"lookupWrapperRef\", first: true, predicate: [\"lookupWrapper\"], descendants: true, read: ElementRef }, { propertyName: \"searchIconTemplateRef\", first: true, predicate: [\"searchIconTemplateRef\"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <div\\n #lookupWrapper\\n class=\\\"sky-lookup\\\"\\n [ngClass]=\\\"{\\n 'sky-lookup-focused': isInputFocused,\\n 'sky-lookup-disabled': disabled,\\n 'sky-lookup-single': selectMode === 'single'\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"ariaLabelledBy || inputBoxHostSvc?.labelId\\\"\\n [attr.data-sky-lookup-show-more-picker-id]=\\\"showMorePickerId\\\"\\n [data]=\\\"data\\\"\\n [debounceTime]=\\\"debounceTime\\\"\\n [descriptorProperty]=\\\"descriptorProperty\\\"\\n [enableShowMore]=\\\"enableShowMore\\\"\\n [messageStream]=\\\"autocompleteController\\\"\\n [propertiesToSearch]=\\\"propertiesToSearch\\\"\\n [search]=\\\"searchOrDefault\\\"\\n [searchAsyncDisabled]=\\\"searchAsync.observers.length === 0\\\"\\n [searchFilters]=\\\"searchFilters\\\"\\n [searchResultsLimit]=\\\"searchResultsLimit\\\"\\n [searchResultTemplate]=\\\"searchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n [showAddButton]=\\\"showAddButton\\\"\\n [wrapperClass]=\\\"wrapperClass\\\"\\n (addClick)=\\\"addButtonClicked()\\\"\\n (searchAsync)=\\\"onSearchAsync($event)\\\"\\n (selectionChange)=\\\"onAutocompleteSelectionChange($event)\\\"\\n (showMoreClick)=\\\"onShowMoreClick($event)\\\"\\n (openChange)=\\\"onAutocompleteOpenChange($event)\\\"\\n >\\n <div class=\\\"sky-lookup-search-flex-wrapper\\\">\\n <div\\n class=\\\"sky-lookup-search\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': isInputFocused && !disabled\\n }\\\"\\n >\\n @if (selectMode === 'multiple') {\\n <sky-tokens\\n class=\\\"sky-lookup-tokens\\\"\\n [disabled]=\\\"disabled\\\"\\n [displayWith]=\\\"descriptorProperty\\\"\\n [focusable]=\\\"false\\\"\\n [messageStream]=\\\"tokensController\\\"\\n [trackWith]=\\\"idProperty\\\"\\n [tokens]=\\\"tokens\\\"\\n (keyup)=\\\"onTokensKeyUp($event)\\\"\\n (tokensChange)=\\\"onTokensChange($event)\\\"\\n (tokensRendered)=\\\"onTokensRendered()\\\"\\n (tokenSelected)=\\\"enableShowMore ? openPicker('') : undefined\\\"\\n (focusIndexOverRange)=\\\"onTokensFocusIndexOverRange()\\\"\\n >\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (keydown)=\\\"inputKeydown($event)\\\"\\n (keyup)=\\\"inputKeyup($event)\\\"\\n ></textarea>\\n @if (!inputBoxHostSvc && !enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplateRef\\\" />\\n }\\n </sky-tokens>\\n } @else if (selectMode === 'single') {\\n <div class=\\\"sky-lookup-single-control\\\">\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n ></textarea>\\n @if (!inputBoxHostSvc && !enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplateRef\\\" />\\n }\\n </div>\\n }\\n </div>\\n @if (!inputBoxHostSvc && enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"showMoreButtonTemplateRef\\\" />\\n }\\n </div>\\n </sky-autocomplete>\\n </div>\\n</ng-template>\\n\\n<ng-template #showMoreButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{ 'sky-btn-disabled': disabled }\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_search_button_show_more' | skyLibResources\\n \\\"\\n (click)=\\\"onSearchButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #searchIconTemplateRef>\\n <div\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset\\\"\\n [ngClass]=\\\"{ 'sky-lookup-disabled': disabled }\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-lookup:not(.sky-theme-modern *){--sky-override-lookup-form-control-background-color: transparent;--sky-override-lookup-input-box-margin-top: 0;--sky-override-lookup-input-box-padding-top: 0;--sky-override-lookup-input-box-search-background-color: inherit;--sky-override-lookup-input-box-search-padding: 6px 12px 5px 3px;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-margin-top: -5px;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-theme-modern:not(.sky-theme-brand-base) .sky-lookup{--sky-override-lookup-input-box-search-disabled-background-color: transparent;--sky-override-lookup-input-box-search-padding: 0 0 0 15px;--sky-override-lookup-input-box-single-control-padding-left: 0;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-lookup .sky-lookup-input.sky-form-control{resize:none;box-sizing:content-box;overflow:hidden;padding:0;background-color:var(--sky-override-lookup-form-control-background-color, inherit);border:0}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-search-disabled-background-color, inherit)}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{row-gap:var(--sky-override-lookup-tokens-row-gap, var(--sky-space-gap-action_group-s));margin-top:var(--sky-override-lookup-tokens-margin-top, -6px);margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{flex-basis:100px;padding-top:5px;padding-bottom:5px;padding-left:10px}.sky-lookup .sky-lookup-single-control{display:inline-flex;padding-left:var(--sky-override-lookup-single-control-padding-left, inherit);width:100%}.sky-lookup-search{cursor:text;background-color:var(--sky-override-lookup-search-background-color, inherit);line-height:var(--sky-override-lookup-search-line-height, inherit);padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border:var(--sky-override-lookup-search-border, var(--sky-border-width-input-base) solid var(--sky-color-border-action-input-base))}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%;margin-top:var(--sky-override-lookup-input-box-margin-top, calc(-1 * (var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom))));padding-top:var(--sky-override-lookup-input-box-padding-top, calc(var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom)))}sky-input-box .sky-lookup .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-background-color, transparent);border:none;padding:var(--sky-override-lookup-input-box-search-padding, inherit);width:100%}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-disabled-background-color, inherit)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left));align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:var(--sky-override-lookup-input-box-single-control-padding-left, inherit)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-disabled-background-color, inherit)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left));align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:var(--sky-override-lookup-input-box-single-control-padding-left, inherit)}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i5.SkyAutocompleteComponent, selector: \"sky-autocomplete\", inputs: [\"ariaLabelledBy\", \"data\", \"debounceTime\", \"descriptorProperty\", \"dropdownHintText\", \"enableShowMore\", \"messageStream\", \"wrapperClass\", \"propertiesToSearch\", \"search\", \"searchResultTemplate\", \"searchTextMinimumCharacters\", \"searchFilters\", \"searchResultsLimit\", \"showAddButton\", \"noResultsFoundText\", \"searchAsyncDisabled\", \"allowAnyValue\", \"highlightSearchText\"], outputs: [\"addClick\", \"showMoreClick\", \"selectionChange\", \"searchAsync\", \"openChange\"] }, { kind: \"directive\", type: i6.SkyAutocompleteInputDirective, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: [\"autocompleteAttribute\", \"disabled\"] }, { kind: \"component\", type: i7.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"component\", type: i8.λ13, selector: \"sky-tokens\", inputs: [\"disabled\", \"dismissible\", \"displayWith\", \"trackWith\", \"focusable\", \"tokens\", \"messageStream\"], outputs: [\"focusIndexOverRange\", \"focusIndexUnderRange\", \"tokenSelected\", \"tokensChange\", \"tokensRendered\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-lookup', providers: [SkyLookupAdapterService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <div\\n #lookupWrapper\\n class=\\\"sky-lookup\\\"\\n [ngClass]=\\\"{\\n 'sky-lookup-focused': isInputFocused,\\n 'sky-lookup-disabled': disabled,\\n 'sky-lookup-single': selectMode === 'single'\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"ariaLabelledBy || inputBoxHostSvc?.labelId\\\"\\n [attr.data-sky-lookup-show-more-picker-id]=\\\"showMorePickerId\\\"\\n [data]=\\\"data\\\"\\n [debounceTime]=\\\"debounceTime\\\"\\n [descriptorProperty]=\\\"descriptorProperty\\\"\\n [enableShowMore]=\\\"enableShowMore\\\"\\n [messageStream]=\\\"autocompleteController\\\"\\n [propertiesToSearch]=\\\"propertiesToSearch\\\"\\n [search]=\\\"searchOrDefault\\\"\\n [searchAsyncDisabled]=\\\"searchAsync.observers.length === 0\\\"\\n [searchFilters]=\\\"searchFilters\\\"\\n [searchResultsLimit]=\\\"searchResultsLimit\\\"\\n [searchResultTemplate]=\\\"searchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n [showAddButton]=\\\"showAddButton\\\"\\n [wrapperClass]=\\\"wrapperClass\\\"\\n (addClick)=\\\"addButtonClicked()\\\"\\n (searchAsync)=\\\"onSearchAsync($event)\\\"\\n (selectionChange)=\\\"onAutocompleteSelectionChange($event)\\\"\\n (showMoreClick)=\\\"onShowMoreClick($event)\\\"\\n (openChange)=\\\"onAutocompleteOpenChange($event)\\\"\\n >\\n <div class=\\\"sky-lookup-search-flex-wrapper\\\">\\n <div\\n class=\\\"sky-lookup-search\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': isInputFocused && !disabled\\n }\\\"\\n >\\n @if (selectMode === 'multiple') {\\n <sky-tokens\\n class=\\\"sky-lookup-tokens\\\"\\n [disabled]=\\\"disabled\\\"\\n [displayWith]=\\\"descriptorProperty\\\"\\n [focusable]=\\\"false\\\"\\n [messageStream]=\\\"tokensController\\\"\\n [trackWith]=\\\"idProperty\\\"\\n [tokens]=\\\"tokens\\\"\\n (keyup)=\\\"onTokensKeyUp($event)\\\"\\n (tokensChange)=\\\"onTokensChange($event)\\\"\\n (tokensRendered)=\\\"onTokensRendered()\\\"\\n (tokenSelected)=\\\"enableShowMore ? openPicker('') : undefined\\\"\\n (focusIndexOverRange)=\\\"onTokensFocusIndexOverRange()\\\"\\n >\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (keydown)=\\\"inputKeydown($event)\\\"\\n (keyup)=\\\"inputKeyup($event)\\\"\\n ></textarea>\\n @if (!inputBoxHostSvc && !enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplateRef\\\" />\\n }\\n </sky-tokens>\\n } @else if (selectMode === 'single') {\\n <div class=\\\"sky-lookup-single-control\\\">\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n ></textarea>\\n @if (!inputBoxHostSvc && !enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplateRef\\\" />\\n }\\n </div>\\n }\\n </div>\\n @if (!inputBoxHostSvc && enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"showMoreButtonTemplateRef\\\" />\\n }\\n </div>\\n </sky-autocomplete>\\n </div>\\n</ng-template>\\n\\n<ng-template #showMoreButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{ 'sky-btn-disabled': disabled }\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_search_button_show_more' | skyLibResources\\n \\\"\\n (click)=\\\"onSearchButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #searchIconTemplateRef>\\n <div\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset\\\"\\n [ngClass]=\\\"{ 'sky-lookup-disabled': disabled }\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-lookup:not(.sky-theme-modern *){--sky-override-lookup-form-control-background-color: transparent;--sky-override-lookup-input-box-margin-top: 0;--sky-override-lookup-input-box-padding-top: 0;--sky-override-lookup-input-box-search-background-color: inherit;--sky-override-lookup-input-box-search-padding: 6px 12px 5px 3px;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-margin-top: -5px;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-theme-modern:not(.sky-theme-brand-base) .sky-lookup{--sky-override-lookup-input-box-search-disabled-background-color: transparent;--sky-override-lookup-input-box-search-padding: 0 0 0 15px;--sky-override-lookup-input-box-single-control-padding-left: 0;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-lookup .sky-lookup-input.sky-form-control{resize:none;box-sizing:content-box;overflow:hidden;padding:0;background-color:var(--sky-override-lookup-form-control-background-color, inherit);border:0}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-search-disabled-background-color, inherit)}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{row-gap:var(--sky-override-lookup-tokens-row-gap, var(--sky-space-gap-action_group-s));margin-top:var(--sky-override-lookup-tokens-margin-top, -6px);margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{flex-basis:100px;padding-top:5px;padding-bottom:5px;padding-left:10px}.sky-lookup .sky-lookup-single-control{display:inline-flex;padding-left:var(--sky-override-lookup-single-control-padding-left, inherit);width:100%}.sky-lookup-search{cursor:text;background-color:var(--sky-override-lookup-search-background-color, inherit);line-height:var(--sky-override-lookup-search-line-height, inherit);padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border:var(--sky-override-lookup-search-border, var(--sky-border-width-input-base) solid var(--sky-color-border-action-input-base))}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%;margin-top:var(--sky-override-lookup-input-box-margin-top, calc(-1 * (var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom))));padding-top:var(--sky-override-lookup-input-box-padding-top, calc(var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom)))}sky-input-box .sky-lookup .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-background-color, transparent);border:none;padding:var(--sky-override-lookup-input-box-search-padding, inherit);width:100%}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-disabled-background-color, inherit)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left));align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:var(--sky-override-lookup-input-box-single-control-padding-left, inherit)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-disabled-background-color, inherit)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left));align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-single-control{padding-left:var(--sky-override-lookup-input-box-single-control-padding-left, inherit)}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], autocompleteAttribute: [{\n type: Input\n }], data: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], enableShowMore: [{\n type: Input\n }], placeholderText: [{\n type: Input\n }], idProperty: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], showMoreConfig: [{\n type: Input\n }], selectMode: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], addClick: [{\n type: Output\n }], openChange: [{\n type: Output\n }], selectionModalOpenChange: [{\n type: Output\n }], autocompleteInputDirective: [{\n type: ViewChild,\n args: [SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n }]\n }], showMoreButtonTemplateRef: [{\n type: ViewChild,\n args: ['showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], lookupWrapperRef: [{\n type: ViewChild,\n args: ['lookupWrapper', {\n read: ElementRef,\n }]\n }], searchIconTemplateRef: [{\n type: ViewChild,\n args: ['searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRSxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBSTdGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxD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O3dCQUNsQyxJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiwgU2t5SWRTZXJ2aWNlLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHtcbiAgU2t5VG9rZW4sXG4gIFNreVRva2Vuc01lc3NhZ2UsXG4gIFNreVRva2Vuc01lc3NhZ2VUeXBlLFxufSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lNb2RhbEluc3RhbmNlLCBTa3lNb2RhbFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJncyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24tbW9kYWwvdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWluc3RhbmNlJztcblxuaW1wb3J0IHsgU2t5TG9va3VwQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2xvb2t1cC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TG9va3VwQXV0b2NvbXBsZXRlQWRhcHRlciB9IGZyb20gJy4vbG9va3VwLWF1dG9jb21wbGV0ZS1hZGFwdGVyJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1jYWxsYmFjay1hcmdzJztcbmltcG9ydCB7IFNreUxvb2t1cEFkZENsaWNrRXZlbnRBcmdzIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtYWRkLWNsaWNrLWV2ZW50LWFyZ3MnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtbmF0aXZlLXBpY2tlci1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxvb2t1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5TG9va3VwQWRhcHRlclNlcnZpY2VdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxvb2t1cENvbXBvbmVudFxuICBleHRlbmRzIFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgdHlwZWFoZWFkIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgaW5wdXQgYm94IGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGlucHV0IGJveCBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgJ29mZidcbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG9ubHkgc3VwcG9ydHMgYnJvd3NlciBhdXRvZmlsbCBvbiBjb21wb25lbnRzIHdoZXJlIHRoZSBkaXJlY3QgaW5wdXQgbWF0Y2hlcyB0aGUgcmV0dXJuIHZhbHVlLiBUaGlzIGlucHV0IG1heSBub3QgYmVoYXZlIGFzIGV4cGVjdGVkIGR1ZSB0byB0aGUgZHJvcGRvd24gc2VsZWN0aW9uIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBzb3VyY2UgZm9yIHRoZSBsb29rdXAgY29tcG9uZW50IHRvIHNlYXJjaCB3aGVuIHVzZXJzXG4gICAqIGVudGVyIHRleHQuIFlvdSBjYW4gc3BlY2lmeSBzdGF0aWMgZGF0YSBzdWNoIGFzIGFuIGFycmF5IG9mIG9iamVjdHMsIG9yXG4gICAqIHlvdSBjYW4gcHVsbCBkYXRhIGZyb20gYSBkYXRhYmFzZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGVtaXR0ZXIgYW5kIGNhbGxiYWNrIGluc3RlYWQgdG8gcHJvdmlkZSBkYXRhIHRvIHRoZSBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kYXRhID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciAmJiAhdGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS51cGRhdGVJdGVtRGF0YSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGEgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxvb2t1cCBmaWVsZCBpcyByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5pbnB1dEJveEhvc3RTdmM/LnNldFJlcXVpcmVkKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19yZXF1aXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB1c2VycyB0byBvcGVuIGEgcGlja2VyIHdoZXJlIHRoZXkgY2FuIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVuYWJsZVNob3dNb3JlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2VuYWJsZVNob3dNb3JlID0gdmFsdWUgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZVNob3dNb3JlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZW5hYmxlU2hvd01vcmU7XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgcHJvcGVydHkgdGhhdCByZXByZXNlbnRzIHRoZSBvYmplY3QncyB1bmlxdWUgaWRlbnRpZmllci5cbiAgICogU3BlY2lmeWluZyB0aGlzIHByb3BlcnR5IGVuYWJsZXMgdG9rZW4gYW5pbWF0aW9ucyBhbmQgbW9yZSBlZmZpY2llbnQgcmVuZGVyaW5nLlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYGVuYWJsZVNob3dNb3JlYCBhbmQgYHNlYXJjaEFzeW5jYCB0b2dldGhlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZFByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNob3dBZGRCdXR0b24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2hvd0FkZEJ1dHRvbiA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfc2hvd0FkZEJ1dHRvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaWNrZXIgdGhhdCBkaXNwbGF5cyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93TW9yZUNvbmZpZzogU2t5TG9va3VwU2hvd01vcmVDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhYmlsaXR5IGZvciB1c2VycyB0byBzZWxlY3Qgb25lIG9wdGlvbiBvciBtdWx0aXBsZSBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBcIm11bHRpcGxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0TW9kZSh2YWx1ZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtdWx0aXBsZVRvU2luZ2xlOiBib29sZWFuID1cbiAgICAgIHZhbHVlID09PSAnc2luZ2xlJyAmJiB0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSc7XG5cbiAgICB0aGlzLiNfc2VsZWN0TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcblxuICAgIGlmIChtdWx0aXBsZVRvU2luZ2xlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBUaGUgYHNldFRpbWVvdXRgIGlzIG5lZWRlZCB0byBhdm9pZCBhIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBlcnJvciBpbiB0ZW1wbGF0ZSBmb3Jtcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jc2V0VmFsdWUoW3ZhbHVlWzBdXSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdE1vZGUoKTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0TW9kZSB8fCAnbXVsdGlwbGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHdyYXBwZXJDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uTW9kYWxPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5zKCk6IFNreVRva2VuW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdG9rZW5zO1xuICB9XG5cbiAgcHVibGljIHNldCB0b2tlbnModG9rZW5zOiBTa3lUb2tlbltdIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gQ29sbGFwc2UgdGhlIHRva2VucyBpbnRvIGEgc2luZ2xlIHRva2VuIGlmIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCBtYW55IG9wdGlvbnMuXG4gICAgaWYgKHRoaXMuZW5hYmxlU2hvd01vcmUgJiYgdmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZVxuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF9sb29rdXBfdG9rZW5zX3N1bW1hcnknLCB2YWx1ZS5sZW5ndGgudG9TdHJpbmcoKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgobGFiZWwpID0+IHtcbiAgICAgICAgICB0aGlzLiNfdG9rZW5zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldOiBsYWJlbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3Rva2VucyA9IHRva2VucztcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBleHBvc2VkIGZvciB1bml0IHRlc3RzIG9ubHk7IHJlZmFjdG9yIHVuaXQgdGVzdHMgdG9cbiAgICogZGVyaXZlIHRoZSBjb250cm9sIHZhbHVlIGEgZGlmZmVyZW50IHdheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNnZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb3JlUGlja2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHRva2Vuc0NvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuICBwcm90ZWN0ZWQgY29udHJvbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBhcmlhRGVzY3JpYmVkQnk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLCB7XG4gICAgcmVhZDogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNldCBhdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZShcbiAgICB2YWx1ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoKTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnbG9va3VwV3JhcHBlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgbG9va3VwV3JhcHBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2VhcmNoSWNvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjaWRsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbm90aWZ5Q2hhbmdlOiAoKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNvcGVuTmF0aXZlUGlja2VyOiBTa3lNb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjb3BlblNlbGVjdGlvbk1vZGFsOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG4gICNfZGF0YTogYW55W10gfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19lbmFibGVTaG93TW9yZSA9IGZhbHNlO1xuICAjX3NlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAjX3Nob3dBZGRCdXR0b24gPSBmYWxzZTtcbiAgI190b2tlbnM6IFNreVRva2VuW10gfCB1bmRlZmluZWQ7XG4gICNfdmFsdWU6IGFueVtdIHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNhZGFwdGVyID0gaW5qZWN0KFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xvZ1N2YyA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI21vZGFsU2VydmljZSA9IGluamVjdChTa3lNb2RhbFNlcnZpY2UpO1xuICByZWFkb25seSAjcmVzb3VyY2VzU2VydmljZSA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3NlbGVjdGlvbk1vZGFsU3ZjID0gaW5qZWN0KFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSk7XG4gIHJlYWRvbmx5ICN3aW5kb3dSZWYgPSBpbmplY3QoU2t5QXBwV2luZG93UmVmKTtcblxuICAjZ2V0VmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWUgPyB0aGlzLiNfdmFsdWUgOiBbXTtcbiAgfVxuXG4gICNzZXRWYWx1ZShuZXdWYWx1ZTogYW55W10sIG9wdGlvbnM6IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLiNfdmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScgJiYgIXRoaXMuI3BpY2tlck1vZGFsT3BlbigpKSB7XG4gICAgICB0aGlzLnRva2VucyA9IHRoaXMuI3BhcnNlVG9rZW5zKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5lbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy4jdXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTdmMgJiYgdGhpcy5pbnB1dFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmNvbnRyb2xJZCA9IHRoaXMuaW5wdXRCb3hIb3N0U3ZjLmNvbnRyb2xJZDtcbiAgICAgIHRoaXMuYXJpYURlc2NyaWJlZEJ5ID0gdGhpcy5pbnB1dEJveEhvc3RTdmMuYXJpYURlc2NyaWJlZEJ5O1xuXG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFN2Yy5wb3B1bGF0ZSh7XG4gICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgYnV0dG9uc1RlbXBsYXRlOiB0aGlzLmVuYWJsZVNob3dNb3JlXG4gICAgICAgICAgPyB0aGlzLnNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWZcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaWNvbnNJbnNldFRlbXBsYXRlOiB0aGlzLmVuYWJsZVNob3dNb3JlXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IHRoaXMuc2VhcmNoSWNvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjPy5zZXRSZXF1aXJlZCh0aGlzLnJlcXVpcmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sSWQgPSB0aGlzLiNpZFNlcnZpY2UuZ2VuZXJhdGVJZCgpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZGlyZWN0aXZlIHRvIGJlIHNldCBhZnRlciBlbGVtZW50c1xuICAgICAgLy8gYXJlIHJlYXJyYW5nZWQgd2hlbiBzd2l0Y2hpbmcgdGhlbWVzLlxuICAgICAgdGhpcy50aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5hZGRDbGljay5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5lbWl0KHtcbiAgICAgIGl0ZW1BZGRlZDogKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncykgPT5cbiAgICAgICAgdGhpcy4jb25BZGRCdXR0b25Db21wbGV0ZShhcmdzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZShcbiAgICBjaGFuZ2U6IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuI2FkZFRvU2VsZWN0ZWQoY2hhbmdlLnNlbGVjdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3NldFZhbHVlKFtdLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zQ2hhbmdlKGNoYW5nZTogU2t5VG9rZW5bXSk6IHZvaWQge1xuICAgIGlmICghY2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zICE9PSBjaGFuZ2UpIHtcbiAgICAgIGlmIChjaGFuZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuI2ZvY3VzSW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50b2tlbnMgPSBjaGFuZ2U7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZS5tYXAoKHRva2VuKSA9PiB7XG4gICAgICAgIHJldHVybiB0b2tlbi52YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zRm9jdXNJbmRleE92ZXJSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzVG9rZW4pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnRGVsJzpcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5SZW1vdmVBY3RpdmVUb2tlbik7XG4gICAgICAgICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zUmVuZGVyZWQoKTogdm9pZCB7XG4gICAgdGhpcy4jc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UoXG4gICAgICBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5SZXBvc2l0aW9uRHJvcGRvd24sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuICAgIC8vIFNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggYXJyYXlzIC0gY2xvbmUgdGhlIGFycmF5IGJlaW5nIHNlbnQgaW4gdG8gZW5zdXJlIHdlIGFyZW4ndCBtb2RpZnlpbmcgYSBjb25zdW1lcnMgb3V0ZXIgYXJyYXlcbiAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSA/IHZhbHVlLnNsaWNlKCkgOiBbXSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55W10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlcyB3aGVuIHRvIGZvY3VzIG9uIHRoZSB0b2tlbnMuXG4gIC8vIENoZWNrIGZvciBlbXB0eSBzZWFyY2ggdGV4dCBvbiBrZXlkb3duLCBiZWZvcmUgdGhlIGVzY2FwZSBrZXkgaXMgZnVsbHkgcHJlc3NlZC5cbiAgLy8gKE90aGVyd2lzZSwgYSBzaW5nbGUgY2hhcmFjdGVyIGJlaW5nIGVzY2FwZWQgd291bGQgcmVnaXN0ZXIgYXMgZW1wdHkgb24ga2V5dXAuKVxuICAvLyBJZiBlbXB0eSBvbiBrZXlkb3duLCBzZXQgYSBmbGFnIHNvIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBjYW4gYmUgdGFrZW4gb24ga2V5dXAuXG4gIHB1YmxpYyBpbnB1dEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWU7XG5cbiAgICAvKiBTYW5pdHkgY2hlY2sgYXMgdGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpbiBtdWx0aXBsZSBzZWxlY3QgbW9kZSAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRXNjJzpcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCkge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNMYXN0VG9rZW4pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLkNsb3NlRHJvcGRvd24pO1xuICAgIGxldCBpc1ZhbHVlSW5UZXh0Qm94ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGlzVmFsdWVJblRleHRCb3ggPVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlPy52YWx1ZSAmJlxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlID09PVxuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWVbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgIH1cblxuICAgIGxldCBzZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKCFpc1ZhbHVlSW5UZXh0Qm94ICYmIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5QaWNrZXIoc2VhcmNoVmFsdWUpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU/LnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2hvd01vcmVDbGljayhldmVudDogU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5vcGVuUGlja2VyKGV2ZW50LmlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGlja2VyKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dNb3JlQ29uZmlnPy5jdXN0b21QaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaG93TW9yZUNvbmZpZy5jdXN0b21QaWNrZXIub3Blbih7XG4gICAgICAgIGl0ZW1zOiB0aGlzLmRhdGEsXG4gICAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy4jZ2V0VmFsdWUoKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RhbE9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcblxuICAgICAgaWYgKHRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgICAgdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsID1cbiAgICAgICAgICB0aGlzLiNjcmVhdGVTZWxlY3Rpb25Nb2RhbEluc3RhbmNlKGluaXRpYWxTZWFyY2gpO1xuXG4gICAgICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5pZDtcblxuICAgICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwuY2xvc2VkLnN1YnNjcmliZSgoY2xvc2VBcmdzKSA9PiB7XG4gICAgICAgICAgdGhpcy4jcHJvY2Vzc1BpY2tlclJlc3VsdChcbiAgICAgICAgICAgIGNsb3NlQXJncy5yZWFzb24gPT09ICdzYXZlJ1xuICAgICAgICAgICAgICA/IGNsb3NlQXJncy5zZWxlY3RlZEl0ZW1zXG4gICAgICAgICAgICAgIDogaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RhbE9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlciA9XG4gICAgICAgICAgdGhpcy4jY3JlYXRlTmF0aXZlUGlja2VySW5zdGFuY2UoaW5pdGlhbFNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS5pZDtcblxuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLmFkZENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRCdXR0b25DbGlja2VkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY2xvc2VkLnN1YnNjcmliZSgoY2xvc2VBcmdzKSA9PiB7XG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuXG4gICAgICAgICAgaWYgKGNsb3NlQXJncy5yZWFzb24gPT09ICdzYXZlJykge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoaXRlbTogYW55LCBkYXRhSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY2xvc2VBcmdzLmRhdGEuc29tZSgoc2F2ZWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBzYXZlZEl0ZW0uaW5kZXggPT09IGRhdGFJbmRleDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gaW5pdGlhbFZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI3Byb2Nlc3NQaWNrZXJSZXN1bHQoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RhbE9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkF1dG9jb21wbGV0ZU9wZW5DaGFuZ2UoJGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy4jcGlja2VyTW9kYWxPcGVuKCkpIHtcbiAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAoJGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS5zZWxlY3QoKTtcbiAgfVxuXG4gICNjcmVhdGVTZWxlY3Rpb25Nb2RhbEluc3RhbmNlKFxuICAgIGluaXRpYWxTZWFyY2g6IHN0cmluZyxcbiAgKTogU2t5U2VsZWN0aW9uTW9kYWxJbnN0YW5jZSB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBtb2RhbENvbmZpZyA9IHRoaXMuc2hvd01vcmVDb25maWc/Lm5hdGl2ZVBpY2tlckNvbmZpZyB8fCB7fTtcblxuICAgIGlmICghbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlKSB7XG4gICAgICBtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlkUHJvcGVydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jbG9nU3ZjLmVycm9yKFxuICAgICAgICBcIlRoZSBsb29rdXAgY29tcG9uZW50J3MgJ2lkUHJvcGVydHknIGlucHV0IGlzIHJlcXVpcmVkIHdoZW4gYGVuYWJsZVNob3dNb3JlYCBhbmQgJ3NlYXJjaEFzeW5jJyBhcmUgdXNlZCB0b2dldGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdGlvbk1vZGFsU3ZjLm9wZW4oe1xuICAgICAgZGVzY3JpcHRvclByb3BlcnR5OiB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGlkUHJvcGVydHk6IHRoaXMuaWRQcm9wZXJ0eSEsXG4gICAgICBzZWFyY2hBc3luYzogKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoQXN5bmNBcmdzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgPSB7XG4gICAgICAgICAgZGlzcGxheVR5cGU6ICdtb2RhbCcsXG4gICAgICAgICAgb2Zmc2V0OiBhcmdzLm9mZnNldCxcbiAgICAgICAgICBzZWFyY2hUZXh0OiBhcmdzLnNlYXJjaFRleHQsXG4gICAgICAgICAgY29udGludWF0aW9uRGF0YTogYXJncy5jb250aW51YXRpb25EYXRhLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2VhcmNoQXN5bmMuZW1pdChzZWFyY2hBc3luY0FyZ3MpO1xuXG4gICAgICAgIHJldHVybiBzZWFyY2hBc3luY0FyZ3MucmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHNlbGVjdE1vZGU6IHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIGFkZENsaWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uQ2xpY2tlZCgpO1xuICAgICAgfSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpdGVtVGVtcGxhdGU6IG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSxcbiAgICAgIHNlbGVjdGlvbkRlc2NyaXB0b3I6IG1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IsXG4gICAgICBzaG93QWRkQnV0dG9uOiB0aGlzLnNob3dBZGRCdXR0b24sXG4gICAgICB0aXRsZTogbW9kYWxDb25maWcudGl0bGUsXG4gICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLndyYXBwZXJDbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gICNjcmVhdGVOYXRpdmVQaWNrZXJJbnN0YW5jZShpbml0aWFsU2VhcmNoOiBzdHJpbmcpOiBTa3lNb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuICAgIGNvbnN0IG1vZGFsQ29uZmlnID0gdGhpcy5zaG93TW9yZUNvbmZpZz8ubmF0aXZlUGlja2VyQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUpIHtcbiAgICAgIG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0VGVtcGxhdGU7XG4gICAgfVxuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICBtb2RhbENvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yID1cbiAgICAgICAgdGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJyA/ICdpdGVtJyA6ICdpdGVtcyc7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFByb3ZpZGVyVmFsdWUgPSBuZXcgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0KFxuICAgICAgdGhpcy5kZXNjcmlwdG9yUHJvcGVydHksXG4gICAgICBpbml0aWFsU2VhcmNoLFxuICAgICAgaW5pdGlhbFZhbHVlLFxuICAgICAgdGhpcy5kYXRhLFxuICAgICAgdGhpcy5zZWFyY2hPckRlZmF1bHQsXG4gICAgICB0aGlzLnNlbGVjdE1vZGUsXG4gICAgICB0aGlzLnNob3dBZGRCdXR0b24sXG4gICAgICBtb2RhbENvbmZpZyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuI21vZGFsU2VydmljZS5vcGVuKFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0LFxuICAgICAgICAgIHVzZVZhbHVlOiBjb250ZXh0UHJvdmlkZXJWYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlLFxuICAgICAgICAgIHVzZVZhbHVlOiB0aGlzLiNhZGFwdGVyLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI3Byb2Nlc3NQaWNrZXJSZXN1bHQoc2VsZWN0ZWRJdGVtczogYW55W10gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zIHx8IFtdO1xuXG4gICAgdGhpcy4jc2V0VmFsdWUoc2VsZWN0ZWRJdGVtcywgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQXN5bmMoYXJnczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgI2FkZFRvU2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcblxuICAgICAgY29uc3QgaWRQcm9wZXJ0eSA9IHRoaXMuaWRQcm9wZXJ0eSB8fCAnJztcblxuICAgICAgLy8gSWYgaXRlbXMgaGF2ZSBhIHVuaXF1ZSBpZGVudGlmaWVyLCBkb24ndCBhbGxvdyB0aGUgc2FtZSBpdGVtIHRvIGJlIGFkZGVkIHR3aWNlLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5pZFByb3BlcnR5IHx8XG4gICAgICAgICF2YWx1ZS5zb21lKFxuICAgICAgICAgIChleGlzdGluZ0l0ZW0pID0+IGV4aXN0aW5nSXRlbVtpZFByb3BlcnR5XSA9PT0gaXRlbVtpZFByb3BlcnR5XSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNzZXRWYWx1ZShzZWxlY3RlZEl0ZW1zLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgfVxuXG4gICNhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNpZGxlID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLiNmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTtcbiAgfVxuXG4gICNyZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNpZGxlLm5leHQoKTtcbiAgICB0aGlzLiNpZGxlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjZm9jdXNJbnB1dE9uSG9zdENsaWNrKCk6IHZvaWQge1xuICAgIGxldCBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGRvY3VtZW50T2JqID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcblxuICAgIC8vIEhhbmRsZXMgZm9jdXNpbmcgdGhlIGlucHV0IHdoZW4gdGhlIGhvc3QgaXMgY2xpY2tlZC5cbiAgICAvLyBUaGUgaW5wdXQgc2hvdWxkIE5PVCBiZSBmb2N1c2VkIGlmIG90aGVyIGVsZW1lbnRzICh0b2tlbnMsIGV0Yy4pXG4gICAgLy8gYXJlIGN1cnJlbnRseSBmb2N1c2VkIG9yIGJlaW5nIHRhYmJlZCB0aHJvdWdoLlxuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudE9iaiwgJ2NsaWNrJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgICAgID8gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSBob3N0RWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudE9iaiwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAoaG9zdEVsZW1lbnQpIHtcbiAgICAgIG9ic2VydmFibGVGcm9tRXZlbnQoaG9zdEVsZW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudE9iai5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICAgICAgICBpZiAoIWNsYXNzTGlzdCB8fCAhY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktdG9rZW4nKSkge1xuICAgICAgICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2ZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9va3VwV3JhcHBlclJlZikge1xuICAgICAgdGhpcy4jYWRhcHRlci5mb2N1c0lucHV0KHRoaXMubG9va3VwV3JhcHBlclJlZik7XG4gICAgfVxuICB9XG5cbiAgI29uQWRkQnV0dG9uQ29tcGxldGUoYXJnczogU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCkge1xuICAgICAgLy8gTm90aWZ5IHRoZSBzZWxlY3Rpb24gbW9kYWwgb2YgdGhlIG5ldyBpdGVtLiBUaGUgc2VsZWN0aW9uXG4gICAgICAvLyBtb2RhbCB3aWxsIGRlY2lkZSB3aGV0aGVyIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWRcbiAgICAgIC8vIHRvIHRoZSB2YWx1ZSB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIG9yIGNhbmNlbHMgdGhlXG4gICAgICAvLyBzZWxlY3Rpb24gbW9kYWwuXG4gICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwuYWRkSXRlbShhcmdzLml0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYWRkSXRlbVRvVmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLiNoYXNTZWFyY2hBc3luYygpKSB7XG4gICAgICAgIGFkZEl0ZW1Ub1ZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhcmdzLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLmRhdGEgPSBhcmdzLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kYXRhLmluZGV4T2YoYXJncy5pdGVtKSA+PSAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuI29wZW5OYXRpdmVQaWNrZXIpIHtcbiAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgcGlja2VyIG9mIHRoZSBuZXcgaXRlbS4gVGhlIHBpY2tlciB3aWxsXG4gICAgICAgICAgICAvLyBkZWNpZGUgd2hldGhlciB0aGUgbmV3IGl0ZW0gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZVxuICAgICAgICAgICAgLy8gdmFsdWUgd2hlbiB0aGUgdXNlciBjb25maXJtcyBvciBjYW5jZWxzIHRoZSBwaWNrZXIuXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXJcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50SW5zdGFuY2UgYXMgU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudFxuICAgICAgICAgICAgKS5vbkl0ZW1TZWxlY3QodHJ1ZSwgeyB2YWx1ZTogYXJncy5pdGVtLCBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFkZEl0ZW1Ub1ZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFkZEl0ZW1Ub1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ211bHRpcGxlJ1xuICAgICAgICAgICAgPyBvbGRWYWx1ZS5jb25jYXQoYXJncy5pdGVtKVxuICAgICAgICAgICAgOiBbYXJncy5pdGVtXTtcblxuICAgICAgICB0aGlzLiNzZXRWYWx1ZShuZXdWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3BhcnNlVG9rZW5zKGRhdGE6IGFueVtdKTogU2t5VG9rZW5bXSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBpdGVtLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gICNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZSh0eXBlOiBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICNzZW5kVG9rZW5zTWVzc2FnZSh0eXBlOiBTa3lUb2tlbnNNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICN1cGRhdGVGb3JTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB2YWx1ZSAmJiB2YWx1ZVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2hhc1NlYXJjaEFzeW5jKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaEFzeW5jLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3BpY2tlck1vZGFsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciB8fCB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwpO1xuICB9XG59XG4iLCJAaWYgKCFpbnB1dEJveEhvc3RTdmMpIHtcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxufVxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICAjbG9va3VwV3JhcHBlclxuICAgIGNsYXNzPVwic2t5LWxvb2t1cFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1sb29rdXAtZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkLFxuICAgICAgJ3NreS1sb29rdXAtZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktbG9va3VwLXNpbmdsZSc6IHNlbGVjdE1vZGUgPT09ICdzaW5nbGUnXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWF1dG9jb21wbGV0ZVxuICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IGlucHV0Qm94SG9zdFN2Yz8ubGFiZWxJZFwiXG4gICAgICBbYXR0ci5kYXRhLXNreS1sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1pZF09XCJzaG93TW9yZVBpY2tlcklkXCJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgW2RlYm91bmNlVGltZV09XCJkZWJvdW5jZVRpbWVcIlxuICAgICAgW2Rlc2NyaXB0b3JQcm9wZXJ0eV09XCJkZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgICAgW2VuYWJsZVNob3dNb3JlXT1cImVuYWJsZVNob3dNb3JlXCJcbiAgICAgIFttZXNzYWdlU3RyZWFtXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xsZXJcIlxuICAgICAgW3Byb3BlcnRpZXNUb1NlYXJjaF09XCJwcm9wZXJ0aWVzVG9TZWFyY2hcIlxuICAgICAgW3NlYXJjaF09XCJzZWFyY2hPckRlZmF1bHRcIlxuICAgICAgW3NlYXJjaEFzeW5jRGlzYWJsZWRdPVwic2VhcmNoQXN5bmMub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbc2VhcmNoRmlsdGVyc109XCJzZWFyY2hGaWx0ZXJzXCJcbiAgICAgIFtzZWFyY2hSZXN1bHRzTGltaXRdPVwic2VhcmNoUmVzdWx0c0xpbWl0XCJcbiAgICAgIFtzZWFyY2hSZXN1bHRUZW1wbGF0ZV09XCJzZWFyY2hSZXN1bHRUZW1wbGF0ZVwiXG4gICAgICBbc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXT1cInNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1wiXG4gICAgICBbc2hvd0FkZEJ1dHRvbl09XCJzaG93QWRkQnV0dG9uXCJcbiAgICAgIFt3cmFwcGVyQ2xhc3NdPVwid3JhcHBlckNsYXNzXCJcbiAgICAgIChhZGRDbGljayk9XCJhZGRCdXR0b25DbGlja2VkKClcIlxuICAgICAgKHNlYXJjaEFzeW5jKT1cIm9uU2VhcmNoQXN5bmMoJGV2ZW50KVwiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHNob3dNb3JlQ2xpY2spPVwib25TaG93TW9yZUNsaWNrKCRldmVudClcIlxuICAgICAgKG9wZW5DaGFuZ2UpPVwib25BdXRvY29tcGxldGVPcGVuQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktbG9va3VwLXNlYXJjaC1mbGV4LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zZWFyY2hcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktZmllbGQtc3RhdHVzLWFjdGl2ZSc6IGlzSW5wdXRGb2N1c2VkICYmICFkaXNhYmxlZFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmIChzZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICA8c2t5LXRva2Vuc1xuICAgICAgICAgICAgICBjbGFzcz1cInNreS1sb29rdXAtdG9rZW5zXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImRlc2NyaXB0b3JQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJ0b2tlbnNDb250cm9sbGVyXCJcbiAgICAgICAgICAgICAgW3RyYWNrV2l0aF09XCJpZFByb3BlcnR5XCJcbiAgICAgICAgICAgICAgW3Rva2Vuc109XCJ0b2tlbnNcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwib25Ub2tlbnNLZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHRva2Vuc0NoYW5nZSk9XCJvblRva2Vuc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHRva2Vuc1JlbmRlcmVkKT1cIm9uVG9rZW5zUmVuZGVyZWQoKVwiXG4gICAgICAgICAgICAgICh0b2tlblNlbGVjdGVkKT1cImVuYWJsZVNob3dNb3JlID8gb3BlblBpY2tlcignJykgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAoZm9jdXNJbmRleE92ZXJSYW5nZSk9XCJvblRva2Vuc0ZvY3VzSW5kZXhPdmVyUmFuZ2UoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbCBza3ktbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY29udHJvbElkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJpbnB1dEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImlucHV0S2V5dXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICBAaWYgKCFpbnB1dEJveEhvc3RTdmMgJiYgIWVuYWJsZVNob3dNb3JlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEljb25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2t5LXRva2Vucz5cbiAgICAgICAgICB9IEBlbHNlIGlmIChzZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1sb29rdXAtc2luZ2xlLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sIHNreS1sb29rdXAtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICB3cmFwPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25BdXRvY29tcGxldGVCbHVyKClcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgQGlmICghaW5wdXRCb3hIb3N0U3ZjICYmICFlbmFibGVTaG93TW9yZSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJY29uVGVtcGxhdGVSZWZcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKCFpbnB1dEJveEhvc3RTdmMgJiYgZW5hYmxlU2hvd01vcmUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvc2t5LWF1dG9jb21wbGV0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAnc2t5dXhfbG9va3VwX3NlYXJjaF9idXR0b25fc2hvd19tb3JlJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJvblNlYXJjaEJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cInNlYXJjaFwiIGljb25TaXplPVwibFwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1pY29uIHNreS1pbnB1dC1ib3gtaWNvbi1pbnNldFwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWxvb2t1cC1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuICA+XG4gICAgPHNreS1pY29uIGljb25OYW1lPVwic2VhcmNoXCIgaWNvblNpemU9XCJsXCIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTokensModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyLookupComponent } from './lookup.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyLookupModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupModule, declarations: [SkyLookupComponent], imports: [CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule], exports: [SkyLookupComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupModule, imports: [CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLookupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyLookupComponent],\n imports: [\n CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule,\n ],\n exports: [SkyLookupComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBY3hELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFYWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxlQUFlLGFBRVAsa0JBQWtCOytHQUVqQixlQUFlLFlBVHhCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLHdCQUF3QjtZQUN4QixjQUFjO1lBQ2QsZUFBZTs7MkZBSU4sZUFBZTtrQkFaM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUb2tlbnNNb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lUb2tlbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBNb2R1bGUge31cbiJdfQ==","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport var SkyLookupSelectMode;\n(function (SkyLookupSelectMode) {\n /**\n * Restricts users to a single selection.\n */\n SkyLookupSelectMode[\"single\"] = \"single\";\n /**\n * Allows users to select multiple items.\n */\n SkyLookupSelectMode[\"multiple\"] = \"multiple\";\n})(SkyLookupSelectMode || (SkyLookupSelectMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlbGVjdC1tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCw0Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVU5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZWAgaW5zdGVhZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZW51bSBTa3lMb29rdXBTZWxlY3RNb2RlIHtcbiAgLyoqXG4gICAqIFJlc3RyaWN0cyB1c2VycyB0byBhIHNpbmdsZSBzZWxlY3Rpb24uXG4gICAqL1xuICBzaW5nbGUgPSAnc2luZ2xlJyxcblxuICAvKipcbiAgICogQWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBtdWx0aXBsZSBpdGVtcy5cbiAgICovXG4gIG11bHRpcGxlID0gJ211bHRpcGxlJyxcbn1cbiJdfQ==","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1jdXN0b20tcGlja2VyLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvdHlwZXMvbG9va3VwLXNob3ctbW9yZS1jdXN0b20tcGlja2VyLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9DQUFvQztDQWFoRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBsYXVuY2ggYSBjdXN0b20gcGlja2VyIHdoZW4gdXNlcnMgc2VsZWN0XG4gKiB0aGUgYnV0dG9uIHRvIHZpZXcgYWxsIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBTaG93TW9yZUN1c3RvbVBpY2tlckNvbnRleHQge1xuICAvKipcbiAgICogVGhlIG9wdGlvbnMgdGhhdCB1c2VycyBjYW4gc2VsZWN0IGluIHRoZSBjdXN0b20gcGlja2VyLlxuICAgKi9cbiAgcHVibGljIGl0ZW1zITogYW55W107XG4gIC8qKlxuICAgKiBTZWFyY2ggdGV4dCB0byBmaWx0ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXN0b20gcGlja2VyLlxuICAgKi9cbiAgcHVibGljIGluaXRpYWxTZWFyY2ghOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzZWxlY3Rpb25zIGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbFZhbHVlITogYW55O1xufVxuIl19","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkySelectionModalModule` is no longer needed and can be removed from your application.\n * @internal\n */\nexport class SkySelectionModalModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkySelectionModalModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCOytHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFFBQVE7bUJBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIGBTa3lTZWxlY3Rpb25Nb2RhbE1vZHVsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIGFwcGxpY2F0aW9uLlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbE1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtbG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvc2t5dXgtbG9va3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["observableFromEvent","uniqueId","i2.SkyAutocompleteAdapterService","i3","i4","i6","i7","i9.SkyAutocompleteSearchAsyncDisabledPipe","i1","i2","i4.SkyAutocompleteComponent","i5.SkyAutocompleteInputDirective","i1.SkySearchAdapterService","i5","i7.SkySearchComponent","i8","i9","i10","take","i5.SkyAutocompleteComponent","i6.SkyAutocompleteInputDirective"],"mappings":"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"}