{"version":3,"file":"novo-elements-elements-chips.mjs","sources":["../../../projects/novo-elements/src/elements/chips/Chip.ts","../../../projects/novo-elements/src/elements/chips/ChipDefaults.ts","../../../projects/novo-elements/src/elements/chips/ChipList.ts","../../../projects/novo-elements/src/elements/chips/ChipInput.ts","../../../projects/novo-elements/src/elements/chips/pipe/AvatarType.pipe.ts","../../../projects/novo-elements/src/elements/chips/Chips.ts","../../../projects/novo-elements/src/elements/chips/RowChips.ts","../../../projects/novo-elements/src/elements/chips/Chips.module.ts","../../../projects/novo-elements/src/elements/chips/novo-elements-elements-chips.ts"],"sourcesContent":["import { FocusableOption } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\n\nimport {\n  Attribute,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  Output,\n  ViewEncapsulation,\n  DOCUMENT,\n} from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { Key } from 'novo-elements/utils';\nimport { CanColor, CanColorCtor, CanSizeCtor, HasTabIndex, HasTabIndexCtor, mixinColor, mixinSize, mixinTabIndex } from 'novo-elements/elements/common';\n\nexport interface IRemovable {\n  remove: () => void;\n  removable: boolean;\n  disabled: boolean;\n}\n\nexport const REMOVABLE_REF: InjectionToken<IRemovable> = new InjectionToken<IRemovable>('REMOVABLE_REF');\n\n/** Represents an event fired on an individual `novo-chip`. */\nexport interface NovoChipEvent {\n  /** The chip the event was fired on. */\n  chip: NovoChipElement;\n}\n\n/** Event object emitted by NovoChip when selected or deselected. */\nexport class NovoChipSelectionChange {\n  constructor(\n    /** Reference to the chip that emitted the event. */\n    public source: NovoChipElement,\n    /** Whether the chip that emitted the event is selected. */\n    public selected: boolean,\n    /** Whether the selection change was a result of a user interaction. */\n    public isUserInput = false,\n  ) {}\n}\n\n// Boilerplate for applying mixins to NovoChipElement.\n/** @docs-private */\nclass NovoChipBase {\n  // abstract disabled: boolean;\n  constructor(public _elementRef: ElementRef) {}\n}\n\nconst NovoChipMixinBase: CanSizeCtor & CanColorCtor & HasTabIndexCtor & typeof NovoChipBase = mixinSize(\n  mixinTabIndex(mixinColor(NovoChipBase, null), -1),\n  'md',\n);\n\n/**\n * Dummy directive to add CSS class to chip avatar.\n * @docs-private\n */\n@Directive({\n    selector: 'novo-chip-avatar, [novoChipAvatar]',\n    host: { class: 'novo-chip-avatar' },\n    standalone: false,\n})\nexport class NovoChipAvatar {}\n\n/**\n * Applies proper (click) support and adds styling for use with Bullhorn's \"x\" icon *\n * Example:\n *\n *     `<novo-chip>\n *       <novo-icon novoChipRemove>x</novo-icon>\n *     </novo-chip>`\n *\n * You *may* use a custom icon, but you may need to override the `novo-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\n@Directive({\n    selector: '[novoChipRemove]',\n    host: {\n        class: 'novo-chip-remove',\n        '(click)': '_handleClick($event)',\n    },\n    standalone: false,\n})\nexport class NovoChipRemove {\n  constructor(@Inject(REMOVABLE_REF) private _parentChip: IRemovable, elementRef: ElementRef<HTMLElement>) {\n    if (elementRef.nativeElement.nodeName === 'BUTTON') {\n      elementRef.nativeElement.setAttribute('type', 'button');\n    }\n  }\n\n  /** Calls the parent chip's public `remove()` method if applicable. */\n  _handleClick(event: Event): void {\n    const parentChip = this._parentChip;\n    if (parentChip.removable && !parentChip.disabled) {\n      parentChip.remove();\n    }\n\n    // We need to stop event propagation because otherwise the event will bubble up to the\n    // form field and cause the `onContainerClick` method to be invoked. This method would then\n    // reset the focused chip that has been focused after chip removal. Usually the parent\n    // the parent click listener of the `NovoChip` would prevent propagation, but it can happen\n    // that the chip is being removed before the event bubbles up.\n    event.stopPropagation();\n  }\n}\n\n/**\n * Chip component. Used inside the NovoChipList component.\n */\n@Component({\n    selector: 'novo-chip, [novo-chip]',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./Chip.scss'],\n    encapsulation: ViewEncapsulation.None,\n    inputs: ['color', 'tabIndex', 'size'],\n    providers: [{ provide: REMOVABLE_REF, useExisting: NovoChipElement }],\n    host: {\n        class: 'novo-chip novo-focus-indicator',\n        role: 'option',\n        '[class.novo-chip-selectable]': 'selectable',\n        '[class.novo-chip-selected]': 'selected',\n        '[class.novo-chip-with-avatar]': 'avatar',\n        '[class.novo-chip-with-trailing-icon]': 'removeIcon',\n        '[class.novo-chip-disabled]': 'disabled',\n        '[class._novo-animation-noopable]': '_animationsDisabled',\n        '[attr.tabindex]': 'disabled ? null : tabIndex',\n        '[attr.disabled]': 'disabled || null',\n        '[attr.aria-disabled]': 'disabled.toString()',\n        '[attr.aria-selected]': 'ariaSelected',\n        '(click)': '_handleClick($event)',\n        // '(mouseenter)': '_handleActivate($event)',\n        // '(mouseleave)': '_handleDeactivate($event)',\n        '(keydown)': '_handleKeydown($event)',\n        '(focus)': 'focus()',\n        '(blur)': '_blur()',\n    },\n    standalone: false,\n})\nexport class NovoChipElement extends NovoChipMixinBase implements FocusableOption, OnDestroy, CanColor, HasTabIndex {\n  /** Whether the chip has focus. */\n  _hasFocus: boolean = false;\n\n  /** Whether animations for the chip are enabled. */\n  _animationsDisabled: boolean;\n\n  /** Whether the chip list is selectable */\n  _chipListSelectable: boolean = true;\n\n  /** Whether the chip list allows toggling */\n  _chipListToggleable: boolean = true;\n\n  /** Whether the chip list is in multi-selection mode. */\n  _chipListMultiple: boolean = false;\n\n  /** Whether the chip list as a whole is disabled. */\n  _chipListDisabled: boolean = false;\n\n  /** The chip avatar */\n  @ContentChild(NovoChipAvatar) avatar: NovoChipAvatar;\n\n  /** The chip's remove toggler. */\n  @ContentChild(NovoChipRemove) removeIcon: NovoChipRemove;\n\n  @Input() type: string;\n  /** Whether the chip is selected. */\n  @Input()\n  get selected(): boolean {\n    return this._selected;\n  }\n  set selected(value: boolean) {\n    const coercedValue = coerceBooleanProperty(value);\n\n    if (coercedValue !== this._selected) {\n      this._selected = coercedValue;\n      this._dispatchSelectionChange();\n    }\n  }\n  protected _selected: boolean = false;\n\n  /** The value of the chip. Defaults to the content inside `<novo-chip>` tags. */\n  @Input()\n  get value(): any {\n    return this._value !== undefined ? this._value : this._elementRef.nativeElement.textContent;\n  }\n  set value(value: any) {\n    this._value = value;\n  }\n  protected _value: any;\n\n  /**\n   * Whether or not the chip is selectable. When a chip is not selectable,\n   * changes to its selected state are always ignored. By default a chip is\n   * selectable, and it becomes non-selectable if its parent chip list is\n   * not selectable.\n   */\n  @Input()\n  get selectable(): boolean {\n    return this._selectable && this._chipListSelectable;\n  }\n  set selectable(value: boolean) {\n    this._selectable = coerceBooleanProperty(value);\n  }\n  protected _selectable: boolean = false;\n\n  /** Whether the chip is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._chipListDisabled || this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  protected _disabled: boolean = false;\n\n  /**\n   * Determines whether or not the chip displays the remove styling and emits (removed) events.\n   */\n  @Input()\n  get removable(): boolean {\n    return this._removable;\n  }\n  set removable(value: boolean) {\n    this._removable = coerceBooleanProperty(value);\n  }\n  protected _removable: boolean = true;\n\n  /** Emits when the chip is focused. */\n  readonly _onFocus = new Subject<NovoChipEvent>();\n\n  /** Emits when the chip is blured. */\n  readonly _onBlur = new Subject<NovoChipEvent>();\n\n  /** Emitted when the chip is selected or deselected. */\n  @Output() readonly selectionChange: EventEmitter<NovoChipSelectionChange> = new EventEmitter<NovoChipSelectionChange>();\n\n  /** Emitted when the chip is destroyed. */\n  @Output() readonly destroyed: EventEmitter<NovoChipEvent> = new EventEmitter<NovoChipEvent>();\n\n  /** Emitted when a chip is to be removed. */\n  @Output() readonly removed: EventEmitter<NovoChipEvent> = new EventEmitter<NovoChipEvent>();\n\n  /** The ARIA selected applied to the chip. */\n  get ariaSelected(): string | null {\n    // Remove the `aria-selected` when the chip is deselected in single-selection mode, because\n    // it adds noise to NVDA users where \"not selected\" will be read out for each chip.\n    return this.selectable && (this._chipListMultiple || this.selected) ? this.selected.toString() : null;\n  }\n\n  constructor(\n    public _elementRef: ElementRef<HTMLElement>,\n    private _ngZone: NgZone,\n    platform: Platform,\n    @Optional()\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Inject(DOCUMENT) _document: any,\n    @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string,\n    @Attribute('tabindex') tabIndex?: string,\n  ) {\n    super(_elementRef);\n    this._animationsDisabled = animationMode === 'NoopAnimations';\n    this.tabIndex = tabIndex != null ? parseInt(tabIndex, 10) || -1 : -1;\n  }\n\n  ngOnDestroy() {\n    this.destroyed.emit({ chip: this });\n  }\n\n  /** Selects the chip. */\n  select(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._dispatchSelectionChange();\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Deselects the chip. */\n  deselect(): void {\n    if (this._selected) {\n      this._selected = false;\n      this._dispatchSelectionChange();\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Select this chip and emit selected event */\n  selectViaInteraction(): void {\n    if (!this._selected) {\n      this._selected = true;\n      this._dispatchSelectionChange(true);\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Toggles the current selected state of this chip. */\n  toggleSelected(isUserInput: boolean = false): boolean {\n    this._selected = !this.selected;\n    this._dispatchSelectionChange(isUserInput);\n    this._changeDetectorRef.markForCheck();\n    return this.selected;\n  }\n\n  /** Allows for programmatic focusing of the chip. */\n  focus(): void {\n    if (!this._hasFocus) {\n      this._elementRef.nativeElement.focus();\n      this._onFocus.next({ chip: this });\n    }\n    this._hasFocus = true;\n  }\n\n  /**\n   * Allows for programmatic removal of the chip. Called by the NovoChipList 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   */\n  remove(): void {\n    if (this.removable) {\n      this.removed.emit({ chip: this });\n    }\n  }\n\n  /** Handles click events on the chip. */\n  _handleClick(event: Event) {\n    if (this.disabled) {\n      event.preventDefault();\n    } else {\n      event.stopPropagation();\n    }\n    if (this._chipListToggleable) {\n      this.toggleSelected(true);\n    }\n  }\n\n  /** Handle custom key presses. */\n  _handleKeydown(event: KeyboardEvent): void {\n    if (this.disabled) {\n      return;\n    }\n\n    switch (event.key) {\n      case Key.Delete:\n      case Key.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 Key.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      default:\n        // No default action for other keys\n        break;\n    }\n  }\n\n  _blur(): void {\n    // When animations are enabled, Angular may end up removing the chip from the DOM a little\n    // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n    // that moves focus not the next item. To work around the issue, we defer marking the chip\n    // as not focused until the next time the zone stabilizes.\n    this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n      this._ngZone.run(() => {\n        this._hasFocus = false;\n        this._onBlur.next({ chip: this });\n      });\n    });\n  }\n\n  private _dispatchSelectionChange(isUserInput = false) {\n    this.selectionChange.emit({\n      source: this,\n      isUserInput,\n      selected: this._selected,\n    });\n  }\n\n  static ngAcceptInputType_selected: BooleanInput;\n  static ngAcceptInputType_selectable: BooleanInput;\n  static ngAcceptInputType_removable: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_tabIndex: NumberInput;\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Default options, for the chips module, that can be overridden. */\nexport interface NovoChipsDefaultOptions {\n  /** The list of key codes that will trigger a chipEnd event. */\n  separatorKeyCodes: readonly string[];\n}\n\n/** Injection token to be used to override the default options for the chips module. */\nexport const NOVO_CHIPS_DEFAULT_OPTIONS = new InjectionToken<NovoChipsDefaultOptions>('novo-chips-default-options');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Self,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { Key } from 'novo-elements/utils';\nimport { CanUpdateErrorState, CanUpdateErrorStateCtor, ErrorStateMatcher, mixinErrorState, NOVO_OPTION_PARENT_COMPONENT } from 'novo-elements/elements/common';\nimport { NovoFieldControl } from 'novo-elements/elements/field';\nimport { NovoChipElement, NovoChipEvent, NovoChipSelectionChange } from './Chip';\nimport { NovoChipTextControl } from './ChipTextControl';\n\n// Boilerplate for applying mixins to NovoChipList.\n/** @docs-private */\nclass NovoChipListBase {\n  constructor(\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    /** @docs-private */\n    public ngControl: NgControl,\n  ) {}\n}\nconst _NovoChipListMixinBase: CanUpdateErrorStateCtor & typeof NovoChipListBase = mixinErrorState(NovoChipListBase);\n\n// Increasing integer for generating unique ids for chip-list components.\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the chip list value has changed. */\nexport class NovoChipListChange {\n  constructor(\n    /** Chip list that emitted the event. */\n    public source: NovoChipList,\n    /** Value of the chip list when the event was emitted. */\n    public value: any,\n  ) {}\n}\n\n/**\n * A chip list component (named ChipList for its similarity to the List component).\n */\n@Component({\n    selector: 'novo-chip-list',\n    template: '<div class=\"novo-chip-list-wrapper\"><ng-content></ng-content></div>',\n    styleUrls: ['./ChipList.scss'],\n    exportAs: 'novoChipList',\n    host: {\n        '[attr.tabindex]': 'disabled ? null : _tabIndex',\n        '[attr.aria-describedby]': '_ariaDescribedby || null',\n        '[attr.aria-required]': 'role ? required : null',\n        '[attr.aria-disabled]': 'disabled.toString()',\n        '[attr.aria-invalid]': 'errorState',\n        '[attr.aria-multiselectable]': 'multiple',\n        '[attr.role]': 'role',\n        '[class.novo-chip-list-empty]': 'empty',\n        '[class.novo-chip-list-has-value]': '!empty',\n        '[class.novo-chip-list-stacked]': 'stacked',\n        '[class.novo-chip-list-focused]': 'focused',\n        '[class.novo-chip-list-disabled]': 'disabled',\n        '[class.novo-chip-list-invalid]': 'errorState',\n        '[class.novo-chip-list-required]': 'required',\n        '[attr.aria-orientation]': 'ariaOrientation',\n        class: 'novo-chip-list',\n        '(focus)': 'focus()',\n        '(blur)': '_blur()',\n        '(keydown)': '_keydown($event)',\n        '[id]': '_uid',\n    },\n    providers: [\n        { provide: NovoFieldControl, useExisting: NovoChipList },\n        { provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoChipList },\n    ],\n    // styleUrls: ['./ChipList.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoChipList\n  extends _NovoChipListMixinBase\n  implements NovoFieldControl<any>, ControlValueAccessor, AfterViewInit, AfterContentInit, DoCheck, OnInit, OnDestroy, CanUpdateErrorState\n{\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  readonly controlType: string = 'chip-list';\n\n  /**\n   * When a chip is destroyed, we store the index of the destroyed chip until the chips\n   * query list notifies about the update. This is necessary because we cannot determine an\n   * appropriate chip that should receive focus until the array of chips updated completely.\n   */\n  private _lastDestroyedChipIndex: number | null = null;\n\n  /** Subject that emits when the component has been destroyed. */\n  private _destroyed = new Subject<void>();\n\n  /** Subscription to focus changes in the chips. */\n  private _chipFocusSubscription: Subscription | null;\n\n  /** Subscription to blur changes in the chips. */\n  private _chipBlurSubscription: Subscription | null;\n\n  /** Subscription to selection changes in chips. */\n  private _chipSelectionSubscription: Subscription | null;\n\n  /** Subscription to remove changes in chips. */\n  private _chipRemoveSubscription: Subscription | null;\n\n  /** The chip input to add more chips */\n  protected _chipInput: NovoChipTextControl;\n\n  /** Uid of the chip list */\n  _uid: string = `novo-chip-list-${nextUniqueId++}`;\n\n  /** The aria-describedby attribute on the chip list for improved a11y. */\n  _ariaDescribedby: string;\n\n  /** Tab index for the chip list. */\n  _tabIndex = 0;\n\n  /**\n   * User defined tab index.\n   * When it is not null, use user defined tab index. Otherwise use _tabIndex\n   */\n  _userTabIndex: number | null = null;\n\n  /** The FocusKeyManager which handles focus. */\n  _keyManager: FocusKeyManager<NovoChipElement>;\n\n  /** Function when touched */\n  _onTouched = () => {};\n\n  /** Function when changed */\n  _onChange: (value: any) => void = () => {};\n\n  _selectionModel: SelectionModel<NovoChipElement>;\n\n  /** The array of selected chips inside chip list. */\n  get selected(): NovoChipElement[] | NovoChipElement {\n    return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n  }\n\n  /** The ARIA role applied to the chip list. */\n  get role(): string | null {\n    return this.empty ? null : 'listbox';\n  }\n\n  /** An object used to control when error messages are shown. */\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  /** Whether the user should be allowed to select multiple chips. */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = coerceBooleanProperty(value);\n    this._syncChipsState();\n  }\n  private _multiple: boolean = false;\n\n  /** Whether chips in this list can be toggled by user interaction */\n  @Input()\n  get chipsToggleable(): boolean {\n    return this._chipsToggleable;\n  }\n  set chipsToggleable(value: boolean) {\n    this._chipsToggleable = coerceBooleanProperty(value);\n    this._syncChipsState();\n  }\n  private _chipsToggleable: boolean = true;\n\n  /** Whether the chips should appear stacked instead of a row. */\n  @Input()\n  get stacked(): boolean {\n    return this._stacked;\n  }\n  set stacked(value: boolean) {\n    this._stacked = coerceBooleanProperty(value);\n  }\n  private _stacked: boolean = false;\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   */\n  @Input()\n  get compareWith(): (o1: any, o2: any) => boolean {\n    return this._compareWith;\n  }\n  set compareWith(fn: (o1: any, o2: any) => boolean) {\n    this._compareWith = fn;\n    if (this._selectionModel) {\n      // A different comparator means the selection could change.\n      this._initializeSelection();\n    }\n  }\n  private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    this._value = value;\n    this.writeValue(value);\n  }\n  protected _value: any;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  get id(): string {\n    return this._chipInput ? this._chipInput.id : this._uid;\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n  protected _required: boolean = false;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get placeholder(): string {\n    return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n  }\n  set placeholder(value: string) {\n    this._placeholder = value;\n    this.stateChanges.next();\n  }\n  protected _placeholder: string;\n\n  /** Whether any chips or the novoChipInput inside of this chip-list has focus. */\n  get focused(): boolean {\n    return (this._chipInput && this._chipInput.focused) || this._hasFocusedChip();\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  get empty(): boolean {\n    return (!this._chipInput || this._chipInput.empty) && (!this.chips || this.chips.length === 0);\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  get shouldLabelFloat(): boolean {\n    return !this.empty || this.focused;\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get disabled(): boolean {\n    return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this._syncChipsState();\n  }\n  protected _disabled: boolean = false;\n\n  /** Orientation of the chip list. */\n  @Input('aria-orientation') ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n  /**\n   * Whether or not this chip list is selectable. When a chip list is not selectable,\n   * the selected states for all the chips inside the chip list are always ignored.\n   */\n  @Input()\n  get selectable(): boolean {\n    return this._selectable;\n  }\n  set selectable(value: boolean) {\n    this._selectable = coerceBooleanProperty(value);\n\n    if (this.chips) {\n      this.chips.forEach((chip) => (chip._chipListSelectable = this._selectable));\n    }\n  }\n  protected _selectable: boolean = true;\n\n  @Input()\n  set tabIndex(value: number) {\n    this._userTabIndex = value;\n    this._tabIndex = value;\n  }\n\n  /** Combined stream of all of the child chips' selection change events. */\n  get chipSelectionChanges(): Observable<NovoChipSelectionChange> {\n    return merge(...this.chips.map((chip) => chip.selectionChange));\n  }\n\n  /** Combined stream of all of the child chips' focus change events. */\n  get chipFocusChanges(): Observable<NovoChipEvent> {\n    return merge(...this.chips.map((chip) => chip._onFocus));\n  }\n\n  /** Combined stream of all of the child chips' blur change events. */\n  get chipBlurChanges(): Observable<NovoChipEvent> {\n    return merge(...this.chips.map((chip) => chip._onBlur));\n  }\n\n  /** Combined stream of all of the child chips' remove change events. */\n  get chipRemoveChanges(): Observable<NovoChipEvent> {\n    return merge(...this.chips.map((chip) => chip.removed));\n  }\n\n  /** Event emitted when the selected chip list value has been changed by the user. */\n  @Output() readonly change: EventEmitter<NovoChipListChange> = new EventEmitter<NovoChipListChange>();\n\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  @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n  /** The chip components contained within this chip list. */\n  @ContentChildren(NovoChipElement, {\n    // We need to use `descendants: true`, because Ivy will no longer match\n    // indirect descendants if it's left as false.\n    descendants: true,\n  })\n  chips: QueryList<NovoChipElement>;\n\n  /** @docs-private Implemented as part of NovoFieldControl. */\n  lastKeyValue: string = null;\n  /** @docs-private Implemented as part of NovoFieldControl.*/\n  lastCaretPosition: number | null;\n\n  constructor(\n    protected _elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Optional() private _dir: Directionality,\n    @Optional() _parentForm: NgForm,\n    @Optional() _parentFormGroup: FormGroupDirective,\n    _defaultErrorStateMatcher: ErrorStateMatcher,\n    /** @docs-private */\n    @Optional() @Self() public ngControl: NgControl,\n  ) {\n    super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n    if (this.ngControl) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterContentInit() {\n    this._keyManager = new FocusKeyManager<NovoChipElement>(this.chips)\n      .withWrap()\n      .withVerticalOrientation()\n      .withHomeAndEnd()\n      .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n\n    if (this._dir) {\n      this._dir.change.pipe(takeUntil(this._destroyed)).subscribe((dir) => this._keyManager.withHorizontalOrientation(dir));\n    }\n\n    this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      this._allowFocusEscape();\n    });\n\n    // When the list changes, re-subscribe\n    this.chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n      Promise.resolve().then(() => {\n        this._syncChipsState();\n      });\n\n      this._resetChips();\n\n      if (this._value !== undefined) {\n        Promise.resolve().then(() => {\n          this._setSelectionByValue(this._value, false);\n        });\n      }\n\n      // Check to see if we need to update our tab index\n      this._updateTabIndex();\n\n      // Check to see if we have a destroyed chip and need to refocus\n      this._updateFocusForDestroyedChips();\n\n      this.stateChanges.next();\n    });\n  }\n\n  ngAfterViewInit() {\n    // Reset chips selected/deselected status\n    this._initializeSelection();\n  }\n\n  ngOnInit() {\n    this._selectionModel = new SelectionModel<NovoChipElement>(this.multiple, undefined, false);\n    this.stateChanges.next();\n  }\n\n  ngDoCheck() {\n    if (this.ngControl) {\n      // We need to re-evaluate this on every change detection cycle, because there are some\n      // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n      // that whatever logic is in here has to be super lean or we risk destroying the performance.\n      this.updateErrorState();\n\n      if (this.ngControl.disabled !== this._disabled) {\n        this.disabled = !!this.ngControl.disabled;\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._destroyed.next();\n    this._destroyed.complete();\n    this.stateChanges.complete();\n\n    this._dropSubscriptions();\n  }\n\n  /** Associates an HTML input element with this chip list. */\n  registerInput(inputElement: NovoChipTextControl): void {\n    this._chipInput = inputElement;\n\n    // We use this attribute to match the chip list to its input in test harnesses.\n    // Set the attribute directly here to avoid \"changed after checked\" errors.\n    this._elementRef.nativeElement.setAttribute('data-novo-chip-input', inputElement.id);\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  setDescribedByIds(ids: string[]) {\n    this._ariaDescribedby = ids.join(' ');\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: any): void {\n    this._value = value;\n    if (this.chips && this.chips.length > 0) {\n      this._setSelectionByValue(value, false);\n    }\n    this.stateChanges.next();\n  }\n\n  addValue(value: any): void {\n    this.value = [...this.value, value];\n    this._chipInput.clearValue();\n  }\n\n  removeValue(value: any): void {\n    if (this.value && Array.isArray(this.value)) {\n      this.value = this.value.filter((it) => !this.compareWith(it, value));\n    }\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._onChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.stateChanges.next();\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  onContainerClick(event: MouseEvent) {\n    if (!this._originatesFromChip(event)) {\n      this.focus();\n    }\n  }\n\n  /**\n   * Focuses the first non-disabled chip in this chip list, or the associated input when there\n   * are no eligible chips.\n   */\n  focus(options?: FocusOptions): void {\n    if (this.disabled) {\n      return;\n    }\n\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    } else if (this._chipInput) {\n      Promise.resolve().then(() => this._focusInput(options));\n      this.stateChanges.next();\n    } else if (this.chips.length > 0) {\n      this._keyManager.setFirstItemActive();\n      this.stateChanges.next();\n    }\n  }\n\n  /** Attempt to focus an input if we have one. */\n  _focusInput(options?: FocusOptions) {\n    if (this._chipInput) {\n      this._chipInput.focus(options);\n    }\n  }\n\n  /**\n   * Pass events to the keyboard manager. Available here for tests.\n   */\n  _keydown(event: KeyboardEvent) {\n    const target = event.target as HTMLElement;\n\n    // If they are on an empty input and hit backspace, focus the last chip\n    if (event.key === Key.Backspace && this._isInputEmpty(target)) {\n      this._keyManager.setLastItemActive();\n      event.preventDefault();\n    } else if (target && target.classList.contains('novo-chip')) {\n      this._keyManager.onKeydown(event);\n      this.stateChanges.next();\n    }\n  }\n\n  /**\n   * Check the tab index as you should not be allowed to focus an empty list.\n   */\n  protected _updateTabIndex(): void {\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  /**\n   * If the amount of chips changed, we need to update the\n   * key manager state and focus the next closest chip.\n   */\n  protected _updateFocusForDestroyedChips() {\n    // Move focus to the closest chip. If no other chips remain, focus the chip-list itself.\n    if (this._lastDestroyedChipIndex != null) {\n      if (this.chips.length) {\n        const newChipIndex = Math.min(this._lastDestroyedChipIndex, this.chips.length - 1);\n        this._keyManager.setActiveItem(newChipIndex);\n      } else {\n        this.focus();\n      }\n    }\n\n    this._lastDestroyedChipIndex = null;\n  }\n\n  /**\n   * Utility to ensure all indexes are valid.\n   *\n   * @param index The index to be checked.\n   * @returns True if the index is valid for our list of chips.\n   */\n  private _isValidIndex(index: number): boolean {\n    return index >= 0 && index < this.chips.length;\n  }\n\n  private _isInputEmpty(element: HTMLElement): boolean {\n    if (element && element.nodeName.toLowerCase() === 'input') {\n      const input = element as HTMLInputElement;\n      return !input.value;\n    }\n\n    return false;\n  }\n\n  _setSelectionByValue(value: any, isUserInput: boolean = true) {\n    this._clearSelection();\n    this.chips.forEach((chip) => chip.deselect());\n\n    if (Array.isArray(value)) {\n      value.forEach((currentValue) => this._selectValue(currentValue, isUserInput));\n      this._sortValues();\n    } else {\n      const correspondingChip = this._selectValue(value, isUserInput);\n\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        if (isUserInput) {\n          this._keyManager.setActiveItem(correspondingChip);\n        }\n      }\n    }\n  }\n\n  /**\n   * Finds and selects the chip based on its value.\n   * @returns Chip that has the corresponding value.\n   */\n  private _selectValue(value: any, isUserInput: boolean = true): NovoChipElement | undefined {\n    const correspondingChip = this.chips.find((chip) => {\n      return chip.value != null && this._compareWith(chip.value, value);\n    });\n\n    if (correspondingChip) {\n      isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n      this._selectionModel.select(correspondingChip);\n    }\n\n    return correspondingChip;\n  }\n\n  private _initializeSelection(): void {\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) {\n        this.value = this.ngControl.value;\n      }\n    });\n  }\n\n  /**\n   * Deselects every chip in the list.\n   * @param skip Chip that should not be deselected.\n   */\n  private _clearSelection(skip?: NovoChipElement): void {\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  /**\n   * Sorts the model values, ensuring that they keep the same\n   * order that they have in the panel.\n   */\n  private _sortValues(): void {\n    if (this._multiple) {\n      this._selectionModel.clear();\n\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  private _propagateChanges(fallbackValue?: any): void {\n    let valueToEmit: any = null;\n\n    if (Array.isArray(this.selected)) {\n      valueToEmit = this.selected.map((chip) => chip.value);\n    } else {\n      valueToEmit = this.selected ? this.selected.value : fallbackValue;\n    }\n    this.change.emit(new NovoChipListChange(this, 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  _blur() {\n    if (!this._hasFocusedChip()) {\n      this._keyManager.setActiveItem(-1);\n    }\n\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      } 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  _markAsTouched() {\n    this._onTouched();\n    this._changeDetectorRef.markForCheck();\n    this.stateChanges.next();\n  }\n\n  /**\n   * Removes the `tabindex` from the chip list and resets it back afterwards, allowing the\n   * user to tab out of it. This prevents the list from capturing focus and redirecting\n   * it back to the first chip, creating a focus trap, if it user tries to tab away.\n   */\n  _allowFocusEscape() {\n    if (this._tabIndex !== -1) {\n      this._tabIndex = -1;\n\n      setTimeout(() => {\n        this._tabIndex = this._userTabIndex || 0;\n        this._changeDetectorRef.markForCheck();\n      });\n    }\n  }\n\n  private _resetChips() {\n    this._dropSubscriptions();\n    this._listenToChipsFocus();\n    this._listenToChipsSelection();\n    this._listenToChipsRemoved();\n  }\n\n  private _dropSubscriptions() {\n    if (this._chipFocusSubscription) {\n      this._chipFocusSubscription.unsubscribe();\n      this._chipFocusSubscription = null;\n    }\n\n    if (this._chipBlurSubscription) {\n      this._chipBlurSubscription.unsubscribe();\n      this._chipBlurSubscription = null;\n    }\n\n    if (this._chipSelectionSubscription) {\n      this._chipSelectionSubscription.unsubscribe();\n      this._chipSelectionSubscription = null;\n    }\n\n    if (this._chipRemoveSubscription) {\n      this._chipRemoveSubscription.unsubscribe();\n      this._chipRemoveSubscription = null;\n    }\n  }\n\n  /** Listens to user-generated selection events on each chip. */\n  private _listenToChipsSelection(): void {\n    this._chipSelectionSubscription = this.chipSelectionChanges.subscribe((event) => {\n      event.source.selected ? this._selectionModel.select(event.source) : this._selectionModel.deselect(event.source);\n\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\n      if (event.isUserInput) {\n        this._propagateChanges();\n      }\n    });\n  }\n\n  /** Listens to user-generated selection events on each chip. */\n  private _listenToChipsFocus(): void {\n    this._chipFocusSubscription = this.chipFocusChanges.subscribe((event) => {\n      const chipIndex: number = this.chips.toArray().indexOf(event.chip);\n\n      if (this._isValidIndex(chipIndex)) {\n        this._keyManager.updateActiveItem(chipIndex);\n      }\n      this.stateChanges.next();\n    });\n\n    this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n      this._blur();\n      this.stateChanges.next();\n    });\n  }\n\n  private _listenToChipsRemoved(): void {\n    this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event) => {\n      const chip = event.chip;\n      const chipIndex = this.chips.toArray().indexOf(event.chip);\n      this.removeValue(chip.value);\n      // In case the chip that will be removed is currently focused, we temporarily store\n      // the index in order to be able to determine an appropriate sibling chip that will\n      // receive focus.\n      if (this._isValidIndex(chipIndex) && chip._hasFocus) {\n        this._lastDestroyedChipIndex = chipIndex;\n      }\n      this.stateChanges.next();\n    });\n  }\n\n  /** Checks whether an event comes from inside a chip element. */\n  private _originatesFromChip(event: Event): boolean {\n    let currentElement = event.target as HTMLElement | null;\n\n    while (currentElement && currentElement !== this._elementRef.nativeElement) {\n      if (currentElement.classList.contains('novo-chip')) {\n        return true;\n      }\n\n      currentElement = currentElement.parentElement;\n    }\n\n    return false;\n  }\n\n  /** Checks whether any of the chips is focused. */\n  private _hasFocusedChip() {\n    return this.chips && this.chips.some((chip) => chip._hasFocus);\n  }\n\n  /** Syncs the list's state with the individual chips. */\n  private _syncChipsState() {\n    if (this.chips) {\n      this.chips.forEach((chip) => {\n        chip._chipListDisabled = this._disabled;\n        chip._chipListMultiple = this.multiple;\n        chip._chipListSelectable = this.selectable;\n        chip._chipListToggleable = this.chipsToggleable;\n      });\n    }\n  }\n\n  static ngAcceptInputType_multiple: BooleanInput;\n  static ngAcceptInputType_required: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_selectable: BooleanInput;\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, OnChanges, OnDestroy, Optional, Output, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Key } from 'novo-elements/utils';\nimport { NovoChipsDefaultOptions, NOVO_CHIPS_DEFAULT_OPTIONS } from './ChipDefaults';\nimport { NovoChipList } from './ChipList';\nimport { NovoChipTextControl } from './ChipTextControl';\nimport { NovoFieldElement } from 'novo-elements/elements/field';\nimport { Subject } from 'rxjs';\n\n/** Represents an input event on a `novoChipInput`. */\nexport interface NovoChipInputEvent {\n  /** The native `<input>` element that the event is being fired for. */\n  input: HTMLInputElement;\n\n  /** The value of the input. */\n  value: string;\n}\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<novo-form-field>`.\n * May be placed inside or outside of an `<novo-chip-list>`.\n */\n@Directive({\n    selector: 'input[novoChipInput]',\n    exportAs: 'novoChipInput, novoChipInputFor',\n    host: {\n        class: 'novo-chip-input novo-input-element',\n        '(keydown)': '_keydown($event)',\n        '(blur)': '_blur($event)',\n        '(focus)': '_focus()',\n        '(input)': '_onInput()',\n        '[id]': 'id',\n        '[attr.disabled]': 'disabled || null',\n        '[attr.placeholder]': 'placeholder || null',\n        '[attr.aria-invalid]': 'chipList && chipList.ngControl ? chipList.ngControl.invalid : null',\n        '[attr.aria-required]': 'chipList && chipList.required || null',\n    },\n    standalone: false,\n})\nexport class NovoChipInput implements NovoChipTextControl, OnChanges, OnDestroy {\n  /** Whether the control is focused. */\n  focused: boolean = false;\n\n  /**\n   * Whether or not the chipEnd event will be emitted when the input is blurred.\n   */\n  @Input('novoChipInputAddOnBlur')\n  get addOnBlur(): boolean {\n    return this._addOnBlur;\n  }\n  set addOnBlur(value: boolean) {\n    this._addOnBlur = coerceBooleanProperty(value);\n  }\n  _addOnBlur: boolean = false;\n\n  /**\n   * The list of key codes that will trigger a chipEnd event.\n   *\n   * Defaults to `[Key.Enter]`.\n   */\n  @Input('novoChipInputSeparatorKeyCodes')\n  separatorKeyCodes: readonly string[] = this._defaultOptions.separatorKeyCodes;\n\n  /** Emitted when a chip is to be added. */\n  @Output('novoChipInputTokenEnd')\n  chipEnd: EventEmitter<NovoChipInputEvent> = new EventEmitter<NovoChipInputEvent>();\n\n  /** The input's placeholder text. */\n  @Input() placeholder: string = '';\n\n  /** Unique id for the input. */\n  @Input() id: string = `novo-chip-list-input-${nextUniqueId++}`;\n\n  /** Whether the input is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled || (this._chipList && this._chipList.disabled);\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean = false;\n\n  /** Whether the input is empty. */\n  get empty(): boolean {\n    return !this._inputElement.value;\n  }\n\n  /** Getter for accessing chipList in templates */\n  get chipList(): NovoChipList {\n    return this._chipList;\n  }\n\n  /** The native input element to which this directive is attached. */\n  protected _inputElement: HTMLInputElement;\n\n  destroy$ = new Subject<void>();\n\n  constructor(\n    protected _elementRef: ElementRef<HTMLInputElement>,\n    @Inject(NOVO_CHIPS_DEFAULT_OPTIONS) private readonly _defaultOptions: NovoChipsDefaultOptions,\n    @Optional() @Inject(NovoFieldElement) private readonly _field: NovoFieldElement,\n    @Inject(forwardRef(() => NovoChipList)) private readonly _chipList: NovoChipList,\n    @Optional() @Self() protected ngControl: NgControl,\n  ) {\n    this._inputElement = this._elementRef.nativeElement;\n    this._chipList.registerInput(this);\n  }\n\n  ngOnChanges() {\n    this._chipList.stateChanges.next();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /** Utility method to make host definition/tests more clear. */\n  _keydown(event?: KeyboardEvent) {\n    // Allow the user's focus to escape when they're tabbing forward. Note that we don't\n    // want to do this when going backwards, because focus should go back to the first chip.\n    if (event && event.key === Key.Tab && !hasModifierKey(event, 'shiftKey')) {\n      this._chipList._allowFocusEscape();\n    }\n\n    this._emitChipEnd(event);\n  }\n\n  /** Checks to see if the blur should emit the (chipEnd) event. */\n  _blur(blurEvent: FocusEvent) {\n    if (this.addOnBlur) {\n      this._emitChipEnd();\n    } else if (!this._field.blurEventIsInField(blurEvent)) {\n      this.clearValue();\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  _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  _emitChipEnd(event?: KeyboardEvent) {\n    if (!this._inputElement.value && !!event) {\n      this._chipList._keydown(event);\n    }\n    if (!event || this._isSeparatorKey(event)) {\n      this.chipEnd.emit({ input: this._inputElement, value: this._inputElement.value });\n\n      if (event) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  _onInput() {\n    // Let chip list know whenever the value changes.\n    this._chipList.stateChanges.next();\n  }\n\n  /** Focuses the input. */\n  focus(options?: FocusOptions): void {\n    this._inputElement.focus(options);\n  }\n\n  /** Clears the input. */\n  clearValue(): void {\n    this._inputElement.value = '';\n    this.ngControl?.control?.setValue('');\n  }\n\n  /** Checks whether a keycode is one of the configured separators. */\n  private _isSeparatorKey(event: KeyboardEvent) {\n    return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.key);\n  }\n\n  static readonly ngAcceptInputType_addOnBlur: BooleanInput;\n  static readonly ngAcceptInputType_disabled: BooleanInput;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'avatarType',\n    standalone: false,\n})\nexport class AvatarTypePipe implements PipeTransform {\n  transform(item: any, type?: any): string {\n    return (type || item?.value?.searchEntity || '').toLowerCase();\n  }\n}\n","// NG2\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, inject, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { ReplaySubject } from 'rxjs';\nimport { ComponentUtils, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport { NovoPickerElement } from 'novo-elements/elements/picker';\nimport { ElementSize } from 'novo-elements/elements/common';\n\n// Value accessor for the component (supports ngModel)\nconst CHIPS_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoChipsElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'chips,novo-chips',\n    providers: [CHIPS_VALUE_ACCESSOR],\n    template: `\n    <div class=\"novo-chip-container\">\n      <novo-chip\n        *ngFor=\"let item of _items | async | slice: 0:hiddenChipsLimit\"\n        [class.selected]=\"item == selected\"\n        [selectable]=\"true\"\n        [disabled]=\"disablePickerInput\"\n        [size]=\"size\"\n        (removed)=\"remove($event, item)\"\n        (selectionChange)=\"select($event, item)\"\n        (deselect)=\"deselect($event, item)\"\n      >\n        <novo-icon *ngIf=\"item | avatarType:type as avatarType\" class=\"txc-{{ avatarType }}\" novoChipAvatar>circle</novo-icon>\n        <span class=\"chip-label\">{{ item.label }}</span>\n        <novo-icon *ngIf=\"!disablePickerInput\" novoChipRemove>x</novo-icon>\n      </novo-chip>\n      <div *ngIf=\"hiddenChipsCount\" class=\"hidden-chips-toggle\" (click)=\"toggleHiddenChips()\">\n        <novo-label *ngIf=\"hiddenChipsLimit !== CHIPS_SHOWN_MAX\" color=\"positive\">+ {{ hiddenChipsCount }} {{ labels.more }} </novo-label>\n        <novo-label *ngIf=\"hiddenChipsLimit === CHIPS_SHOWN_MAX\" color=\"positive\"><novo-icon>sort-asc</novo-icon> {{labels.showLess}}</novo-label>\n      </div>\n      <div class=\"chip-input-container\" *ngIf=\"!maxlength || (maxlength && items.length < maxlength)\">\n        <novo-picker\n          #picker\n          clearValueOnSelect=\"true\"\n          [closeOnSelect]=\"closeOnSelect\"\n          [config]=\"source\"\n          [disablePickerInput]=\"disablePickerInput\"\n          [placeholder]=\"placeholder\"\n          [(ngModel)]=\"itemToAdd\"\n          (select)=\"add($event)\"\n          (keydown)=\"onKeyDown($event)\"\n          (focus)=\"onFocus($event)\"\n          (typing)=\"onTyping($event)\"\n          (blur)=\"onTouched($event)\"\n          [selected]=\"items\"\n          [width]=\"width\"\n          [minWidth]=\"minWidth\"\n          [overrideElement]=\"overrideElement || element\"\n          [allowCustomValues]=\"allowCustomValues\"\n        >\n          <ng-content/>\n        </novo-picker>\n      </div>\n    </div>\n    <div class=\"preview-container\">\n      <span #preview></span>\n    </div>\n    <i class=\"bhi-search\" [class.has-value]=\"items.length\" *ngIf=\"!disablePickerInput\"></i>\n    <label class=\"clear-all\" *ngIf=\"items.length && !disablePickerInput\" (click)=\"clearValue()\"\n      >{{ labels.clearAll }} <i class=\"bhi-times\"></i\n    ></label>\n  `,\n    styleUrls: ['./Chips.scss'],\n    host: {\n        '[class.with-value]': 'items.length > 0',\n        '[class.disabled]': 'disablePickerInput',\n    },\n    standalone: false,\n})\nexport class NovoChipsElement implements OnInit, ControlValueAccessor {\n  readonly CHIPS_SHOWN_MAX = 999;\n  @Input()\n  closeOnSelect: boolean = false;\n  @Input()\n  placeholder: string = '';\n  @Input()\n  source: any;\n  @Input()\n  maxlength: any;\n  @Input()\n  type: any;\n  @Input()\n  allowCustomValues = false;\n  @Input()\n  set disablePickerInput(v: boolean) {\n    this._disablePickerInput = coerceBooleanProperty(v);\n  }\n  get disablePickerInput() {\n    return this._disablePickerInput;\n  }\n  private _disablePickerInput: boolean = false;\n  @Input()\n  overrideElement: ElementRef;\n  @Input()\n  width: string;\n  @Input()\n  minWidth: string;\n  @Input()\n  size: ElementSize = 'md';\n\n  @Output()\n  changed: EventEmitter<any> = new EventEmitter();\n  @Output()\n  focus: EventEmitter<any> = new EventEmitter();\n  @Output()\n  blur: EventEmitter<any> = new EventEmitter();\n  @Output()\n  typing: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('preview', { read: ViewContainerRef })\n  preview: ViewContainerRef;\n\n  @ViewChild('picker', { static: false })\n  picker: NovoPickerElement;\n\n  items: any[] = [];\n  selected: any = null;\n  config: any = {};\n  model: any;\n  itemToAdd: any;\n  popup: any;\n  hiddenChipsLimit: number;\n  hiddenChipsCount: number;\n  // private data model\n  _value: any = '';\n  _items = new ReplaySubject<any[]>(1);\n  _hiddenChipsLimit: number;\n  // Placeholders for the callbacks\n  onModelChange: Function = () => {};\n  onModelTouched: Function = () => {};\n\n  changeRef = inject(ChangeDetectorRef);\n\n  constructor(public element: ElementRef, private componentUtils: ComponentUtils, public labels: NovoLabelService) {}\n\n  ngOnInit() {\n    this.hiddenChipsLimit = this.source.hiddenChipsLimit;\n    this._hiddenChipsLimit = this.hiddenChipsLimit; // copy of original chip limit\n    this.setItems();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  @Input()\n  set value(selected) {\n    this.itemToAdd = '';\n    this._value = selected;\n  }\n\n  clearValue() {\n    this.items = [];\n    this.updateHiddenChips();\n    this._items.next(this.items);\n    this.value = null;\n    this._propagateChanges();\n  }\n\n  setItems() {\n    this.items = [];\n    if (this.model && Array.isArray(this.model)) {\n      const noLabels = [];\n      for (const item of this.model) {\n        let label;\n        if (this.source && this.source.format && Helpers.validateInterpolationProps(this.source.format, item)) {\n          label = Helpers.interpolate(this.source.format, item);\n        }\n        if (this.source && label && label !== this.source.format) {\n          this.items.push({\n            value: item.value || item,\n            label,\n          });\n        } else if (this.source.getLabels && typeof this.source.getLabels === 'function') {\n          noLabels.push(item);\n        } else if (this.source.options && Array.isArray(this.source.options)) {\n          this.items.push(this.getLabelFromOptions(item));\n        } else if (this.source.categoryMap && this.source.categoryMap.size) {\n          this.items.push(item);\n        } else {\n          this.items.push({\n            value: item,\n            label: item,\n          });\n        }\n      }\n      if (noLabels.length > 0 && this.source && this.source.getLabels && typeof this.source.getLabels === 'function') {\n        this.source.getLabels(noLabels).then((result) => {\n          for (const value of result) {\n            if (value.hasOwnProperty('label')) {\n              this.items.push({\n                value,\n                label: value.label,\n              });\n            } else if (this.source.options && Array.isArray(this.source.options)) {\n              this.items.push(this.getLabelFromOptions(value));\n            } else {\n              this.items.push(value);\n            }\n          }\n          this.updateHiddenChips();\n          this._finalizeItemValue();\n          this._updateOverlay();\n        });\n      }\n    }\n    this.updateHiddenChips();\n    this._finalizeItemValue();\n  }\n\n  getLabelFromOptions(value) {\n    let id = value;\n    let optLabel = this.source.options.find((val) => val.value === value);\n    if (!optLabel && value.hasOwnProperty('id')) {\n      optLabel = this.source.options.find((val) => val.value === value.id);\n      id = value.id;\n    }\n    return {\n      value: id,\n      label: optLabel ? optLabel.label : value,\n    };\n  }\n\n  deselectAll(event?) {\n    this.selected = null;\n    this.hidePreview();\n  }\n\n  select(event?, item?) {\n    this.blur.emit(event);\n    this.deselectAll();\n    this.selected = item;\n    this.showPreview();\n  }\n\n  deselect(event?, item?) {\n    this.blur.emit(event);\n    this.deselectAll();\n  }\n\n  onTyping(event?) {\n    this.typing.emit(event);\n  }\n\n  onFocus(event?) {\n    this.deselectAll();\n    this.element.nativeElement.classList.add('selected');\n    this.focus.emit(event);\n  }\n\n  add(event) {\n    if (event && !(event instanceof Event)) {\n      this.items.push(event);\n      this.updateHiddenChips();\n      this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);\n      // Set focus on the picker\n      const input = this.element.nativeElement.querySelector('novo-picker > input');\n      if (input) {\n        input.focus();\n      }\n    }\n    this._items.next(this.items);\n    this._propagateChanges();\n  }\n\n  updateHiddenChips() {\n    this.hiddenChipsCount = Math.max(0, this.items.length - this._hiddenChipsLimit);\n    if (!this.hiddenChipsCount && this.hiddenChipsLimit === this.CHIPS_SHOWN_MAX) {\n      this.hiddenChipsLimit = this._hiddenChipsLimit; // reset hiddenChipsLimit to original #\n    }\n  }\n\n  toggleHiddenChips() {\n    this.hiddenChipsLimit = this.hiddenChipsLimit === this.CHIPS_SHOWN_MAX ? this._hiddenChipsLimit : this.CHIPS_SHOWN_MAX;\n  }\n\n  remove(event, item) {\n    this.items.splice(this.items.indexOf(item), 1);\n    this.updateHiddenChips();\n    this.deselectAll();\n    this.value = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);\n    this._items.next(this.items);\n    this._propagateChanges();\n  }\n\n  onKeyDown(event) {\n    if (event.key === Key.Backspace) {\n      if (event.target && event.target.value.length === 0 && this.items.length) {\n        if (event) {\n          event.stopPropagation();\n          event.preventDefault();\n        }\n        if (this.selected) {\n          this.remove(event, this.selected);\n        } else {\n          this.select(event, this.items[this.items.length - 1]);\n        }\n      }\n    }\n  }\n\n  // Set touched on blur\n  onTouched(e) {\n    this.element.nativeElement.classList.remove('selected');\n    this.onModelTouched();\n    this.blur.emit(e);\n  }\n\n  writeValue(model: any): void {\n    this.model = model;\n    this.setItems();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this._disablePickerInput = disabled;\n  }\n\n  private _finalizeItemValue(): void {\n    this._items.next(this.items);\n    const valueToSet = this.source && this.source.valueFormatter ? this.source.valueFormatter(this.items) : this.items.map((i) => i.value);\n    if (Helpers.isBlank(this.value) !== Helpers.isBlank(valueToSet) || JSON.stringify(this.value) !== JSON.stringify(valueToSet)) {\n      this.value = valueToSet;\n    }\n  }\n\n  /** Emits change event to set the model value. */\n  private _propagateChanges(fallbackValue?: any): void {\n    this.changed.emit({ value: this.value?.length ? this.value : '', rawValue: this.items });\n    this.onModelChange(this.value);\n    this._updateOverlay();\n  }\n\n  private _updateOverlay() {\n    if (this.picker?.container?.overlayRef) {\n      setTimeout(() => {\n        if (this.picker?.container?.overlayRef) {\n          this.picker.container.overlayRef.updatePosition();\n          if (this.picker?.popup?.instance) {\n            this.picker.popup.instance.selected = this.picker.selected;\n          }\n          this.changeRef.detectChanges();\n        }\n      });\n    }\n  }\n\n  /**\n   * @name showPreview\n   *\n   * @description This method creates an instance of the preview (called popup) and adds all the bindings to that\n   * instance. Will reuse the popup or create a new one if it does not already exist. Will only work if there is\n   * a previewTemplate given in the config.\n   */\n  showPreview() {\n    if (this.source.previewTemplate) {\n      if (!this.popup) {\n        this.popup = this.componentUtils.append(this.source.previewTemplate, this.preview);\n      }\n      this.popup.instance.match = { data: this.selected.data ?? this.selected.value };\n    }\n  }\n\n  /**\n   * @name hidePreview\n   *\n   * @description - This method deletes the preview popup from the DOM.\n   */\n  hidePreview() {\n    if (this.popup) {\n      this.popup.destroy();\n      this.popup = null;\n    }\n  }\n}\n","// NG2\nimport { Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n// APP\nimport { ComponentUtils, NovoLabelService } from 'novo-elements/services';\nimport { NovoChipElement } from './Chip';\nimport { NovoChipsElement } from './Chips';\n\n// Value accessor for the component (supports ngModel)\nconst CHIPS_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoRowChipsElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-row-chip',\n    template: `\n    <div class=\"novo-row-chips-columns\">\n      <ng-content></ng-content>\n      <i class=\"bhi-delete-o\" *ngIf=\"!disabled\" (click)=\"remove()\"></i>\n    </div>\n  `,\n    host: {\n        class: 'novo-row-chip novo-focus-indicator',\n        '[attr.tabindex]': 'disabled ? null : tabIndex',\n        role: 'option',\n        '[class.novo-row-chip-selected]': 'selected',\n        '[class.novo-row-chip-with-trailing-icon]': 'removeIcon',\n        '[class.novo-row-chip-disabled]': 'disabled',\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)': 'focus()',\n        '(blur)': '_blur()',\n    },\n    standalone: false,\n})\nexport class NovoRowChipElement extends NovoChipElement {\n  onSelect(e) {\n    return false;\n  }\n}\n\n@Component({\n    selector: 'novo-row-chips',\n    providers: [CHIPS_VALUE_ACCESSOR],\n    host: {\n        '[class.with-value]': 'items.length > 0',\n    },\n    template: `\n    <div class=\"novo-row-chips-columns\" *ngIf=\"items.length > 0\">\n      <div class=\"column-label\" [style.flexBasis.px]=\"column.width || 200\" *ngFor=\"let column of source.columns\">{{ column.label }}</div>\n    </div>\n    <div class=\"novo-row-chips-empty-message\" *ngIf=\"source.emptyReadOnlyMessage && disablePickerInput && items.length === 0\">\n      {{ source.emptyReadOnlyMessage }}\n    </div>\n    <novo-row-chip\n      *ngFor=\"let item of _items | async\"\n      [type]=\"type || item?.value?.searchEntity\"\n      [class.selected]=\"item == selected\"\n      [disabled]=\"disablePickerInput\"\n      (removed)=\"remove($event, item)\"\n      (selectionChange)=\"select($event, item)\"\n    >\n      <div\n        class=\"column-data\"\n        [class.show-overflow]=\"column.showOverflow\"\n        [class.editable]=\"column.editable\"\n        [style.flexBasis.px]=\"column.width || 200\"\n        *ngFor=\"let column of source.columns\"\n      >\n        <ng-container *ngIf=\"column.editable\">\n          <novo-checkbox *ngIf=\"column.type === 'checkbox'\" [(ngModel)]=\"item.value[column.name]\" [disabled]=\"!column.editable\"></novo-checkbox>\n          <novo-field *ngIf=\"column.type !== 'checkbox'\">\n            <input novoInput [type]=\"column.type || 'text'\" [(ngModel)]=\"item.value[column.name]\" />\n          </novo-field>\n        </ng-container>\n        <ng-container *ngIf=\"!column.editable\">\n          <span>{{ column.data(item) }}</span>\n        </ng-container>\n      </div>\n    </novo-row-chip>\n    <novo-picker\n      clearValueOnSelect=\"true\"\n      [closeOnSelect]=\"closeOnSelect\"\n      [config]=\"source\"\n      [disablePickerInput]=\"disablePickerInput\"\n      [hidden]=\"disablePickerInput\"\n      [placeholder]=\"placeholder\"\n      [(ngModel)]=\"itemToAdd\"\n      (select)=\"add($event)\"\n      (keydown)=\"onKeyDown($event)\"\n      (focus)=\"onFocus($event)\"\n      (typing)=\"onTyping($event)\"\n      (blur)=\"onTouched($event)\"\n      [selected]=\"items\"\n      *ngIf=\"!maxlength || (maxlength && items.length < maxlength)\"\n    >\n    </novo-picker>\n    <div class=\"preview-container\">\n      <span #preview></span>\n    </div>\n  `,\n    styleUrls: ['./RowChips.scss'],\n    standalone: false,\n})\nexport class NovoRowChipsElement extends NovoChipsElement {\n  @Input()\n  closeOnSelect: boolean = true;\n\n  constructor(element: ElementRef, componentUtils: ComponentUtils, labels: NovoLabelService) {\n    super(element, componentUtils, labels);\n  }\n\n  onKeyDown(event) {\n    return;\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { Key } from 'novo-elements/utils';\nimport { ErrorStateMatcher, NovoCommonModule } from 'novo-elements/elements/common';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoChipAvatar, NovoChipElement, NovoChipRemove } from './Chip';\nimport { NovoChipsDefaultOptions, NOVO_CHIPS_DEFAULT_OPTIONS } from './ChipDefaults';\nimport { NovoChipInput } from './ChipInput';\nimport { NovoChipList } from './ChipList';\nimport { NovoChipsElement } from './Chips';\nimport { NovoRowChipElement, NovoRowChipsElement } from './RowChips';\nimport { AvatarTypePipe } from './pipe/AvatarType.pipe';\n@NgModule({\n  imports: [CommonModule, FormsModule, NovoCheckboxModule, NovoPickerModule, NovoIconModule, NovoFieldModule, NovoCommonModule],\n  declarations: [\n    NovoChipElement,\n    NovoChipAvatar,\n    NovoChipRemove,\n    NovoChipInput,\n    NovoChipList,\n    NovoChipsElement,\n    NovoRowChipElement,\n    NovoRowChipsElement,\n    AvatarTypePipe,\n  ],\n  exports: [\n    NovoChipElement,\n    NovoChipAvatar,\n    NovoChipRemove,\n    NovoChipInput,\n    NovoChipList,\n    NovoChipsElement,\n    NovoRowChipElement,\n    NovoRowChipsElement,\n    AvatarTypePipe,\n  ],\n  providers: [\n    ErrorStateMatcher,\n    {\n      provide: NOVO_CHIPS_DEFAULT_OPTIONS,\n      useValue: {\n        separatorKeyCodes: [Key.Enter],\n      } as NovoChipsDefaultOptions,\n    },\n  ],\n})\nexport class NovoChipsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId","i1","CHIPS_VALUE_ACCESSOR","i2","i3","i6","i7.NovoChipElement","i7.NovoChipAvatar","i7.NovoChipRemove","i8.AvatarTypePipe","i4","i5"],"mappings":"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"}