{"version":3,"file":"autocomplete.js","sources":["../../packages/material/autocomplete/autocomplete.js","../../packages/material/autocomplete/autocomplete-trigger.js","../../packages/material/autocomplete/autocomplete-module.js","../../packages/material/autocomplete/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. 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 at https://angular.io/license\n */\nimport { Component, ContentChildren, ElementRef, Input, TemplateRef, ViewChild, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, EventEmitter, Output, } from '@angular/core';\nimport { MatOption, MatOptgroup } from '@angular/material/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/**\n * Event object that is emitted when an autocomplete option is selected\n */\nexport class MatAutocompleteSelectedEvent {\n /**\n * @param {?} source\n * @param {?} option\n */\n constructor(source, option) {\n this.source = source;\n this.option = option;\n }\n}\nfunction MatAutocompleteSelectedEvent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatAutocompleteSelectedEvent.prototype.source;\n /** @type {?} */\n MatAutocompleteSelectedEvent.prototype.option;\n}\nexport class MatAutocomplete {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _elementRef\n */\n constructor(_changeDetectorRef, _elementRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /**\n * Whether the autocomplete panel should be visible, depending on option length.\n */\n this.showPanel = false;\n this._isOpen = false;\n /**\n * Function that maps an option's control value to its display value in the trigger.\n */\n this.displayWith = null;\n /**\n * Event that is emitted whenever an option from the list is selected.\n */\n this.optionSelected = new EventEmitter();\n this._classList = {};\n /**\n * Unique ID to be used by autocomplete trigger's \"aria-owns\" property.\n */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n }\n /**\n * Whether the autocomplete panel is open.\n * @return {?}\n */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /**\n * Takes classes set on the host md-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n * @param {?} classList\n * @return {?}\n */\n set classList(classList) {\n if (classList && classList.length) {\n classList.split(' ').forEach(className => this._classList[className.trim()] = true);\n this._elementRef.nativeElement.className = '';\n }\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n // Set the initial visibiity state.\n this._setVisibility();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n * @param {?} scrollTop\n * @return {?}\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /**\n * Returns the panel's scrollTop.\n * @return {?}\n */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /**\n * Panel should hide itself when the option list is empty.\n * @return {?}\n */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._classList['mat-autocomplete-visible'] = this.showPanel;\n this._classList['mat-autocomplete-hidden'] = !this.showPanel;\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Emits the `select` event.\n * @param {?} option\n * @return {?}\n */\n _emitSelectEvent(option) {\n const /** @type {?} */ event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n}\nMatAutocomplete.decorators = [\n { type: Component, args: [{selector: 'mat-autocomplete',\n template: \"
\",\n styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n host: {\n 'class': 'mat-autocomplete'\n }\n },] },\n];\n/**\n * @nocollapse\n */\nMatAutocomplete.ctorParameters = () => [\n { type: ChangeDetectorRef, },\n { type: ElementRef, },\n];\nMatAutocomplete.propDecorators = {\n 'template': [{ type: ViewChild, args: [TemplateRef,] },],\n 'panel': [{ type: ViewChild, args: ['panel',] },],\n 'options': [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n 'optionGroups': [{ type: ContentChildren, args: [MatOptgroup,] },],\n 'displayWith': [{ type: Input },],\n 'optionSelected': [{ type: Output },],\n 'classList': [{ type: Input, args: ['class',] },],\n};\nfunction MatAutocomplete_tsickle_Closure_declarations() {\n /** @type {?} */\n MatAutocomplete.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatAutocomplete.ctorParameters;\n /** @type {?} */\n MatAutocomplete.propDecorators;\n /**\n * Manages active item in option list based on key events.\n * @type {?}\n */\n MatAutocomplete.prototype._keyManager;\n /**\n * Whether the autocomplete panel should be visible, depending on option length.\n * @type {?}\n */\n MatAutocomplete.prototype.showPanel;\n /** @type {?} */\n MatAutocomplete.prototype._isOpen;\n /**\n * \\@docs-private\n * @type {?}\n */\n MatAutocomplete.prototype.template;\n /**\n * Element for the panel containing the autocomplete options.\n * @type {?}\n */\n MatAutocomplete.prototype.panel;\n /**\n * \\@docs-private\n * @type {?}\n */\n MatAutocomplete.prototype.options;\n /**\n * \\@docs-private\n * @type {?}\n */\n MatAutocomplete.prototype.optionGroups;\n /**\n * Function that maps an option's control value to its display value in the trigger.\n * @type {?}\n */\n MatAutocomplete.prototype.displayWith;\n /**\n * Event that is emitted whenever an option from the list is selected.\n * @type {?}\n */\n MatAutocomplete.prototype.optionSelected;\n /** @type {?} */\n MatAutocomplete.prototype._classList;\n /**\n * Unique ID to be used by autocomplete trigger's \"aria-owns\" property.\n * @type {?}\n */\n MatAutocomplete.prototype.id;\n /** @type {?} */\n MatAutocomplete.prototype._changeDetectorRef;\n /** @type {?} */\n MatAutocomplete.prototype._elementRef;\n}\n//# sourceMappingURL=autocomplete.js.map","/**\n * @license\n * Copyright Google Inc. 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 at https://angular.io/license\n */\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, UP_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { filter, first, RxChain, switchMap, doOperator, delay } from '@angular/cdk/rxjs';\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, Inject, InjectionToken, Input, NgZone, Optional, ViewContainerRef, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { merge } from 'rxjs/observable/merge';\nimport { of as observableOf } from 'rxjs/observable/of';\n/**\n * The height of each autocomplete option.\n */\nexport const AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n */\nexport const AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/**\n * Injection token that determines the scroll handling while the autocomplete panel is open.\n */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nexport function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/**\n * \\@docs-private\n */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * \\@docs-private\n */\nexport const MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @return {?}\n */\nexport function getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n 'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\nexport class MatAutocompleteTrigger {\n /**\n * @param {?} _element\n * @param {?} _overlay\n * @param {?} _viewContainerRef\n * @param {?} _zone\n * @param {?} _changeDetectorRef\n * @param {?} _scrollStrategy\n * @param {?} _dir\n * @param {?} _formField\n * @param {?} _document\n */\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, _scrollStrategy, _dir, _formField, _document) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._panelOpen = false;\n /**\n * Whether or not the placeholder state is being overridden.\n */\n this._manuallyFloatingPlaceholder = false;\n /**\n * Stream of escape keyboard events.\n */\n this._escapeEventStream = new Subject();\n /**\n * View -> model callback called when value changes\n */\n this._onChange = () => { };\n /**\n * View -> model callback called when autocomplete has been touched\n */\n this._onTouched = () => { };\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._destroyPanel();\n this._escapeEventStream.complete();\n }\n /**\n * @return {?}\n */\n get panelOpen() {\n return this._panelOpen && this.autocomplete.showPanel;\n }\n /**\n * Opens the autocomplete suggestion panel.\n * @return {?}\n */\n openPanel() {\n this._attachOverlay();\n this._floatPlaceholder();\n }\n /**\n * Closes the autocomplete suggestion panel.\n * @return {?}\n */\n closePanel() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._resetPlaceholder();\n if (this._panelOpen) {\n this.autocomplete._isOpen = this._panelOpen = false;\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the placeholder is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n * @return {?}\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut, this._escapeEventStream, this._outsideClickStream);\n }\n /**\n * Stream of autocomplete option selections.\n * @return {?}\n */\n get optionSelections() {\n return merge(...this.autocomplete.options.map(option => option.onSelectionChange));\n }\n /**\n * The currently active option, coerced to MatOption type.\n * @return {?}\n */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /**\n * Stream of clicks outside of the autocomplete panel.\n * @return {?}\n */\n get _outsideClickStream() {\n if (!this._document) {\n return observableOf(null);\n }\n return RxChain.from(merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'touchend'))).call(filter, (event) => {\n const /** @type {?} */ clickTarget = (event.target);\n const /** @type {?} */ formField = this._formField ?\n this._formField._elementRef.nativeElement : null;\n return this._panelOpen &&\n clickTarget !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget));\n }).result();\n }\n /**\n * Sets the autocomplete's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} value New value to be written to the model.\n * @return {?}\n */\n writeValue(value) {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n /**\n * Saves a callback function to be invoked when the autocomplete's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the value changes.\n * @return {?}\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the autocomplete is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the component has been touched.\n * @return {?}\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n _handleKeydown(event) {\n const /** @type {?} */ keyCode = event.keyCode;\n if (keyCode === ESCAPE && this.panelOpen) {\n this._resetActiveItem();\n this._escapeEventStream.next();\n event.stopPropagation();\n }\n else if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else {\n const /** @type {?} */ prevActiveItem = this.autocomplete._keyManager.activeItem;\n const /** @type {?} */ isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption();\n }\n }\n }\n /**\n * @param {?} event\n * @return {?}\n */\n _handleInput(event) {\n // We need to ensure that the input is focused, because IE will fire the `input`\n // event on focus/blur/load if the input has a placeholder. See:\n // https://connect.microsoft.com/IE/feedback/details/885747/\n if (document.activeElement === event.target) {\n this._onChange(((event.target)).value);\n this.openPanel();\n }\n }\n /**\n * @return {?}\n */\n _handleFocus() {\n if (!this._element.nativeElement.readOnly) {\n this._attachOverlay();\n this._floatPlaceholder(true);\n }\n }\n /**\n * In \"auto\" mode, the placeholder will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the placeholder until the panel can be closed.\n * @param {?=} shouldAnimate Whether the placeholder should be animated when it is floated.\n * @return {?}\n */\n _floatPlaceholder(shouldAnimate = false) {\n if (this._formField && this._formField.floatPlaceholder === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockPlaceholder();\n }\n else {\n this._formField.floatPlaceholder = 'always';\n }\n this._manuallyFloatingPlaceholder = true;\n }\n }\n /**\n * If the placeholder has been manually elevated, return it to its normal state.\n * @return {?}\n */\n _resetPlaceholder() {\n if (this._manuallyFloatingPlaceholder) {\n this._formField.floatPlaceholder = 'auto';\n this._manuallyFloatingPlaceholder = false;\n }\n }\n /**\n * Given that we are not actually focusing active options, we must manually adjust scroll\n * to reveal options below the fold. First, we find the offset of the option from the top\n * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n * the panel height + the option height, so the active option will be just visible at the\n * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n * will become the offset. If that offset is visible within the panel already, the scrollTop is\n * not adjusted.\n * @return {?}\n */\n _scrollToOption() {\n const /** @type {?} */ activeOptionIndex = this.autocomplete._keyManager.activeItemIndex || 0;\n const /** @type {?} */ labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex, this.autocomplete.options, this.autocomplete.optionGroups);\n const /** @type {?} */ optionOffset = (activeOptionIndex + labelCount) * AUTOCOMPLETE_OPTION_HEIGHT;\n const /** @type {?} */ panelTop = this.autocomplete._getScrollTop();\n if (optionOffset < panelTop) {\n // Scroll up to reveal selected option scrolled above the panel top\n this.autocomplete._setScrollTop(optionOffset);\n }\n else if (optionOffset + AUTOCOMPLETE_OPTION_HEIGHT > panelTop + AUTOCOMPLETE_PANEL_HEIGHT) {\n // Scroll down to reveal selected option scrolled below the panel bottom\n const /** @type {?} */ newScrollTop = optionOffset - AUTOCOMPLETE_PANEL_HEIGHT + AUTOCOMPLETE_OPTION_HEIGHT;\n this.autocomplete._setScrollTop(Math.max(0, newScrollTop));\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n * @return {?}\n */\n _subscribeToClosingActions() {\n const /** @type {?} */ firstStable = first.call(this._zone.onStable.asObservable());\n const /** @type {?} */ optionChanges = RxChain.from(this.autocomplete.options.changes)\n .call(doOperator, () => this._positionStrategy.recalculateLastPosition())\n .call(delay, 0)\n .result();\n // When the zone is stable initially, and when the option list changes...\n return RxChain.from(merge(firstStable, optionChanges))\n .call(switchMap, () => {\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n return this.panelClosingActions;\n })\n .call(first)\n .subscribe(event => this._setValueAndClose(event));\n }\n /**\n * Destroys the autocomplete suggestion panel.\n * @return {?}\n */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n _setTriggerValue(value) {\n const /** @type {?} */ toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const /** @type {?} */ inputValue = toDisplay != null ? toDisplay : '';\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n }\n else {\n this._element.nativeElement.value = inputValue;\n }\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n * @param {?} event\n * @return {?}\n */\n _setValueAndClose(event) {\n if (event && event.source) {\n this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source.value);\n this._onChange(event.source.value);\n this._element.nativeElement.focus();\n this.autocomplete._emitSelectEvent(event.source);\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n * @param {?} skip\n * @return {?}\n */\n _clearPreviousSelectedOption(skip) {\n this.autocomplete.options.forEach(option => {\n if (option != skip && option.selected) {\n option.deselect();\n }\n });\n }\n /**\n * @return {?}\n */\n _attachOverlay() {\n if (!this.autocomplete) {\n throw getMatAutocompleteMissingPanelError();\n }\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n }\n else {\n /** Update the panel width, in case the host width has changed */\n this._overlayRef.getConfig().width = this._getHostWidth();\n this._overlayRef.updateSize();\n }\n if (this._overlayRef && !this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._panelOpen = true;\n }\n /**\n * @return {?}\n */\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getHostWidth(),\n direction: this._dir ? this._dir.value : 'ltr'\n });\n }\n /**\n * @return {?}\n */\n _getOverlayPosition() {\n this._positionStrategy = this._overlay.position().connectedTo(this._getConnectedElement(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' });\n return this._positionStrategy;\n }\n /**\n * @return {?}\n */\n _getConnectedElement() {\n return this._formField ? this._formField._connectionContainerRef : this._element;\n }\n /**\n * Returns the width of the input element, so the panel width can match it.\n * @return {?}\n */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset active item to -1 so arrow events will activate the correct options.\n * @return {?}\n */\n _resetActiveItem() {\n this.autocomplete._keyManager.setActiveItem(-1);\n }\n}\nMatAutocompleteTrigger.decorators = [\n { type: Directive, args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'aria-autocomplete': 'list',\n '[attr.aria-activedescendant]': 'activeOption?.id',\n '[attr.aria-expanded]': 'panelOpen.toString()',\n '[attr.aria-owns]': 'autocomplete?.id',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n },] },\n];\n/**\n * @nocollapse\n */\nMatAutocompleteTrigger.ctorParameters = () => [\n { type: ElementRef, },\n { type: Overlay, },\n { type: ViewContainerRef, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Host },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n];\nMatAutocompleteTrigger.propDecorators = {\n 'autocomplete': [{ type: Input, args: ['matAutocomplete',] },],\n};\nfunction MatAutocompleteTrigger_tsickle_Closure_declarations() {\n /** @type {?} */\n MatAutocompleteTrigger.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatAutocompleteTrigger.ctorParameters;\n /** @type {?} */\n MatAutocompleteTrigger.propDecorators;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._overlayRef;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._portal;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._panelOpen;\n /**\n * Strategy that is used to position the panel.\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._positionStrategy;\n /**\n * Whether or not the placeholder state is being overridden.\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._manuallyFloatingPlaceholder;\n /**\n * The subscription for closing actions (some are bound to document).\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._closingActionsSubscription;\n /**\n * Stream of escape keyboard events.\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._escapeEventStream;\n /**\n * View -> model callback called when value changes\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._onChange;\n /**\n * View -> model callback called when autocomplete has been touched\n * @type {?}\n */\n MatAutocompleteTrigger.prototype._onTouched;\n /** @type {?} */\n MatAutocompleteTrigger.prototype.autocomplete;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._element;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._overlay;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._viewContainerRef;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._zone;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._changeDetectorRef;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._scrollStrategy;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._dir;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._formField;\n /** @type {?} */\n MatAutocompleteTrigger.prototype._document;\n}\n//# sourceMappingURL=autocomplete-trigger.js.map","/**\n * @license\n * Copyright Google Inc. 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 at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { MatAutocomplete } from './autocomplete';\nimport { MatAutocompleteTrigger, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, } from './autocomplete-trigger';\nexport class MatAutocompleteModule {\n}\nMatAutocompleteModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n exports: [MatAutocomplete, MatOptionModule, MatAutocompleteTrigger, MatCommonModule],\n declarations: [MatAutocomplete, MatAutocompleteTrigger],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER],\n },] },\n];\n/**\n * @nocollapse\n */\nMatAutocompleteModule.ctorParameters = () => [];\nfunction MatAutocompleteModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatAutocompleteModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatAutocompleteModule.ctorParameters;\n}\n//# sourceMappingURL=autocomplete-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatAutocompleteSelectedEvent, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["observableOf"],"mappings":"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"}