{"version":3,"file":"asoftwareworld-form-builder-pro-form-control-select-search.mjs","sources":["../../src/components/form-control/select-search/select-search-options.ts","../../src/components/form-control/select-search/select-search.ts","../../src/components/form-control/select-search/select-search.html","../../src/components/form-control/select-search/select-search.module.ts","../../src/components/form-control/select-search/public_api.ts","../../src/components/form-control/select-search/asoftwareworld-form-builder-pro-form-control-select-search.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AswSelectSearch } from './select-search';\n\nexport const configurableDefaultOptions = [\n    'ariaLabel',\n    'clearSearchInput',\n    'closeIcon',\n    'closeSvgIcon',\n    'disableInitialFocus',\n    'disableScrollToActiveOnOptionsChanged',\n    'enableClearOnEscapePressed',\n    'hideClearSearchButton',\n    'noEntriesFoundLabel',\n    'placeholderLabel',\n    'preventHomeEndKeyPropagation',\n    'searching'\n] as const;\n\nexport type ConfigurableDefaultOptions = (typeof configurableDefaultOptions)[number];\n/**\n * InjectionToken that can be used to specify global options. e.g.\n *\n * ```typescript\n * providers: [\n *   {\n *     provide: ASW_SELECTSEARCH_DEFAULT_OPTIONS,\n *     useValue: <AswSelectSearchOptions>{\n *       closeIcon: 'delete',\n *       noEntriesFoundLabel: 'No options found'\n *     }\n *   }\n * ]\n * ```\n *\n * See the corresponding inputs of `AswSelectSearch` for documentation.\n */\nexport const ASW_SELECTSEARCH_DEFAULT_OPTIONS = new InjectionToken<AswSelectSearchOptions>('asw-selectsearch-default-options');\n\n/** Global configurable options for MatSelectSearch. */\nexport type AswSelectSearchOptions = Readonly<Partial<Pick<AswSelectSearch, ConfigurableDefaultOptions>>>;\n","import { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, NINE, SPACE, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, Output, QueryList, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { AswSelectNoEntriesFoundDirective, AswSelectSearchClearDirective } from '@asoftwareworld/form-builder-pro/common';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\nimport { delay, filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { configurableDefaultOptions, ASW_SELECTSEARCH_DEFAULT_OPTIONS, AswSelectSearchOptions } from './select-search-options';\n@Component({\n    selector: 'asw-select-search',\n    templateUrl: './select-search.html',\n    styleUrls: ['./select-search.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => AswSelectSearch),\n            multi: true\n        }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswSelectSearch implements OnInit, OnDestroy, ControlValueAccessor {\n    /** Label of the search placeholder */\n    @Input() placeholderLabel = 'Search';\n\n    /** Type of the search input field */\n    @Input() type = 'text';\n\n    /** Font-based icon used for displaying Close-Icon */\n    @Input() closeIcon = 'close';\n\n    /** Svg-based icon used for displaying Close-Icon. If set, closeIcon is overridden */\n    @Input() closeSvgIcon = '';\n\n    /** Label to be shown when no entries are found. Set to null if no message should be shown. */\n    @Input() noEntriesFoundLabel = 'No results found';\n\n    /**\n     * Whether or not the search field should be cleared after the dropdown menu is closed.\n     */\n    @Input() clearSearchInput = true;\n\n    /** Whether to show the search-in-progress indicator */\n    @Input() searching = false;\n\n    /** Disables initial focusing of the input field */\n    @Input() disableInitialFocus = false;\n\n    /** Enable clear input on escape pressed */\n    @Input() enableClearOnEscapePressed = false;\n\n    /**\n     * Prevents home / end key being propagated to mat-select,\n     * allowing to move the cursor within the search input instead of navigating the options\n     */\n    @Input() preventHomeEndKeyPropagation = false;\n\n    /** Disables scrolling to active options when option list changes. Useful for server-side search */\n    @Input() disableScrollToActiveOnOptionsChanged = false;\n\n    /** Adds 508 screen reader support for search box */\n    @Input() ariaLabel = 'dropdown search';\n\n    /** Whether to show Select All Checkbox (for mat-select[multi=true]) */\n    @Input() showToggleAllCheckbox = false;\n\n    /** select all checkbox checked state */\n    @Input() toggleAllCheckboxChecked = false;\n\n    /** select all checkbox indeterminate state */\n    @Input() toggleAllCheckboxIndeterminate = false;\n\n    /** Display a message in a tooltip on the toggle-all checkbox */\n    @Input() toggleAllCheckboxTooltipMessage = '';\n\n    /** Define the position of the tooltip on the toggle-all checkbox. */\n    @Input() toggleAllCheckboxTooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n    /** Show/Hide the search clear button of the search input */\n    @Input() hideClearSearchButton = false;\n\n    /**\n     * Always restore selected options on selectionChange for mode multi (e.g. for lazy loading/infinity scrolling).\n     * Defaults to false, so selected options are only restored while filtering is active.\n     */\n    @Input() alwaysRestoreSelectedOptionsMulti = false;\n\n    /** Output emitter to send to parent component with the toggle all boolean */\n    @Output() toggleAll = new EventEmitter<boolean>();\n\n    /** Reference to the search input field */\n    @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput?: ElementRef;\n\n    /** Reference to the search input field */\n    @ViewChild('innerSelectSearch', { read: ElementRef, static: true }) innerSelectSearch?: ElementRef;\n\n    /** Reference to custom search input clear icon */\n    @ContentChild(AswSelectSearchClearDirective) clearIcon?: AswSelectSearchClearDirective;\n\n    /** Reference to custom no entries found element */\n    @ContentChild(AswSelectNoEntriesFoundDirective) noEntriesFound?: AswSelectNoEntriesFoundDirective;\n\n    /** Current search value */\n    get value(): string | null {\n        return this._formControl.value;\n    }\n    private _lastExternalInputValue?: string;\n\n    onTouched: Function = (_: any) => {};\n\n    /** Reference to the MatSelect options */\n    public set _options(_options: QueryList<MatOption>) {\n        this._options$.next(_options);\n    }\n    public get _options(): QueryList<MatOption> {\n        return this._options$.getValue();\n    }\n    public _options$: BehaviorSubject<QueryList<MatOption>> = new BehaviorSubject<QueryList<MatOption>>(null as any);\n\n    private optionsList$: Observable<MatOption[] | null> = this._options$.pipe(\n        switchMap((_options) =>\n            _options\n                ? _options.changes.pipe(\n                      map((options) => options.toArray()),\n                      startWith<MatOption[]>(_options.toArray())\n                  )\n                : of(null)\n        )\n    );\n\n    private optionsLength$: Observable<number> = this.optionsList$.pipe(map((options) => (options ? options.length : 0)));\n\n    /** Previously selected values when using <mat-select [multiple]=\"true\">*/\n    private previousSelectedValues: any[] = [];\n\n    public _formControl: FormControl<string | null> = new FormControl<string>('');\n\n    /** whether to show the no entries found message */\n    public _showNoEntriesFound$: Observable<boolean | '' | null> = combineLatest([this._formControl.valueChanges, this.optionsLength$]).pipe(\n        map(([value, optionsLength]) => this.noEntriesFoundLabel && value && optionsLength === this.getOptionsLengthOffset())\n    );\n\n    /** Subject that emits when the component has been destroyed. */\n    private _onDestroy = new Subject<void>();\n\n    /** Reference to active descendant for ARIA Support. */\n    private activeDescendant?: HTMLElement;\n\n    constructor(\n        @Inject(MatSelect) public matSelect: MatSelect,\n        public changeDetectorRef: ChangeDetectorRef,\n        private _viewportRuler: ViewportRuler,\n        @Optional() @Inject(MatOption) public matOption: MatOption,\n        @Optional() @Inject(MatFormField) public matFormField: MatFormField,\n        @Optional() @Inject(ASW_SELECTSEARCH_DEFAULT_OPTIONS) defaultOptions: AswSelectSearchOptions\n    ) {\n        this.applyDefaultOptions(defaultOptions);\n    }\n\n    private applyDefaultOptions(defaultOptions: AswSelectSearchOptions) {\n        if (!defaultOptions) {\n            return;\n        }\n        for (const key of configurableDefaultOptions) {\n            if (defaultOptions.hasOwnProperty(key)) {\n                (this[key] as any) = defaultOptions[key];\n            }\n        }\n    }\n\n    ngOnInit() {\n        // set custom mat-option class if the component was placed inside a mat-option\n        if (this.matOption) {\n            this.matOption.disabled = true;\n            this.matOption._getHostElement().classList.add('contains-mat-select-search');\n            this.matOption._getHostElement().setAttribute('aria-hidden', 'true');\n        } else {\n            console.error('<asw-select-search> must be placed inside a <mat-option> element');\n        }\n\n        // when the select dropdown panel is opened or closed\n        this.matSelect.openedChange.pipe(delay(1), takeUntil(this._onDestroy)).subscribe((opened) => {\n            if (opened) {\n                this.updateInputWidth();\n                // focus the search field when opening\n                if (!this.disableInitialFocus) {\n                    this._focus();\n                }\n            } else {\n                // clear it when closing\n                if (this.clearSearchInput) {\n                    this._reset();\n                }\n            }\n        });\n\n        // set the first item active after the options changed\n        this.matSelect.openedChange\n            .pipe(\n                take(1),\n                switchMap((_) => {\n                    this._options = this.matSelect.options;\n\n                    // Closure variable for tracking the most recent first option.\n                    // In order to avoid avoid causing the list to\n                    // scroll to the top when options are added to the bottom of\n                    // the list (eg: infinite scroll), we compare only\n                    // the changes to the first options to determine if we\n                    // should set the first item as active.\n                    // This prevents unnecessary scrolling to the top of the list\n                    // when options are appended, but allows the first item\n                    // in the list to be set as active by default when there\n                    // is no active selection\n                    let previousFirstOption = this._options.toArray()[this.getOptionsLengthOffset()];\n\n                    return this._options.changes.pipe(\n                        tap(() => {\n                            // avoid \"expression has been changed\" error\n                            setTimeout(() => {\n                                // Convert the QueryList to an array\n                                const options = this._options.toArray();\n\n                                // The true first item is offset by 1\n                                const currentFirstOption = options[this.getOptionsLengthOffset()];\n\n                                const keyManager = this.matSelect._keyManager;\n                                if (keyManager && this.matSelect.panelOpen && currentFirstOption) {\n                                    // set first item active and input width\n\n                                    // Check to see if the first option in these changes is different from the previous.\n                                    const firstOptionIsChanged = !previousFirstOption || !this.matSelect.compareWith(previousFirstOption.value, currentFirstOption.value);\n\n                                    // CASE: The first option is different now.\n                                    // Indiciates we should set it as active and scroll to the top.\n                                    if (firstOptionIsChanged || !keyManager.activeItem || !options.find((option) => this.matSelect.compareWith(option.value, keyManager.activeItem?.value))) {\n                                        keyManager.setActiveItem(this.getOptionsLengthOffset());\n                                    }\n\n                                    // wait for panel width changes\n                                    setTimeout(() => {\n                                        this.updateInputWidth();\n                                    });\n                                }\n\n                                // Update our reference\n                                previousFirstOption = currentFirstOption;\n                            });\n                        })\n                    );\n                })\n            )\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe();\n\n        // add or remove css class depending on whether to show the no entries found message\n        // note: this is hacky\n        this._showNoEntriesFound$.pipe(takeUntil(this._onDestroy)).subscribe((showNoEntriesFound) => {\n            // set no entries found class on mat option\n            if (this.matOption) {\n                if (showNoEntriesFound) {\n                    this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n                } else {\n                    this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n                }\n            }\n        });\n\n        // resize the input width when the viewport is resized, i.e. the trigger width could potentially be resized\n        this._viewportRuler\n            .change()\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(() => {\n                if (this.matSelect.panelOpen) {\n                    this.updateInputWidth();\n                }\n            });\n\n        this.initMultipleHandling();\n\n        this.optionsList$.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n            // update view when available options change\n            this.changeDetectorRef.markForCheck();\n        });\n    }\n\n    _emitSelectAllBooleanToParent(state: boolean) {\n        this.toggleAll.emit(state);\n    }\n\n    ngOnDestroy() {\n        this._onDestroy.next();\n        this._onDestroy.complete();\n    }\n\n    _isToggleAllCheckboxVisible(): boolean {\n        return this.matSelect.multiple && this.showToggleAllCheckbox;\n    }\n\n    /**\n     * Handles the key down event with MatSelect.\n     * Allows e.g. selecting with enter key, navigation with arrow keys, etc.\n     * @param event\n     */\n    _handleKeydown(event: KeyboardEvent) {\n        // Prevent propagation for all alphanumeric characters in order to avoid selection issues\n        if (\n            (event.key && event.key.length === 1) ||\n            (event.keyCode >= A && event.keyCode <= Z) ||\n            (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n            event.keyCode === SPACE ||\n            (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))\n        ) {\n            event.stopPropagation();\n        }\n\n        if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n            // Regain focus after multiselect, so we can further type\n            setTimeout(() => this._focus());\n        }\n\n        // Special case if click Escape, if input is empty, close the dropdown, if not, empty out the search field\n        if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n            this._reset(true);\n            event.stopPropagation();\n        }\n    }\n\n    /**\n     * Handles the key up event with MatSelect.\n     * Allows e.g. the announcing of the currently activeDescendant by screen readers.\n     */\n    _handleKeyup(event: KeyboardEvent) {\n        if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n            const ariaActiveDescendantId = this.matSelect._getAriaActiveDescendant();\n            const index = this._options.toArray().findIndex((item) => item.id === ariaActiveDescendantId);\n            if (index !== -1) {\n                this.unselectActiveDescendant();\n                this.activeDescendant = this._options.toArray()[index]._getHostElement();\n                this.activeDescendant.setAttribute('aria-selected', 'true');\n                this.searchSelectInput?.nativeElement.setAttribute('aria-activedescendant', ariaActiveDescendantId);\n            }\n        }\n    }\n\n    writeValue(value: string) {\n        this._lastExternalInputValue = value;\n        this._formControl.setValue(value);\n        this.changeDetectorRef.markForCheck();\n    }\n\n    onBlur() {\n        this.unselectActiveDescendant();\n        this.onTouched();\n    }\n\n    registerOnChange(fn: (value: string | null) => void) {\n        this._formControl.valueChanges\n            .pipe(\n                filter((value) => value !== this._lastExternalInputValue),\n                tap(() => (this._lastExternalInputValue = undefined)),\n                takeUntil(this._onDestroy)\n            )\n            .subscribe(fn);\n    }\n\n    registerOnTouched(fn: Function) {\n        this.onTouched = fn;\n    }\n\n    /**\n     * Focuses the search input field\n     */\n    public _focus() {\n        if (!this.searchSelectInput || !this.matSelect.panel) {\n            return;\n        }\n        // save and restore scrollTop of panel, since it will be reset by focus()\n        // note: this is hacky\n        const panel = this.matSelect.panel.nativeElement;\n        const scrollTop = panel.scrollTop;\n\n        // focus\n        this.searchSelectInput.nativeElement.focus();\n\n        panel.scrollTop = scrollTop;\n    }\n\n    /**\n     * Resets the current search value\n     * @param focus whether to focus after resetting\n     */\n    public _reset(focus?: boolean) {\n        this._formControl.setValue('');\n        if (focus) {\n            this._focus();\n        }\n    }\n\n    /**\n     * Initializes handling <mat-select [multiple]=\"true\">\n     * Note: to improve this code, mat-select should be extended to allow disabling resetting the selection while filtering.\n     */\n    private initMultipleHandling() {\n        if (!this.matSelect.ngControl) {\n            if (this.matSelect.multiple) {\n                // note: the access to matSelect.ngControl (instead of matSelect.value / matSelect.valueChanges)\n                // is necessary to properly work in multi-selection mode.\n                console.error('the mat-select containing asw-select-search must have a ngModel or formControl directive when multiple=true');\n            }\n            return;\n        }\n        // if <mat-select [multiple]=\"true\">\n        // store previously selected values and restore them when they are deselected\n        // because the option is not available while we are currently filtering\n        this.previousSelectedValues = this.matSelect.ngControl.value;\n\n        this.matSelect.ngControl.valueChanges?.pipe(takeUntil(this._onDestroy)).subscribe((values) => {\n            let restoreSelectedValues = false;\n            if (this.matSelect.multiple) {\n                if ((this.alwaysRestoreSelectedOptionsMulti || (this._formControl.value && this._formControl.value.length)) && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n                    if (!values || !Array.isArray(values)) {\n                        values = [];\n                    }\n                    const optionValues = this.matSelect.options.map((option) => option.value);\n                    this.previousSelectedValues.forEach((previousValue) => {\n                        if (!values.some((v: any) => this.matSelect.compareWith(v, previousValue)) && !optionValues.some((v) => this.matSelect.compareWith(v, previousValue))) {\n                            // if a value that was selected before is deselected and not found in the options, it was deselected\n                            // due to the filtering, so we restore it.\n                            values.push(previousValue);\n                            restoreSelectedValues = true;\n                        }\n                    });\n                }\n            }\n            this.previousSelectedValues = values;\n\n            if (restoreSelectedValues) {\n                this.matSelect._onChange(values);\n            }\n        });\n    }\n\n    /**\n     *  Set the width of the innerSelectSearch to fit even custom scrollbars\n     *  And support all Operation Systems\n     */\n    public updateInputWidth() {\n        if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n            return;\n        }\n        let element: HTMLElement | null | undefined = this.innerSelectSearch.nativeElement;\n        let panelElement: HTMLElement | undefined; // Initialize it;\n        while ((element = element?.parentElement)) {\n            if (element.classList.contains('mat-select-panel')) {\n                panelElement = element;\n                break;\n            }\n        }\n        if (panelElement) {\n            this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n        }\n    }\n\n    /**\n     * Determine the offset to length that can be caused by the optional matOption used as a search input.\n     */\n    private getOptionsLengthOffset(): number {\n        if (this.matOption) {\n            return 1;\n        } else {\n            return 0;\n        }\n    }\n\n    private unselectActiveDescendant() {\n        this.activeDescendant?.removeAttribute('aria-selected');\n        this.searchSelectInput?.nativeElement.removeAttribute('aria-activedescendant');\n    }\n}\n","<input matInput class=\"mat-select-search-input mat-select-search-hidden\" />\r\n\r\n<!-- Note: the  mat-datepicker-content mat-tab-header are needed to inherit the material theme colors, see PR #22 -->\r\n<div #innerSelectSearch class=\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\"\r\n    [ngClass]=\"{'mat-select-search-inner-multiple': matSelect.multiple, 'mat-select-search-inner-toggle-all': _isToggleAllCheckboxVisible() }\">\r\n\r\n    <div class=\"mat-select-search-inner-row\">\r\n        <mat-checkbox *ngIf=\"_isToggleAllCheckboxVisible()\" [color]=\"matFormField.color\"\r\n            class=\"mat-select-search-toggle-all-checkbox\" [checked]=\"toggleAllCheckboxChecked\"\r\n            [indeterminate]=\"toggleAllCheckboxIndeterminate\" [matTooltip]=\"toggleAllCheckboxTooltipMessage\"\r\n            matTooltipClass=\"asw-select-search-toggle-all-tooltip\"\r\n            [matTooltipPosition]=\"toggleAllCheckboxTooltipPosition\"\r\n            (change)=\"_emitSelectAllBooleanToParent($event.checked)\"></mat-checkbox>\r\n\r\n        <input class=\"mat-select-search-input\" autocomplete=\"off\" [type]=\"type\" [formControl]=\"_formControl\"\r\n            #searchSelectInput (keydown)=\"_handleKeydown($event)\" (keyup)=\"_handleKeyup($event)\" (blur)=\"onBlur()\"\r\n            [placeholder]=\"placeholderLabel\" [attr.aria-label]=\"ariaLabel\" />\r\n        <mat-spinner *ngIf=\"searching\" class=\"mat-select-search-spinner\" diameter=\"16\"></mat-spinner>\r\n\r\n        <button *ngIf=\"!hideClearSearchButton && value && !searching\" mat-icon-button aria-label=\"Clear\"\r\n            (click)=\"_reset(true)\" class=\"mat-select-search-clear\">\r\n            <ng-content *ngIf=\"clearIcon; else defaultIcon\" select=\"[aswSelectSearchClear]\"></ng-content>\r\n            <ng-template #defaultIcon>\r\n                <mat-icon [svgIcon]=\"closeSvgIcon\">\r\n                    {{!closeSvgIcon ? closeIcon : null}}\r\n                </mat-icon>\r\n            </ng-template>\r\n        </button>\r\n\r\n        <ng-content select=\".mat-select-search-custom-header-content\"></ng-content>\r\n    </div>    \r\n\r\n    <mat-divider></mat-divider>\r\n</div>\r\n\r\n<div *ngIf=\"_showNoEntriesFound$ | async\" class=\"mat-select-search-no-entries-found\">\r\n    <ng-content *ngIf=\"noEntriesFound; else defaultNoEntriesFound\" select=\"[aswSelectNoEntriesFound]\"></ng-content>\r\n    <ng-template #defaultNoEntriesFound>{{noEntriesFoundLabel}}</ng-template>\r\n</div>","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AswDirectiveModule, AswPipeModule, MaterialModule } from '@asoftwareworld/form-builder-pro/common';\nimport { AswTranslateModule } from '@asoftwareworld/form-builder-pro/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder-pro/form-control/confirm-dialog';\nimport { AswSharedDialogModule } from '@asoftwareworld/form-builder-pro/form-control/shared';\n\nimport { AswSelectSearch } from './select-search';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, AswConfirmDialogModule, AswSharedDialogModule, AswTranslateModule, AswPipeModule, MatProgressSpinnerModule, AswDirectiveModule],\n    declarations: [AswSelectSearch],\n    exports: [AswSelectSearch]\n})\nexport class AswSelectSearchModule {}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './select-search';\nexport * from './select-search-options';\nexport * from './select-search.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}