{"version":3,"file":"chips.js","sources":["../../packages/material/chips/chip.js","../../packages/material/chips/chip-list.js","../../packages/material/chips/chip-input.js","../../packages/material/chips/chips-module.js","../../packages/material/chips/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 { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { BACKSPACE, DELETE, SPACE } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, } from '@angular/core';\nimport { mixinColor, mixinDisabled } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\n/**\n * Event object emitted by MatChip when selected or deselected.\n */\nexport class MatChipSelectionChange {\n /**\n * @param {?} source\n * @param {?} selected\n * @param {?=} isUserInput\n */\n constructor(source, selected, isUserInput = false) {\n this.source = source;\n this.selected = selected;\n this.isUserInput = isUserInput;\n }\n}\nfunction MatChipSelectionChange_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipSelectionChange.prototype.source;\n /** @type {?} */\n MatChipSelectionChange.prototype.selected;\n /** @type {?} */\n MatChipSelectionChange.prototype.isUserInput;\n}\n/**\n * \\@docs-private\n */\nexport class MatChipBase {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n}\nfunction MatChipBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipBase.prototype._renderer;\n /** @type {?} */\n MatChipBase.prototype._elementRef;\n}\nexport const /** @type {?} */ _MatChipMixinBase = mixinColor(mixinDisabled(MatChipBase), 'primary');\n/**\n * Dummy directive to add CSS class to basic chips.\n * \\@docs-private\n */\nexport class MatBasicChip {\n}\nMatBasicChip.decorators = [\n { type: Directive, args: [{\n selector: `mat-basic-chip, [mat-basic-chip]`,\n host: { 'class': 'mat-basic-chip' },\n },] },\n];\n/**\n * @nocollapse\n */\nMatBasicChip.ctorParameters = () => [];\nfunction MatBasicChip_tsickle_Closure_declarations() {\n /** @type {?} */\n MatBasicChip.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatBasicChip.ctorParameters;\n}\n/**\n * Material design styled Chip component. Used inside the MatChipList component.\n */\nexport class MatChip extends _MatChipMixinBase {\n /**\n * @param {?} renderer\n * @param {?} _elementRef\n */\n constructor(renderer, _elementRef) {\n super(renderer, _elementRef);\n this._elementRef = _elementRef;\n this._selected = false;\n this._selectable = true;\n this._removable = true;\n /**\n * Whether the chip has focus.\n */\n this._hasFocus = false;\n /**\n * Emits when the chip is focused.\n */\n this._onFocus = new Subject();\n /**\n * Emits when the chip is blured.\n */\n this._onBlur = new Subject();\n /**\n * Emitted when the chip is selected or deselected.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n */\n this.destroyed = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n */\n this.destroy = this.destroyed;\n /**\n * Emitted when a chip is to be removed.\n */\n this.removed = new EventEmitter();\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n */\n this.onRemove = this.removed;\n }\n /**\n * Whether the chip is selected.\n * @return {?}\n */\n get selected() {\n return this._selected;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set selected(value) {\n this._selected = coerceBooleanProperty(value);\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: value\n });\n }\n /**\n * The value of the chip. Defaults to the content inside tags.\n * @return {?}\n */\n get value() {\n return this._value != undefined\n ? this._value\n : this._elementRef.nativeElement.textContent;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n set value(newValue) {\n this._value = newValue;\n }\n /**\n * Whether or not the chips are selectable. When a chip is not selectable,\n * changes to it's selected state are always ignored.\n * @return {?}\n */\n get selectable() {\n return this._selectable;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set selectable(value) {\n this._selectable = coerceBooleanProperty(value);\n }\n /**\n * Determines whether or not the chip displays the remove styling and emits (remove) events.\n * @return {?}\n */\n get removable() {\n return this._removable;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set removable(value) {\n this._removable = coerceBooleanProperty(value);\n }\n /**\n * @return {?}\n */\n get ariaSelected() {\n return this.selectable ? this.selected.toString() : null;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroyed.emit({ chip: this });\n }\n /**\n * Selects the chip.\n * @return {?}\n */\n select() {\n this._selected = true;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: true\n });\n }\n /**\n * Deselects the chip.\n * @return {?}\n */\n deselect() {\n this._selected = false;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: false\n });\n }\n /**\n * Select this chip and emit selected event\n * @return {?}\n */\n selectViaInteraction() {\n this._selected = true;\n // Emit select event when selected changes.\n this.selectionChange.emit({\n source: this,\n isUserInput: true,\n selected: true\n });\n }\n /**\n * Toggles the current selected state of this chip.\n * @param {?=} isUserInput\n * @return {?}\n */\n toggleSelected(isUserInput = false) {\n this._selected = !this.selected;\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this._selected\n });\n return this.selected;\n }\n /**\n * Allows for programmatic focusing of the chip.\n * @return {?}\n */\n focus() {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({ chip: this });\n }\n /**\n * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n * @return {?}\n */\n remove() {\n if (this.removable) {\n this.removed.emit({ chip: this });\n }\n }\n /**\n * Ensures events fire properly upon click.\n * @param {?} event\n * @return {?}\n */\n _handleClick(event) {\n // Check disabled\n if (this.disabled) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.focus();\n }\n /**\n * Handle custom key presses.\n * @param {?} event\n * @return {?}\n */\n _handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // If we are removable, remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n case SPACE:\n // If we are selectable, toggle the focused chip\n if (this.selectable) {\n this.toggleSelected(true);\n }\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n }\n /**\n * @return {?}\n */\n _blur() {\n this._hasFocus = false;\n this._onBlur.next({ chip: this });\n }\n}\nMatChip.decorators = [\n { type: Directive, args: [{\n selector: `mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]`,\n inputs: ['color', 'disabled'],\n exportAs: 'matChip',\n host: {\n 'class': 'mat-chip',\n 'tabindex': '-1',\n 'role': 'option',\n '[class.mat-chip-selected]': 'selected',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_hasFocus = true',\n '(blur)': '_blur()',\n },\n },] },\n];\n/**\n * @nocollapse\n */\nMatChip.ctorParameters = () => [\n { type: Renderer2, },\n { type: ElementRef, },\n];\nMatChip.propDecorators = {\n 'selected': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selectable': [{ type: Input },],\n 'removable': [{ type: Input },],\n 'selectionChange': [{ type: Output },],\n 'destroyed': [{ type: Output },],\n 'destroy': [{ type: Output },],\n 'removed': [{ type: Output },],\n 'onRemove': [{ type: Output, args: ['remove',] },],\n};\nfunction MatChip_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChip.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatChip.ctorParameters;\n /** @type {?} */\n MatChip.propDecorators;\n /** @type {?} */\n MatChip.prototype._value;\n /** @type {?} */\n MatChip.prototype._selected;\n /** @type {?} */\n MatChip.prototype._selectable;\n /** @type {?} */\n MatChip.prototype._removable;\n /**\n * Whether the chip has focus.\n * @type {?}\n */\n MatChip.prototype._hasFocus;\n /**\n * Emits when the chip is focused.\n * @type {?}\n */\n MatChip.prototype._onFocus;\n /**\n * Emits when the chip is blured.\n * @type {?}\n */\n MatChip.prototype._onBlur;\n /**\n * Emitted when the chip is selected or deselected.\n * @type {?}\n */\n MatChip.prototype.selectionChange;\n /**\n * Emitted when the chip is destroyed.\n * @type {?}\n */\n MatChip.prototype.destroyed;\n /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n * @type {?}\n */\n MatChip.prototype.destroy;\n /**\n * Emitted when a chip is to be removed.\n * @type {?}\n */\n MatChip.prototype.removed;\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n * @type {?}\n */\n MatChip.prototype.onRemove;\n /** @type {?} */\n MatChip.prototype._elementRef;\n}\n/**\n * Applies proper (click) support and adds styling for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * \n * cancel\n * \n *\n * You *may* use a custom icon, but you may need to override the `mat-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\nexport class MatChipRemove {\n /**\n * @param {?} _parentChip\n */\n constructor(_parentChip) {\n this._parentChip = _parentChip;\n }\n /**\n * Calls the parent chip's public `remove()` method if applicable.\n * @return {?}\n */\n _handleClick() {\n if (this._parentChip.removable) {\n this._parentChip.remove();\n }\n }\n}\nMatChipRemove.decorators = [\n { type: Directive, args: [{\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-chip-remove',\n '(click)': '_handleClick($event)',\n },\n },] },\n];\n/**\n * @nocollapse\n */\nMatChipRemove.ctorParameters = () => [\n { type: MatChip, },\n];\nfunction MatChipRemove_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipRemove.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatChipRemove.ctorParameters;\n /** @type {?} */\n MatChipRemove.prototype._parentChip;\n}\n//# sourceMappingURL=chip.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 { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BACKSPACE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { startWith } from '@angular/cdk/rxjs';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Optional, Output, Renderer2, Self, ViewEncapsulation, } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { MatChip } from './chip';\n// Increasing integer for generating unique ids for chip-list components.\nlet /** @type {?} */ nextUniqueId = 0;\n/**\n * Change event object that is emitted when the chip list value has changed.\n */\nexport class MatChipListChange {\n /**\n * @param {?} source\n * @param {?} value\n */\n constructor(source, value) {\n this.source = source;\n this.value = value;\n }\n}\nfunction MatChipListChange_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipListChange.prototype.source;\n /** @type {?} */\n MatChipListChange.prototype.value;\n}\n/**\n * A material design chips component (named ChipList for it's similarity to the List component).\n */\nexport class MatChipList {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} ngControl\n */\n constructor(_renderer, _elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, ngControl) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n this.controlType = 'mat-chip-list';\n /**\n * Stream that emits whenever the state of the input changes such that the wrapping `MatFormField`\n * needs to run change detection.\n */\n this.stateChanges = new Subject();\n /**\n * When a chip is destroyed, we track the index so we can focus the appropriate next chip.\n */\n this._lastDestroyedIndex = null;\n /**\n * Track which chips we're listening to for focus/destruction.\n */\n this._chipSet = new WeakMap();\n /**\n * Subscription to tabbing out from the chip list.\n */\n this._tabOutSubscription = Subscription.EMPTY;\n /**\n * Whether or not the chip is selectable.\n */\n this._selectable = true;\n /**\n * Whether the component is in multiple selection mode.\n */\n this._multiple = false;\n /**\n * Uid of the chip list\n */\n this._uid = `mat-chip-list-${nextUniqueId++}`;\n /**\n * Whether this is required\n */\n this._required = false;\n /**\n * Whether this is disabled\n */\n this._disabled = false;\n /**\n * Tab index for the chip list.\n */\n this._tabIndex = 0;\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n */\n this._userTabIndex = null;\n /**\n * Function when touched\n */\n this._onTouched = () => { };\n /**\n * Function when changed\n */\n this._onChange = () => { };\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n */\n this._compareWith = (o1, o2) => o1 === o2;\n /**\n * Orientation of the chip list.\n */\n this.ariaOrientation = 'horizontal';\n /**\n * Event emitted when the selected chip list value has been changed by the user.\n */\n this.change = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * \\@docs-private\n */\n this.valueChange = new EventEmitter();\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n /**\n * The array of selected chips inside chip list.\n * @return {?}\n */\n get selected() {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n /**\n * Whether the user should be allowed to select multiple chips.\n * @return {?}\n */\n get multiple() { return this._multiple; }\n /**\n * @param {?} value\n * @return {?}\n */\n set multiple(value) {\n this._multiple = coerceBooleanProperty(value);\n }\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n * @return {?}\n */\n get compareWith() { return this._compareWith; }\n /**\n * @param {?} fn\n * @return {?}\n */\n set compareWith(fn) {\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /**\n * Required for FormFieldControl\n * @return {?}\n */\n get value() { return this._value; }\n /**\n * @param {?} newValue\n * @return {?}\n */\n set value(newValue) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n /**\n * Required for FormFieldControl. The ID of the chip list\n * @param {?} value\n * @return {?}\n */\n set id(value) {\n this._id = value;\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n get id() { return this._id || this._uid; }\n /**\n * Required for FormFieldControl. Whether the chip list is required.\n * @param {?} value\n * @return {?}\n */\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n get required() {\n return this._required;\n }\n /**\n * For FormFieldControl. Use chip input's placholder if there's a chip input\n * @param {?} value\n * @return {?}\n */\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n get placeholder() {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n /**\n * Whether any chips or the matChipInput inside of this chip-list has focus.\n * @return {?}\n */\n get focused() {\n return this.chips.some(chip => chip._hasFocus) ||\n (this._chipInput && this._chipInput.focused);\n }\n /**\n * Whether this chip-list contains no chips and no matChipInput.\n * @return {?}\n */\n get empty() {\n return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n }\n /**\n * @return {?}\n */\n get shouldPlaceholderFloat() {\n return this.empty;\n }\n /**\n * Whether this chip-list is disabled.\n * @return {?}\n */\n get disabled() { return this.ngControl ? this.ngControl.disabled : this._disabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) { this._disabled = coerceBooleanProperty(value); }\n /**\n * Whether the chip list is in an error state.\n * @return {?}\n */\n get errorState() {\n const /** @type {?} */ isInvalid = this.ngControl && this.ngControl.invalid;\n const /** @type {?} */ isTouched = this.ngControl && this.ngControl.touched;\n const /** @type {?} */ isSubmitted = (this._parentFormGroup && this._parentFormGroup.submitted) ||\n (this._parentForm && this._parentForm.submitted);\n return !!(isInvalid && (isTouched || isSubmitted));\n }\n /**\n * Whether or not this chip is selectable. When a chip is not selectable,\n * its selected state is always ignored.\n * @return {?}\n */\n get selectable() { return this._selectable; }\n /**\n * @param {?} value\n * @return {?}\n */\n set selectable(value) { this._selectable = coerceBooleanProperty(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n set tabIndex(value) {\n this._userTabIndex = value;\n this._tabIndex = value;\n }\n /**\n * Combined stream of all of the child chips' selection change events.\n * @return {?}\n */\n get chipSelectionChanges() {\n return merge(...this.chips.map(chip => chip.selectionChange));\n }\n /**\n * Combined stream of all of the child chips' focus change events.\n * @return {?}\n */\n get chipFocusChanges() {\n return merge(...this.chips.map(chip => chip._onFocus));\n }\n /**\n * Combined stream of all of the child chips' blur change events.\n * @return {?}\n */\n get chipBlurChanges() {\n return merge(...this.chips.map(chip => chip._onBlur));\n }\n /**\n * Combined stream of all of the child chips' remove change events.\n * @return {?}\n */\n get chipRemoveChanges() {\n return merge(...this.chips.map(chip => chip.destroy));\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager(this.chips).withWrap();\n // Prevents the chip list from capturing focus and redirecting\n // it back to the first chip when the user tabs out.\n this._tabOutSubscription = this._keyManager.tabOut.subscribe(() => {\n this._tabIndex = -1;\n setTimeout(() => this._tabIndex = this._userTabIndex || 0);\n });\n // When the list changes, re-subscribe\n this._changeSubscription = startWith.call(this.chips.changes, null).subscribe(() => {\n this._resetChips();\n // Reset chips selected/deselected status\n this._initializeSelection();\n // Check to see if we need to update our tab index\n this._updateTabIndex();\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n });\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._tabOutSubscription.unsubscribe();\n if (this._changeSubscription) {\n this._changeSubscription.unsubscribe();\n }\n this._dropSubscriptions();\n }\n /**\n * Associates an HTML input element with this chip list.\n * @param {?} inputElement\n * @return {?}\n */\n registerInput(inputElement) {\n this._chipInput = inputElement;\n }\n /**\n * @param {?} ids\n * @return {?}\n */\n setDescribedByIds(ids) { this._ariaDescribedby = ids.join(' '); }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n if (this.chips) {\n this._setSelectionByValue(value, false);\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * @param {?} disabled\n * @return {?}\n */\n setDisabledState(disabled) {\n this.disabled = disabled;\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n onContainerClick() {\n this.focus();\n }\n /**\n * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n * @return {?}\n */\n focus() {\n // TODO: ARIA says this should focus the first `selected` chip if any are selected.\n // Focus on first element if there's no chipInput inside chip-list\n if (this._chipInput && this._chipInput.focused) {\n // do nothing\n }\n else if (this.chips.length > 0) {\n this._keyManager.setFirstItemActive();\n this.stateChanges.next();\n }\n else {\n this._focusInput();\n this.stateChanges.next();\n }\n }\n /**\n * Attempt to focus an input if we have one.\n * @return {?}\n */\n _focusInput() {\n if (this._chipInput) {\n this._chipInput.focus();\n }\n }\n /**\n * Pass events to the keyboard manager. Available here for tests.\n * @param {?} event\n * @return {?}\n */\n _keydown(event) {\n let /** @type {?} */ code = event.keyCode;\n let /** @type {?} */ target = (event.target);\n let /** @type {?} */ isInputEmpty = this._isInputEmpty(target);\n let /** @type {?} */ isRtl = this._dir && this._dir.value == 'rtl';\n let /** @type {?} */ isPrevKey = (code === (isRtl ? RIGHT_ARROW : LEFT_ARROW));\n let /** @type {?} */ isNextKey = (code === (isRtl ? LEFT_ARROW : RIGHT_ARROW));\n let /** @type {?} */ isBackKey = code === BACKSPACE;\n // If they are on an empty input and hit backspace, focus the last chip\n if (isInputEmpty && isBackKey) {\n this._keyManager.setLastItemActive();\n event.preventDefault();\n return;\n }\n // If they are on a chip, check for space/left/right, otherwise pass to our key manager (like\n // up/down keys)\n if (target && target.classList.contains('mat-chip')) {\n if (isPrevKey) {\n this._keyManager.setPreviousItemActive();\n event.preventDefault();\n }\n else if (isNextKey) {\n this._keyManager.setNextItemActive();\n event.preventDefault();\n }\n else {\n this._keyManager.onKeydown(event);\n }\n }\n this.stateChanges.next();\n }\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n * @return {?}\n */\n _updateTabIndex() {\n // If we have 0 chips, we should not allow keyboard focus\n this._tabIndex = this._userTabIndex || (this.chips.length === 0 ? -1 : 0);\n }\n /**\n * Update key manager's active item when chip is deleted.\n * If the deleted chip is the last chip in chip list, focus the new last chip.\n * Otherwise focus the next chip in the list.\n * Save `_lastDestroyedIndex` so we can set the correct focus.\n * @param {?} chip\n * @return {?}\n */\n _updateKeyManager(chip) {\n let /** @type {?} */ chipIndex = this.chips.toArray().indexOf(chip);\n if (this._isValidIndex(chipIndex)) {\n if (chip._hasFocus) {\n // Check whether the chip is not the last item\n if (chipIndex < this.chips.length - 1) {\n this._keyManager.setActiveItem(chipIndex);\n }\n else if (chipIndex - 1 >= 0) {\n this._keyManager.setActiveItem(chipIndex - 1);\n }\n }\n if (this._keyManager.activeItemIndex === chipIndex) {\n this._lastDestroyedIndex = chipIndex;\n }\n }\n }\n /**\n * Checks to see if a focus chip was recently destroyed so that we can refocus the next closest\n * one.\n * @return {?}\n */\n _updateFocusForDestroyedChips() {\n let /** @type {?} */ chipsArray = this.chips;\n if (this._lastDestroyedIndex != null && chipsArray.length > 0) {\n // Check whether the destroyed chip was the last item\n const /** @type {?} */ newFocusIndex = Math.min(this._lastDestroyedIndex, chipsArray.length - 1);\n this._keyManager.setActiveItem(newFocusIndex);\n let /** @type {?} */ focusChip = this._keyManager.activeItem;\n // Focus the chip\n if (focusChip) {\n focusChip.focus();\n }\n }\n // Reset our destroyed index\n this._lastDestroyedIndex = null;\n }\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param {?} index The index to be checked.\n * @return {?} True if the index is valid for our list of chips.\n */\n _isValidIndex(index) {\n return index >= 0 && index < this.chips.length;\n }\n /**\n * @param {?} element\n * @return {?}\n */\n _isInputEmpty(element) {\n if (element && element.nodeName.toLowerCase() === 'input') {\n let /** @type {?} */ input = (element);\n return !input.value;\n }\n return false;\n }\n /**\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?}\n */\n _setSelectionByValue(value, isUserInput = true) {\n this._clearSelection();\n this.chips.forEach(chip => chip.deselect());\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n this._sortValues();\n }\n else {\n const /** @type {?} */ correspondingChip = this._selectValue(value, isUserInput);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n this._keyManager.setActiveItem(this.chips.toArray().indexOf(correspondingChip));\n }\n }\n }\n /**\n * Finds and selects the chip based on its value.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?} Chip that has the corresponding value.\n */\n _selectValue(value, isUserInput = true) {\n const /** @type {?} */ correspondingChip = this.chips.find(chip => {\n return chip.value != null && this._compareWith(chip.value, value);\n });\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n this._selectionModel.select(correspondingChip);\n }\n return correspondingChip;\n }\n /**\n * @return {?}\n */\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl || this._value) {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value, false);\n this.stateChanges.next();\n }\n });\n }\n /**\n * Deselects every chip in the list.\n * @param {?=} skip Chip that should not be deselected.\n * @return {?}\n */\n _clearSelection(skip) {\n this._selectionModel.clear();\n this.chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n this.stateChanges.next();\n }\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n * @return {?}\n */\n _sortValues() {\n if (this._multiple) {\n this._selectionModel.clear();\n this.chips.forEach(chip => {\n if (chip.selected) {\n this._selectionModel.select(chip);\n }\n });\n this.stateChanges.next();\n }\n }\n /**\n * Emits change event to set the model value.\n * @param {?=} fallbackValue\n * @return {?}\n */\n _propagateChanges(fallbackValue) {\n let /** @type {?} */ valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * When blurred, mark the field as touched when focus moved outside the chip list.\n * @return {?}\n */\n _blur() {\n if (!this.disabled) {\n if (this._chipInput) {\n // If there's a chip input, we should check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._markAsTouched();\n }\n });\n }\n else {\n // If there's no chip input, then mark the field as touched.\n this._markAsTouched();\n }\n }\n }\n /**\n * Mark the field as touched\n * @return {?}\n */\n _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /**\n * @return {?}\n */\n _resetChips() {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n }\n /**\n * @return {?}\n */\n _dropSubscriptions() {\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n }\n /**\n * Listens to user-generated selection events on each chip.\n * @return {?}\n */\n _listenToChipsSelection() {\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(event => {\n event.source.selected\n ? this._selectionModel.select(event.source)\n : this._selectionModel.deselect(event.source);\n // For single selection chip list, make sure the deselected value is unselected.\n if (!this.multiple) {\n this.chips.forEach(chip => {\n if (!this._selectionModel.isSelected(chip) && chip.selected) {\n chip.deselect();\n }\n });\n }\n if (event.isUserInput) {\n this._propagateChanges();\n }\n });\n }\n /**\n * Listens to user-generated selection events on each chip.\n * @return {?}\n */\n _listenToChipsFocus() {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe(event => {\n let /** @type {?} */ chipIndex = this.chips.toArray().indexOf(event.chip);\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveItemIndex(chipIndex);\n }\n this.stateChanges.next();\n });\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(_ => {\n this._blur();\n this.stateChanges.next();\n });\n }\n /**\n * @return {?}\n */\n _listenToChipsRemoved() {\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event) => {\n this._updateKeyManager(event.chip);\n });\n }\n}\nMatChipList.decorators = [\n { type: Component, args: [{selector: 'mat-chip-list',\n template: `
`,\n exportAs: 'matChipList',\n host: {\n '[attr.tabindex]': '_tabIndex',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-multiselectable]': 'multiple',\n '[class.mat-chip-list-disabled]': 'disabled',\n '[class.mat-chip-list-invalid]': 'errorState',\n '[class.mat-chip-list-required]': 'required',\n 'role': 'listbox',\n '[attr.aria-orientation]': 'ariaOrientation',\n 'class': 'mat-chip-list',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)'\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }],\n styles: [\".mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.mat-chip:not(.mat-basic-chip){transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:24px;align-items:center;cursor:default}.mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 0 3px 8px}[dir=rtl] .mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 8px 3px 0}.mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-right:8px}[dir=rtl] .mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-left:8px}.mat-chip:not(.mat-basic-chip) .mat-chip-remove.mat-icon{width:1em;height:1em}.mat-chip:not(.mat-basic-chip):focus{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);outline:0}@media screen and (-ms-high-contrast:active){.mat-chip:not(.mat-basic-chip){outline:solid 1px}}.mat-chip-list-stacked .mat-chip-list-wrapper{display:block}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){display:block;margin:0;margin-bottom:8px}[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){margin:0;margin-bottom:8px}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child,[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child{margin-bottom:0}.mat-form-field-prefix .mat-chip-list-wrapper{margin-bottom:8px}.mat-chip-remove{margin-right:-4px;margin-left:6px;cursor:pointer}[dir=rtl] .mat-chip-remove{margin-right:6px;margin-left:-4px}input.mat-chip-input{width:150px;margin:3px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n];\n/**\n * @nocollapse\n */\nMatChipList.ctorParameters = () => [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n];\nMatChipList.propDecorators = {\n 'multiple': [{ type: Input },],\n 'compareWith': [{ type: Input },],\n 'value': [{ type: Input },],\n 'id': [{ type: Input },],\n 'required': [{ type: Input },],\n 'placeholder': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'ariaOrientation': [{ type: Input, args: ['aria-orientation',] },],\n 'selectable': [{ type: Input },],\n 'tabIndex': [{ type: Input },],\n 'change': [{ type: Output },],\n 'valueChange': [{ type: Output },],\n 'chips': [{ type: ContentChildren, args: [MatChip,] },],\n};\nfunction MatChipList_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipList.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatChipList.ctorParameters;\n /** @type {?} */\n MatChipList.propDecorators;\n /** @type {?} */\n MatChipList.prototype.controlType;\n /**\n * Stream that emits whenever the state of the input changes such that the wrapping `MatFormField`\n * needs to run change detection.\n * @type {?}\n */\n MatChipList.prototype.stateChanges;\n /**\n * When a chip is destroyed, we track the index so we can focus the appropriate next chip.\n * @type {?}\n */\n MatChipList.prototype._lastDestroyedIndex;\n /**\n * Track which chips we're listening to for focus/destruction.\n * @type {?}\n */\n MatChipList.prototype._chipSet;\n /**\n * Subscription to tabbing out from the chip list.\n * @type {?}\n */\n MatChipList.prototype._tabOutSubscription;\n /**\n * Subscription to changes in the chip list.\n * @type {?}\n */\n MatChipList.prototype._changeSubscription;\n /**\n * Subscription to focus changes in the chips.\n * @type {?}\n */\n MatChipList.prototype._chipFocusSubscription;\n /**\n * Subscription to blur changes in the chips.\n * @type {?}\n */\n MatChipList.prototype._chipBlurSubscription;\n /**\n * Subscription to selection changes in chips.\n * @type {?}\n */\n MatChipList.prototype._chipSelectionSubscription;\n /**\n * Subscription to remove changes in chips.\n * @type {?}\n */\n MatChipList.prototype._chipRemoveSubscription;\n /**\n * Whether or not the chip is selectable.\n * @type {?}\n */\n MatChipList.prototype._selectable;\n /**\n * Whether the component is in multiple selection mode.\n * @type {?}\n */\n MatChipList.prototype._multiple;\n /**\n * The chip input to add more chips\n * @type {?}\n */\n MatChipList.prototype._chipInput;\n /**\n * The aria-describedby attribute on the chip list for improved a11y.\n * @type {?}\n */\n MatChipList.prototype._ariaDescribedby;\n /**\n * Id of the chip list\n * @type {?}\n */\n MatChipList.prototype._id;\n /**\n * Uid of the chip list\n * @type {?}\n */\n MatChipList.prototype._uid;\n /**\n * Whether this is required\n * @type {?}\n */\n MatChipList.prototype._required;\n /**\n * Whether this is disabled\n * @type {?}\n */\n MatChipList.prototype._disabled;\n /** @type {?} */\n MatChipList.prototype._value;\n /**\n * Placeholder for the chip list. Alternatively, placeholder can be set on MatChipInput\n * @type {?}\n */\n MatChipList.prototype._placeholder;\n /**\n * Tab index for the chip list.\n * @type {?}\n */\n MatChipList.prototype._tabIndex;\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n * @type {?}\n */\n MatChipList.prototype._userTabIndex;\n /**\n * The FocusKeyManager which handles focus.\n * @type {?}\n */\n MatChipList.prototype._keyManager;\n /**\n * Function when touched\n * @type {?}\n */\n MatChipList.prototype._onTouched;\n /**\n * Function when changed\n * @type {?}\n */\n MatChipList.prototype._onChange;\n /** @type {?} */\n MatChipList.prototype._selectionModel;\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n * @type {?}\n */\n MatChipList.prototype._compareWith;\n /**\n * Orientation of the chip list.\n * @type {?}\n */\n MatChipList.prototype.ariaOrientation;\n /**\n * Event emitted when the selected chip list value has been changed by the user.\n * @type {?}\n */\n MatChipList.prototype.change;\n /**\n * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * \\@docs-private\n * @type {?}\n */\n MatChipList.prototype.valueChange;\n /**\n * The chip components contained within this chip list.\n * @type {?}\n */\n MatChipList.prototype.chips;\n /** @type {?} */\n MatChipList.prototype._renderer;\n /** @type {?} */\n MatChipList.prototype._elementRef;\n /** @type {?} */\n MatChipList.prototype._changeDetectorRef;\n /** @type {?} */\n MatChipList.prototype._dir;\n /** @type {?} */\n MatChipList.prototype._parentForm;\n /** @type {?} */\n MatChipList.prototype._parentFormGroup;\n /** @type {?} */\n MatChipList.prototype.ngControl;\n}\n//# sourceMappingURL=chip-list.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 { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n/**\n * Directive that adds chip-specific behaviors to an input element inside .\n * May be placed inside or outside of an .\n */\nexport class MatChipInput {\n /**\n * @param {?} _elementRef\n */\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this.focused = false;\n this._addOnBlur = false;\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n // TODO(tinayuangao): Support Set here\n this.separatorKeyCodes = [ENTER];\n /**\n * Emitted when a chip is to be added.\n */\n this.chipEnd = new EventEmitter();\n this.placeholder = '';\n this._inputElement = this._elementRef.nativeElement;\n }\n /**\n * Register input for chip list\n * @param {?} value\n * @return {?}\n */\n set chipList(value) {\n if (value) {\n this._chipList = value;\n this._chipList.registerInput(this);\n }\n }\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n * @return {?}\n */\n get addOnBlur() { return this._addOnBlur; }\n /**\n * @param {?} value\n * @return {?}\n */\n set addOnBlur(value) { this._addOnBlur = coerceBooleanProperty(value); }\n /**\n * @return {?}\n */\n get empty() {\n let /** @type {?} */ value = this._inputElement.value;\n return value == null || value === '';\n }\n /**\n * Utility method to make host definition/tests more clear.\n * @param {?=} event\n * @return {?}\n */\n _keydown(event) {\n this._emitChipEnd(event);\n }\n /**\n * Checks to see if the blur should emit the (chipEnd) event.\n * @return {?}\n */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipList.focused) {\n this._chipList._blur();\n }\n this._chipList.stateChanges.next();\n }\n /**\n * @return {?}\n */\n _focus() {\n this.focused = true;\n this._chipList.stateChanges.next();\n }\n /**\n * Checks to see if the (chipEnd) event needs to be emitted.\n * @param {?=} event\n * @return {?}\n */\n _emitChipEnd(event) {\n if (!this._inputElement.value && !!event) {\n this._chipList._keydown(event);\n }\n if (!event || this.separatorKeyCodes.indexOf(event.keyCode) > -1) {\n this.chipEnd.emit({ input: this._inputElement, value: this._inputElement.value });\n if (event) {\n event.preventDefault();\n }\n }\n }\n /**\n * @return {?}\n */\n focus() { this._inputElement.focus(); }\n}\nMatChipInput.decorators = [\n { type: Directive, args: [{\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n 'class': 'mat-chip-input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n }\n },] },\n];\n/**\n * @nocollapse\n */\nMatChipInput.ctorParameters = () => [\n { type: ElementRef, },\n];\nMatChipInput.propDecorators = {\n 'chipList': [{ type: Input, args: ['matChipInputFor',] },],\n 'addOnBlur': [{ type: Input, args: ['matChipInputAddOnBlur',] },],\n 'separatorKeyCodes': [{ type: Input, args: ['matChipInputSeparatorKeyCodes',] },],\n 'chipEnd': [{ type: Output, args: ['matChipInputTokenEnd',] },],\n 'placeholder': [{ type: Input },],\n};\nfunction MatChipInput_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipInput.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatChipInput.ctorParameters;\n /** @type {?} */\n MatChipInput.propDecorators;\n /** @type {?} */\n MatChipInput.prototype.focused;\n /** @type {?} */\n MatChipInput.prototype._chipList;\n /** @type {?} */\n MatChipInput.prototype._addOnBlur;\n /** @type {?} */\n MatChipInput.prototype.separatorKeyCodes;\n /**\n * Emitted when a chip is to be added.\n * @type {?}\n */\n MatChipInput.prototype.chipEnd;\n /** @type {?} */\n MatChipInput.prototype.placeholder;\n /**\n * The native input element to which this directive is attached.\n * @type {?}\n */\n MatChipInput.prototype._inputElement;\n /** @type {?} */\n MatChipInput.prototype._elementRef;\n}\n//# sourceMappingURL=chip-input.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 { MatChipList } from './chip-list';\nimport { MatBasicChip, MatChip, MatChipRemove } from './chip';\nimport { MatChipInput } from './chip-input';\nexport class MatChipsModule {\n}\nMatChipsModule.decorators = [\n { type: NgModule, args: [{\n imports: [],\n exports: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip],\n declarations: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip]\n },] },\n];\n/**\n * @nocollapse\n */\nMatChipsModule.ctorParameters = () => [];\nfunction MatChipsModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatChipsModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatChipsModule.ctorParameters;\n}\n//# sourceMappingURL=chips-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatChipsModule, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatBasicChip, MatChip, MatChipRemove, MatChipInput } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}